/web/acc/admin/ldap.php |
---|
168,10 → 168,8 |
// Check LDAP service |
if ($ldap_port_636) { |
if (PHP_VERSION_ID >= 70100): |
// Set LDAP SSL options |
// Set LDAP SSL options |
ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER); |
endif; |
$ldapconn = @ldap_connect('ldaps://'.$ldap_server); |
if (!$ldapconn) { |
$ldap_srv_636 = false; |
285,7 → 283,6 |
} |
fclose($sock); |
if (PHP_VERSION_ID >= 70100): |
// Set LDAP SSL options |
if ($f_ldap_ssl) { |
if ($f_ldap_cert_required) { |
298,7 → 295,6 |
ldap_set_option(null, LDAP_OPT_X_TLS_REQUIRE_CERT, LDAP_OPT_X_TLS_NEVER); |
} |
} |
endif; |
// if ok, Test LDAP connection |
$ldapconn = @ldap_connect((($f_ldap_ssl)?'ldaps':'ldap').'://'.$f_ldap_server); |
514,7 → 510,6 |
<meta charset="UTF-8"> |
<title><?= $l_ldap_title ?></title> |
<link type="text/css" href="/css/style.css" rel="stylesheet"> |
<link type="text/css" href="/css/acc.css" rel="stylesheet"> |
<link type="text/css" href="/css/ldap.css" rel="stylesheet"> |
<script> |
function onLdapStatusChange() { |
540,10 → 535,6 |
} |
formSubmit.style.display = 'none'; |
btn_checkConf.style.display = null; |
<?php if (PHP_VERSION_ID < 70100): ?> |
// Compatibility with PHP < 7.1.0 # TODO : remove if ever Mageia 7 is released |
formSubmit.style.display = null; |
<?php endif; ?> |
} else { |
for (var i=0; i<listToDisables.length; i++) { |
document.getElementById(listToDisables[i]).style.backgroundColor = '#c0c0c0'; |
602,10 → 593,6 |
formSubmit.style.display = 'none'; |
btn_checkConf.style.display = null; |
} |
<?php if (PHP_VERSION_ID < 70100): ?> |
// Compatibility with PHP < 7.1.0 # TODO : remove if ever Mageia 7 is released |
formSubmit.style.display = null; |
<?php endif; ?> |
if (typeof data.errors !== 'undefined') { |
messages = '<span style=\"color: red\">' + data.errors.join('</span><br><span style=\"color: red\">') + '</span><br>'; |
/web/acc/admin/network.php |
---|
427,7 → 427,6 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title><?= $l_network_title ?></title> |
<link rel="stylesheet" href="/css/style.css" type="text/css"> |
<link rel="stylesheet" href="/css/acc.css" type="text/css"> |
<script src="/js/jquery.min.js"></script> |
<script src="/js/jquery.connections.js"></script> |
<script type="text/javascript"> |
/web/acc/manager/htdocs/style.css |
---|
103,7 → 103,7 |
} |
.nfseniframe |
.ACCiframe |
{ |
height: 220vh; |
width: 100%; |
120,7 → 120,7 |
border-right-width: 1px; |
} |
.tableTopNfsen |
.tableTopACC |
{ |
border-right-width: 0px; |
border-right-style: solid; |
/web/acc/manager/nfsen.php |
---|
1,14 → 1,25 |
<?php |
$Language = 'en'; |
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { |
$Langue = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); |
$Language = strtolower(substr(chop($Langue[0]), 0, 2)); |
} |
if ($Language === 'fr') { |
$l_title = "Trafic détaillé"; } |
else { |
$l_title = "Detail trafic"; } |
?> |
<!DOCTYPE html> |
<html> |
<header> |
<link rel="stylesheet" href="../manager/htdocs/style.css"> |
<link rel="stylesheet" href="htdocs/style.css"> |
</header> |
<body> |
<table border=0 cellspacing=0 cellpadding=0 class="tableTopNfsen"> |
<table border=0 cellspacing=0 cellpadding=0 class="tableTopACC"> |
<tbody class="tbodyAcc" > |
<tr> |
<th class="thBasicACC"> |
<?echo "NFSEN";?> |
<?echo $l_title;?> |
</th> |
</tr> |
</tbody> |
19,7 → 30,7 |
</tr> |
</table> |
<div > |
<iframe class="nfseniframe" src="nfsen/nfsen.php"> |
<iframe class="ACCiframe" src="nfsen/nfsen.php"> |
</iframe> |
</div> |
</body> |
/web/acc/manager/vnstat/assets/css/style.css |
---|
0,0 → 1,51 |
/* |
Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
This program 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. |
This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
/* http://stackoverflow.com/questions/17206631/why-are-bootstrap-tabs-displaying-tab-pane-divs-with-incorrect-widths-when-using */ |
/* bootstrap hack: fix content width inside hidden tabs */ |
.tab-content > .tab-pane:not(.active), |
.pill-content > .pill-pane:not(.active) { |
display: block; |
height: 0; |
overflow-y: hidden; |
} |
/* bootstrap hack end */ |
/* Sticky footer styles |
-------------------------------------------------- */ |
html { |
position: relative; |
min-height: 100%; |
} |
body { |
margin-bottom: 60px; /* Margin bottom by footer height */ |
background-color: #efefef; |
} |
.footer { |
position: absolute; |
bottom: 0; |
width: 100%; |
height: 60px; /* Set the fixed height of the footer here */ |
line-height: 60px; /* Vertically center the text there */ |
background-color: #efefef; |
} |
.nav-tabs { |
margin-bottom: 10px; |
} |
.navbar { |
margin-bottom: 25px; |
} |
/web/acc/manager/vnstat/assets/css/style.css.orig |
---|
0,0 → 1,50 |
/* |
Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
This program 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. |
This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
/* http://stackoverflow.com/questions/17206631/why-are-bootstrap-tabs-displaying-tab-pane-divs-with-incorrect-widths-when-using */ |
/* bootstrap hack: fix content width inside hidden tabs */ |
.tab-content > .tab-pane:not(.active), |
.pill-content > .pill-pane:not(.active) { |
display: block; |
height: 0; |
overflow-y: hidden; |
} |
/* bootstrap hack end */ |
/* Sticky footer styles |
-------------------------------------------------- */ |
html { |
position: relative; |
min-height: 100%; |
} |
body { |
margin-bottom: 60px; /* Margin bottom by footer height */ |
} |
.footer { |
position: absolute; |
bottom: 0; |
width: 100%; |
height: 60px; /* Set the fixed height of the footer here */ |
line-height: 60px; /* Vertically center the text there */ |
background-color: #f5f5f5; |
} |
.nav-tabs { |
margin-bottom: 10px; |
} |
.navbar { |
margin-bottom: 25px; |
} |
/web/acc/manager/vnstat/includes/config.php |
---|
0,0 → 1,38 |
<?php |
/* |
* Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
* |
* This program 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. |
* |
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
// Disable error reporting to screen |
ini_set('display_errors', 0); |
error_reporting(E_ALL); |
// Set the default system Timezone |
date_default_timezone_set('Europe/London'); |
// Path of vnstat |
$vnstat_bin_dir = '/usr/bin/vnstat'; |
// Set to true to set your own interfaces |
$use_predefined_interfaces = false; |
if ($use_predefined_interfaces == true) { |
$interface_list = ["eth0", "eth1"]; |
$interface_name['eth0'] = "Internal #1"; |
$interface_name['eth1'] = "Internal #2"; |
} |
/web/acc/manager/vnstat/includes/utilities.php |
---|
0,0 → 1,88 |
<?php |
/* |
* Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
* |
* This program 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. |
* |
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
// Get the largest value in an array |
function getLargestValue($array) { |
return $max = array_reduce($array, function ($a, $b) { |
return $a > $b['total'] ? $a : $b['total']; |
}); |
} |
function formatSize($bytes, $vnstatJsonVersion) { |
// json version 1 = convert from KiB |
// json version 2 = convert from bytes |
if ($vnstatJsonVersion == 1) { |
$bytes *= 1024; // convert from kibibytes to bytes |
} |
return formatBytes($bytes); |
} |
function formatBytes($bytes, $decimals = 2) { |
$base = log(floatval($bytes), 1024); |
$suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; |
return round(pow(1024, $base - floor($base)), $decimals) .' '. $suffixes[floor($base)]; |
} |
function formatBytesTo($bytes, $delimiter, $decimals = 2) { |
if ($bytes == 0) { |
return '0'; |
} |
$k = 1024; |
$dm = $decimals < 0 ? 0 : $decimals; |
$sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; |
$i = array_search($delimiter, $sizes); |
return number_format(($bytes / pow($k, $i)), $decimals); |
} |
function kibibytesToBytes($kibibytes, $vnstatJsonVersion) { |
if ($vnstatJsonVersion == 1) { |
return $kibibytes *= 1024; |
} else { |
return $kibibytes; |
} |
} |
function getLargestPrefix($kb) |
{ |
$units = ['TB', 'GB', 'MB', 'KB', 'B']; |
$scale = 1024 * 1024 * 1024 * 1024; |
$ui = 0; |
while ((($kb < $scale) && ($scale > 1))) { |
$ui++; |
$scale = $scale / 1024; |
} |
return $units[$ui]; |
} |
function sortingFunction($item1, $item2) { |
if ($item1['time'] == $item2['time']) { |
return 0; |
} else { |
return $item1['time'] > $item2['time'] ? -1 : 1; |
} |
}; |
?> |
/web/acc/manager/vnstat/includes/vnstat.php |
---|
0,0 → 1,227 |
<?php |
/* |
* Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
* |
* This program 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. |
* |
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
class vnStat { |
protected $executablePath; |
protected $vnstatVersion; |
protected $vnstatJsonVersion; |
protected $vnstatData; |
public function __construct ($executablePath) { |
if (isset($executablePath)) { |
$this->executablePath = $executablePath; |
// Execute a command to output a json dump of the vnstat data |
$vnstatStream = popen("$this->executablePath --json", 'r'); |
// Is the stream valid? |
if (is_resource($vnstatStream)) { |
$streamBuffer = ''; |
while (!feof($vnstatStream)) { |
$streamBuffer .= fgets($vnstatStream); |
} |
// Close the handle |
pclose($vnstatStream); |
$this->processVnstatData($streamBuffer); |
} else { |
} |
} else { |
die(); |
} |
} |
private function processVnstatData($vnstatJson) { |
$decodedJson = json_decode($vnstatJson, true); |
// Check the JSON is valid |
if (json_last_error() != JSON_ERROR_NONE) { |
throw new Exception('JSON is invalid'); |
} |
$this->vnstatData = $decodedJson; |
$this->vnstatVersion = $decodedJson['vnstatversion']; |
$this->vnstatJsonVersion = $decodedJson['jsonversion']; |
} |
public function getVnstatVersion() { |
return $this->vnstatVersion; |
} |
public function getVnstatJsonVersion() { |
return $this->vnstatJsonVersion; |
} |
public function getInterfaces() { |
// Create a placeholder array |
$vnstatInterfaces = []; |
foreach($this->vnstatData['interfaces'] as $interface) { |
array_push($vnstatInterfaces, $interface['id']); |
} |
return $vnstatInterfaces; |
} |
public function getInterfaceData($timeperiod, $type, $interface) { |
// If json version equals 1, add an 's' onto the end of each type. |
// e.g. 'top' becomes 'tops' |
if ($this->vnstatJsonVersion == 1) { |
$typeAppend = 's'; |
} |
// Blank placeholder |
$trafficData = []; |
// Get the array index for the chosen interface |
$arrayIndex = array_search($interface, array_column($this->vnstatData['interfaces'], 'id')); |
if ($timeperiod == 'top10') { |
if ($type == 'table') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['top'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
$trafficData[$i]['label'] = date('d/m/Y', strtotime($traffic['date']['month'] . "/" . $traffic['date']['day'] . "/" . $traffic['date']['year']));; |
$trafficData[$i]['rx'] = formatSize($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = formatSize($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = formatSize(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
$trafficData[$i]['totalraw'] = ($traffic['rx'] + $traffic['tx']); |
} |
} |
} |
} |
if ($timeperiod == 'hourly') { |
if ($type == 'table') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['hour'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
if ($this->vnstatJsonVersion == 1) { |
$hour = $traffic['id']; |
} else { |
$hour = $traffic['time']['hour']; |
} |
$trafficData[$i]['label'] = date("d/m/Y H:i", mktime($hour, 0, 0, $traffic['date']['month'], $traffic['date']['day'], $traffic['date']['year'])); |
$trafficData[$i]['time'] = mktime($hour, 0, 0, $traffic['date']['month'], $traffic['date']['day'], $traffic['date']['year']); |
$trafficData[$i]['rx'] = formatSize($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = formatSize($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = formatSize(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
} |
} |
usort($trafficData, sortingFunction); |
} else if ($type == 'graph') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['hour'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
if ($this->vnstatJsonVersion == 1) { |
$hour = $traffic['id']; |
} else { |
$hour = $traffic['time']['hour']; |
} |
$trafficData[$i]['label'] = sprintf("Date(%d, %d, %d, %d, %d, %d)", $traffic['date']['year'], $traffic['date']['month']-1, $traffic['date']['day'], $hour, 0, 0); |
$trafficData[$i]['rx'] = kibibytesToBytes($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = kibibytesToBytes($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = kibibytesToBytes(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
} |
} |
} |
} |
if ($timeperiod == 'daily') { |
if ($type == 'table') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['day'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
$trafficData[$i]['label'] = date('d/m/Y', mktime(0, 0, 0, $traffic['date']['month'], $traffic['date']['day'], $traffic['date']['year'])); |
$trafficData[$i]['rx'] = formatSize($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = formatSize($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = formatSize(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
} |
} |
} else if ($type == 'graph') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['day'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
$trafficData[$i]['label'] = sprintf("Date(%d, %d, %d, %d, %d, %d)", $traffic['date']['year'], $traffic['date']['month']-1, $traffic['date']['day'], 0, 0, 0); |
$trafficData[$i]['rx'] = kibibytesToBytes($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = kibibytesToBytes($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = kibibytesToBytes(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
} |
} |
} |
} |
if ($timeperiod == 'monthly') { |
if ($type == 'table') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['month'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
$trafficData[$i]['label'] = date('F Y', mktime(0, 0, 0, $traffic['date']['month'], 10, $traffic['date']['year'])); |
$trafficData[$i]['rx'] = formatSize($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = formatSize($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = formatSize(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
} |
} |
} else if ($type == 'graph') { |
foreach ($this->vnstatData['interfaces'][$arrayIndex]['traffic']['month'.$typeAppend] as $traffic) { |
if (is_array($traffic)) { |
$i++; |
$trafficData[$i]['label'] = sprintf("Date(%d, %d, %d, %d, %d, %d)", $traffic['date']['year'], $traffic['date']['month'] - 1, 10, 0, 0, 0); |
$trafficData[$i]['rx'] = kibibytesToBytes($traffic['rx'], $this->vnstatJsonVersion); |
$trafficData[$i]['tx'] = kibibytesToBytes($traffic['tx'], $this->vnstatJsonVersion); |
$trafficData[$i]['total'] = kibibytesToBytes(($traffic['rx'] + $traffic['tx']), $this->vnstatJsonVersion); |
} |
} |
} |
} |
if ($type == 'graph') { |
// Get the largest value and then prefix (B, KB, MB, GB, etc) |
$trafficLargestValue = getLargestValue($trafficData); |
$trafficLargestPrefix = getLargestPrefix($trafficLargestValue); |
foreach($trafficData as $key => $value) { |
$trafficData[$key]['rx'] = formatBytesTo($value['rx'], $trafficLargestPrefix); |
$trafficData[$key]['tx'] = formatBytesTo($value['tx'], $trafficLargestPrefix); |
$trafficData[$key]['total'] = formatBytesTo($value['total'], $trafficLargestPrefix); |
$trafficData[$key]['delimiter'] = $trafficLargestPrefix; |
} |
} |
return $trafficData; |
} |
} |
?> |
/web/acc/manager/vnstat/index.php |
---|
0,0 → 1,93 |
<?php |
/* |
* Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
* |
* This program 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. |
* |
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
// Require includes |
//require __DIR__ . '/vendor/autoload.php'; |
require __DIR__ . '/smarty/Smarty.class.php'; |
require __DIR__ . '/includes/vnstat.php'; |
require __DIR__ . '/includes/utilities.php'; |
require __DIR__ . '/includes/config.php'; |
// Initiaite vnStat class |
$vnstat = new vnStat($vnstat_bin_dir); |
// Initiate Smarty |
$smarty = new Smarty(); |
// Set the current year |
$smarty->assign('year', date("Y")); |
// Set the list of interfaces |
$interface_list = $vnstat->getInterfaces(); |
// Set the current interface |
$thisInterface = ""; |
if (isset($_GET['i'])) { |
$interfaceChosen = rawurldecode($_GET['i']); |
if (in_array($interfaceChosen, $interface_list, true)) { |
$thisInterface = $interfaceChosen; |
} else { |
$thisInterface = reset($interface_list); |
} |
} else { |
// Assume they mean the first interface |
$thisInterface = reset($interface_list); |
} |
// Add for ALCASAR |
$thisInterface = ""; |
$smarty->assign('current_interface', $thisInterface); |
// Modify for ALCASAR |
// Assign interface options |
//$smarty->assign('interface_list', $vnstat->getInterfaces()); |
$smarty->assign('interface_list', $thisInterface); |
// Populate table data |
$hourlyData = $vnstat->getInterfaceData('hourly', 'table', $thisInterface); |
$smarty->assign('hourlyTableData', $hourlyData); |
$dailyData = $vnstat->getInterfaceData('daily', 'table', $thisInterface); |
$smarty->assign('dailyTableData', $dailyData); |
$monthlyData = $vnstat->getInterfaceData('monthly', 'table', $thisInterface); |
$smarty->assign('monthlyTableData', $monthlyData); |
$top10Data = $vnstat->getInterfaceData('top10', 'table', $thisInterface); |
$smarty->assign('top10TableData', $top10Data); |
// Populate graph data |
$hourlyGraphData = $vnstat->getInterfaceData('hourly', 'graph', $thisInterface); |
$smarty->assign('hourlyGraphData', $hourlyGraphData); |
$smarty->assign('hourlyLargestPrefix', $hourlyGraphData[1]['delimiter']); |
$dailyGraphData = $vnstat->getInterfaceData('daily', 'graph', $thisInterface); |
$smarty->assign('dailyGraphData', $dailyGraphData); |
$smarty->assign('dailyLargestPrefix', $dailyGraphData[1]['delimiter']); |
$monthlyGraphData = $vnstat->getInterfaceData('monthly', 'graph', $thisInterface); |
$smarty->assign('monthlyGraphData', $monthlyGraphData); |
$smarty->assign('monthlyLargestPrefix', $monthlyGraphData[1]['delimiter']); |
// Display the page |
$smarty->display('templates/site_index.tpl'); |
?> |
/web/acc/manager/vnstat/index.php.orig |
---|
0,0 → 1,89 |
<?php |
/* |
* Copyright (C) 2019 Alexander Marston (alexander.marston@gmail.com) |
* |
* This program 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. |
* |
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. |
*/ |
// Require includes |
require __DIR__ . '/vendor/autoload.php'; |
require __DIR__ . '/includes/vnstat.php'; |
require __DIR__ . '/includes/utilities.php'; |
require __DIR__ . '/includes/config.php'; |
// Initiaite vnStat class |
$vnstat = new vnStat($vnstat_bin_dir); |
// Initiate Smarty |
$smarty = new Smarty(); |
// Set the current year |
$smarty->assign('year', date("Y")); |
// Set the list of interfaces |
$interface_list = $vnstat->getInterfaces(); |
// Set the current interface |
$thisInterface = ""; |
if (isset($_GET['i'])) { |
$interfaceChosen = rawurldecode($_GET['i']); |
if (in_array($interfaceChosen, $interface_list, true)) { |
$thisInterface = $interfaceChosen; |
} else { |
$thisInterface = reset($interface_list); |
} |
} else { |
// Assume they mean the first interface |
$thisInterface = reset($interface_list); |
} |
$smarty->assign('current_interface', $thisInterface); |
// Assign interface options |
$smarty->assign('interface_list', $vnstat->getInterfaces()); |
// Populate table data |
$hourlyData = $vnstat->getInterfaceData('hourly', 'table', $thisInterface); |
$smarty->assign('hourlyTableData', $hourlyData); |
$dailyData = $vnstat->getInterfaceData('daily', 'table', $thisInterface); |
$smarty->assign('dailyTableData', $dailyData); |
$monthlyData = $vnstat->getInterfaceData('monthly', 'table', $thisInterface); |
$smarty->assign('monthlyTableData', $monthlyData); |
$top10Data = $vnstat->getInterfaceData('top10', 'table', $thisInterface); |
$smarty->assign('top10TableData', $top10Data); |
// Populate graph data |
$hourlyGraphData = $vnstat->getInterfaceData('hourly', 'graph', $thisInterface); |
$smarty->assign('hourlyGraphData', $hourlyGraphData); |
$smarty->assign('hourlyLargestPrefix', $hourlyGraphData[1]['delimiter']); |
$dailyGraphData = $vnstat->getInterfaceData('daily', 'graph', $thisInterface); |
$smarty->assign('dailyGraphData', $dailyGraphData); |
$smarty->assign('dailyLargestPrefix', $dailyGraphData[1]['delimiter']); |
$monthlyGraphData = $vnstat->getInterfaceData('monthly', 'graph', $thisInterface); |
$smarty->assign('monthlyGraphData', $monthlyGraphData); |
$smarty->assign('monthlyLargestPrefix', $monthlyGraphData[1]['delimiter']); |
// Display the page |
$smarty->display('templates/site_index.tpl'); |
?> |
/web/acc/manager/vnstat/smarty/Autoloader.php |
---|
0,0 → 1,110 |
<?php |
/** |
* Smarty Autoloader |
* |
* @package Smarty |
*/ |
/** |
* Smarty Autoloader |
* |
* @package Smarty |
* @author Uwe Tews |
* Usage: |
* require_once '...path/Autoloader.php'; |
* Smarty_Autoloader::register(); |
* or |
* include '...path/bootstrap.php'; |
* |
* $smarty = new Smarty(); |
*/ |
class Smarty_Autoloader |
{ |
/** |
* Filepath to Smarty root |
* |
* @var string |
*/ |
public static $SMARTY_DIR = null; |
/** |
* Filepath to Smarty internal plugins |
* |
* @var string |
*/ |
public static $SMARTY_SYSPLUGINS_DIR = null; |
/** |
* Array with Smarty core classes and their filename |
* |
* @var array |
*/ |
public static $rootClasses = array('smarty' => 'Smarty.class.php', 'smartybc' => 'SmartyBC.class.php',); |
/** |
* Registers Smarty_Autoloader backward compatible to older installations. |
* |
* @param bool $prepend Whether to prepend the autoloader or not. |
*/ |
public static function registerBC($prepend = false) |
{ |
/** |
* register the class autoloader |
*/ |
if (!defined('SMARTY_SPL_AUTOLOAD')) { |
define('SMARTY_SPL_AUTOLOAD', 0); |
} |
if (SMARTY_SPL_AUTOLOAD |
&& set_include_path(get_include_path() . PATH_SEPARATOR . SMARTY_SYSPLUGINS_DIR) !== false |
) { |
$registeredAutoLoadFunctions = spl_autoload_functions(); |
if (!isset($registeredAutoLoadFunctions[ 'spl_autoload' ])) { |
spl_autoload_register(); |
} |
} else { |
self::register($prepend); |
} |
} |
/** |
* Registers Smarty_Autoloader as an SPL autoloader. |
* |
* @param bool $prepend Whether to prepend the autoloader or not. |
*/ |
public static function register($prepend = false) |
{ |
self::$SMARTY_DIR = defined('SMARTY_DIR') ? SMARTY_DIR : dirname(__FILE__) . DIRECTORY_SEPARATOR; |
self::$SMARTY_SYSPLUGINS_DIR = defined('SMARTY_SYSPLUGINS_DIR') ? SMARTY_SYSPLUGINS_DIR : |
self::$SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR; |
if (version_compare(PHP_VERSION, '5.3.0', '>=')) { |
spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend); |
} else { |
spl_autoload_register(array(__CLASS__, 'autoload')); |
} |
} |
/** |
* Handles auto loading of classes. |
* |
* @param string $class A class name. |
*/ |
public static function autoload($class) |
{ |
if ($class[ 0 ] !== 'S' || strpos($class, 'Smarty') !== 0) { |
return; |
} |
$_class = strtolower($class); |
if (isset(self::$rootClasses[ $_class ])) { |
$file = self::$SMARTY_DIR . self::$rootClasses[ $_class ]; |
if (is_file($file)) { |
include $file; |
} |
} else { |
$file = self::$SMARTY_SYSPLUGINS_DIR . $_class . '.php'; |
if (is_file($file)) { |
include $file; |
} |
} |
return; |
} |
} |
/web/acc/manager/vnstat/smarty/LICENSE |
---|
0,0 → 1,179 |
Smarty: the PHP compiling template engine |
This library is free software; you can redistribute it and/or |
modify it under the terms of the GNU Lesser General Public |
License as published by the Free Software Foundation; either |
version 2.1 of the License, or (at your option) any later version. |
This library 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 Lesser General Public License below for more details. |
GNU LESSER GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
This version of the GNU Lesser General Public License incorporates |
the terms and conditions of version 3 of the GNU General Public |
License, supplemented by the additional permissions listed below. |
0. Additional Definitions. |
As used herein, "this License" refers to version 3 of the GNU Lesser |
General Public License, and the "GNU GPL" refers to version 3 of the GNU |
General Public License. |
"The Library" refers to a covered work governed by this License, |
other than an Application or a Combined Work as defined below. |
An "Application" is any work that makes use of an interface provided |
by the Library, but which is not otherwise based on the Library. |
Defining a subclass of a class defined by the Library is deemed a mode |
of using an interface provided by the Library. |
A "Combined Work" is a work produced by combining or linking an |
Application with the Library. The particular version of the Library |
with which the Combined Work was made is also called the "Linked |
Version". |
The "Minimal Corresponding Source" for a Combined Work means the |
Corresponding Source for the Combined Work, excluding any source code |
for portions of the Combined Work that, considered in isolation, are |
based on the Application, and not on the Linked Version. |
The "Corresponding Application Code" for a Combined Work means the |
object code and/or source code for the Application, including any data |
and utility programs needed for reproducing the Combined Work from the |
Application, but excluding the System Libraries of the Combined Work. |
1. Exception to Section 3 of the GNU GPL. |
You may convey a covered work under sections 3 and 4 of this License |
without being bound by section 3 of the GNU GPL. |
2. Conveying Modified Versions. |
If you modify a copy of the Library, and, in your modifications, a |
facility refers to a function or data to be supplied by an Application |
that uses the facility (other than as an argument passed when the |
facility is invoked), then you may convey a copy of the modified |
version: |
a) under this License, provided that you make a good faith effort to |
ensure that, in the event an Application does not supply the |
function or data, the facility still operates, and performs |
whatever part of its purpose remains meaningful, or |
b) under the GNU GPL, with none of the additional permissions of |
this License applicable to that copy. |
3. Object Code Incorporating Material from Library Header Files. |
The object code form of an Application may incorporate material from |
a header file that is part of the Library. You may convey such object |
code under terms of your choice, provided that, if the incorporated |
material is not limited to numerical parameters, data structure |
layouts and accessors, or small macros, inline functions and templates |
(ten or fewer lines in length), you do both of the following: |
a) Give prominent notice with each copy of the object code that the |
Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the object code with a copy of the GNU GPL and this license |
document. |
4. Combined Works. |
You may convey a Combined Work under terms of your choice that, |
taken together, effectively do not restrict modification of the |
portions of the Library contained in the Combined Work and reverse |
engineering for debugging such modifications, if you also do each of |
the following: |
a) Give prominent notice with each copy of the Combined Work that |
the Library is used in it and that the Library and its use are |
covered by this License. |
b) Accompany the Combined Work with a copy of the GNU GPL and this license |
document. |
c) For a Combined Work that displays copyright notices during |
execution, include the copyright notice for the Library among |
these notices, as well as a reference directing the user to the |
copies of the GNU GPL and this license document. |
d) Do one of the following: |
0) Convey the Minimal Corresponding Source under the terms of this |
License, and the Corresponding Application Code in a form |
suitable for, and under terms that permit, the user to |
recombine or relink the Application with a modified version of |
the Linked Version to produce a modified Combined Work, in the |
manner specified by section 6 of the GNU GPL for conveying |
Corresponding Source. |
1) Use a suitable shared library mechanism for linking with the |
Library. A suitable mechanism is one that (a) uses at run time |
a copy of the Library already present on the user's computer |
system, and (b) will operate properly with a modified version |
of the Library that is interface-compatible with the Linked |
Version. |
e) Provide Installation Information, but only if you would otherwise |
be required to provide such information under section 6 of the |
GNU GPL, and only to the extent that such information is |
necessary to install and execute a modified version of the |
Combined Work produced by recombining or relinking the |
Application with a modified version of the Linked Version. (If |
you use option 4d0, the Installation Information must accompany |
the Minimal Corresponding Source and Corresponding Application |
Code. If you use option 4d1, you must provide the Installation |
Information in the manner specified by section 6 of the GNU GPL |
for conveying Corresponding Source.) |
5. Combined Libraries. |
You may place library facilities that are a work based on the |
Library side by side in a single library together with other library |
facilities that are not Applications and are not covered by this |
License, and convey such a combined library under terms of your |
choice, if you do both of the following: |
a) Accompany the combined library with a copy of the same work based |
on the Library, uncombined with any other library facilities, |
conveyed under the terms of this License. |
b) Give prominent notice with the combined library that part of it |
is a work based on the Library, and explaining where to find the |
accompanying uncombined form of the same work. |
6. Revised Versions of the GNU Lesser General Public License. |
The Free Software Foundation may publish revised and/or new versions |
of the GNU Lesser General Public License from time to time. Such new |
versions will be similar in spirit to the present version, but may |
differ in detail to address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Library as you received it specifies that a certain numbered version |
of the GNU Lesser General Public License "or any later version" |
applies to it, you have the option of following the terms and |
conditions either of that published version or of any later version |
published by the Free Software Foundation. If the Library as you |
received it does not specify a version number of the GNU Lesser |
General Public License, you may choose any version of the GNU Lesser |
General Public License ever published by the Free Software Foundation. |
If the Library as you received it specifies that a proxy can decide |
whether future versions of the GNU Lesser General Public License shall |
apply, that proxy's public statement of acceptance of any version is |
permanent authorization for you to choose that version for the |
Library. |
/web/acc/manager/vnstat/smarty/README.md |
---|
0,0 → 1,78 |
# Smarty 3 template engine |
[smarty.net](https://www.smarty.net/) |
[![Build Status](https://travis-ci.org/smarty-php/smarty.svg?branch=master)](https://travis-ci.org/smarty-php/smarty) |
## Documentation |
For documentation see |
[www.smarty.net/docs/en/](https://www.smarty.net/docs/en/) |
## Requirements |
Smarty can be run with PHP 5.2 to PHP 7.4. |
## Distribution repository |
> Smarty 3.1.28 introduces run time template inheritance |
> Read the NEW_FEATURES and INHERITANCE_RELEASE_NOTES file for recent extensions to Smarty 3.1 functionality |
Smarty versions 3.1.11 or later are now on github and can be installed with Composer. |
The "smarty/smarty" package will start at libs/.... subfolder. |
To get the latest stable version of Smarty 3.1 use: |
```json |
"require": { |
"smarty/smarty": "~3.1" |
} |
``` |
in your composer.json file. |
To get the trunk version use: |
```json |
"require": { |
"smarty/smarty": "~3.1@dev" |
} |
``` |
For a specific version use something like: |
```json |
"require": { |
"smarty/smarty": "3.1.19" |
} |
``` |
PHPUnit test can be installed by corresponding composer entries like: |
```json |
"require": { |
"smarty/smarty-phpunit": "3.1.19" |
} |
``` |
Similar applies for the lexer/parser generator. |
```json |
"require": { |
"smarty/smarty-lexer": "3.1.19" |
} |
``` |
Or you could use: |
```json |
"require": { |
"smarty/smarty-dev": "3.1.19" |
} |
``` |
Which is a wrapper to install all 3 packages. |
Composer can also be used for Smarty2 versions 2.6.24 to 2.6.30. |
/web/acc/manager/vnstat/smarty/Smarty.class.php |
---|
0,0 → 1,1425 |
<?php |
/** |
* Project: Smarty: the PHP compiling template engine |
* File: Smarty.class.php |
* |
* This library is free software; you can redistribute it and/or |
* modify it under the terms of the GNU Lesser General Public |
* License as published by the Free Software Foundation; either |
* version 2.1 of the License, or (at your option) any later version. |
* |
* This library 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 |
* Lesser General Public License for more details. |
* |
* You should have received a copy of the GNU Lesser General Public |
* License along with this library; if not, write to the Free Software |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* For questions, help, comments, discussion, etc., please join the |
* Smarty mailing list. Send a blank e-mail to |
* smarty-discussion-subscribe@googlegroups.com |
* |
* @link http://www.smarty.net/ |
* @copyright 2018 New Digital Group, Inc. |
* @copyright 2018 Uwe Tews |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Uwe Tews <uwe dot tews at gmail dot com> |
* @author Rodney Rehm |
* @package Smarty |
* @version 3.1.34-dev |
*/ |
/** |
* set SMARTY_DIR to absolute path to Smarty library files. |
* Sets SMARTY_DIR only if user application has not already defined it. |
*/ |
if (!defined('SMARTY_DIR')) { |
/** |
* |
*/ |
define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); |
} |
/** |
* set SMARTY_SYSPLUGINS_DIR to absolute path to Smarty internal plugins. |
* Sets SMARTY_SYSPLUGINS_DIR only if user application has not already defined it. |
*/ |
if (!defined('SMARTY_SYSPLUGINS_DIR')) { |
/** |
* |
*/ |
define('SMARTY_SYSPLUGINS_DIR', SMARTY_DIR . 'sysplugins' . DIRECTORY_SEPARATOR); |
} |
if (!defined('SMARTY_PLUGINS_DIR')) { |
/** |
* |
*/ |
define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DIRECTORY_SEPARATOR); |
} |
if (!defined('SMARTY_MBSTRING')) { |
/** |
* |
*/ |
define('SMARTY_MBSTRING', function_exists('mb_get_info')); |
} |
if (!defined('SMARTY_RESOURCE_CHAR_SET')) { |
// UTF-8 can only be done properly when mbstring is available! |
/** |
* @deprecated in favor of Smarty::$_CHARSET |
*/ |
define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1'); |
} |
if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) { |
/** |
* @deprecated in favor of Smarty::$_DATE_FORMAT |
*/ |
define('SMARTY_RESOURCE_DATE_FORMAT', '%b %e, %Y'); |
} |
/** |
* Load Smarty_Autoloader |
*/ |
if (!class_exists('Smarty_Autoloader')) { |
include dirname(__FILE__) . '/bootstrap.php'; |
} |
/** |
* Load always needed external class files |
*/ |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_extension_handler.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_variable.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_source.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_template_resource_base.php'; |
require_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php'; |
/** |
* This is the main Smarty class |
* |
* @package Smarty |
* |
* The following methods will be dynamically loaded by the extension handler when they are called. |
* They are located in a corresponding Smarty_Internal_Method_xxxx class |
* |
* @method int clearAllCache(int $exp_time = null, string $type = null) |
* @method int clearCache(string $template_name, string $cache_id = null, string $compile_id = null, int $exp_time = null, string $type = null) |
* @method int compileAllTemplates(string $extension = '.tpl', bool $force_compile = false, int $time_limit = 0, $max_errors = null) |
* @method int compileAllConfig(string $extension = '.conf', bool $force_compile = false, int $time_limit = 0, $max_errors = null) |
* @method int clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null) |
*/ |
class Smarty extends Smarty_Internal_TemplateBase |
{ |
/** |
* smarty version |
*/ |
const SMARTY_VERSION = '3.1.34-dev-7'; |
/** |
* define variable scopes |
*/ |
const SCOPE_LOCAL = 1; |
const SCOPE_PARENT = 2; |
const SCOPE_TPL_ROOT = 4; |
const SCOPE_ROOT = 8; |
const SCOPE_SMARTY = 16; |
const SCOPE_GLOBAL = 32; |
/** |
* define caching modes |
*/ |
const CACHING_OFF = 0; |
const CACHING_LIFETIME_CURRENT = 1; |
const CACHING_LIFETIME_SAVED = 2; |
/** |
* define constant for clearing cache files be saved expiration dates |
*/ |
const CLEAR_EXPIRED = -1; |
/** |
* define compile check modes |
*/ |
const COMPILECHECK_OFF = 0; |
const COMPILECHECK_ON = 1; |
const COMPILECHECK_CACHEMISS = 2; |
/** |
* define debug modes |
*/ |
const DEBUG_OFF = 0; |
const DEBUG_ON = 1; |
const DEBUG_INDIVIDUAL = 2; |
/** |
* modes for handling of "<?php ... ?>" tags in templates. |
*/ |
const PHP_PASSTHRU = 0; //-> print tags as plain text |
const PHP_QUOTE = 1; //-> escape tags as entities |
const PHP_REMOVE = 2; //-> escape tags as entities |
const PHP_ALLOW = 3; //-> escape tags as entities |
/** |
* filter types |
*/ |
const FILTER_POST = 'post'; |
const FILTER_PRE = 'pre'; |
const FILTER_OUTPUT = 'output'; |
const FILTER_VARIABLE = 'variable'; |
/** |
* plugin types |
*/ |
const PLUGIN_FUNCTION = 'function'; |
const PLUGIN_BLOCK = 'block'; |
const PLUGIN_COMPILER = 'compiler'; |
const PLUGIN_MODIFIER = 'modifier'; |
const PLUGIN_MODIFIERCOMPILER = 'modifiercompiler'; |
/** |
* assigned global tpl vars |
*/ |
public static $global_tpl_vars = array(); |
/** |
* Flag denoting if Multibyte String functions are available |
*/ |
public static $_MBSTRING = SMARTY_MBSTRING; |
/** |
* The character set to adhere to (e.g. "UTF-8") |
*/ |
public static $_CHARSET = SMARTY_RESOURCE_CHAR_SET; |
/** |
* The date format to be used internally |
* (accepts date() and strftime()) |
*/ |
public static $_DATE_FORMAT = SMARTY_RESOURCE_DATE_FORMAT; |
/** |
* Flag denoting if PCRE should run in UTF-8 mode |
*/ |
public static $_UTF8_MODIFIER = 'u'; |
/** |
* Flag denoting if operating system is windows |
*/ |
public static $_IS_WINDOWS = false; |
/** |
* auto literal on delimiters with whitespace |
* |
* @var boolean |
*/ |
public $auto_literal = true; |
/** |
* display error on not assigned variables |
* |
* @var boolean |
*/ |
public $error_unassigned = false; |
/** |
* look up relative file path in include_path |
* |
* @var boolean |
*/ |
public $use_include_path = false; |
/** |
* flag if template_dir is normalized |
* |
* @var bool |
*/ |
public $_templateDirNormalized = false; |
/** |
* joined template directory string used in cache keys |
* |
* @var string |
*/ |
public $_joined_template_dir = null; |
/** |
* flag if config_dir is normalized |
* |
* @var bool |
*/ |
public $_configDirNormalized = false; |
/** |
* joined config directory string used in cache keys |
* |
* @var string |
*/ |
public $_joined_config_dir = null; |
/** |
* default template handler |
* |
* @var callable |
*/ |
public $default_template_handler_func = null; |
/** |
* default config handler |
* |
* @var callable |
*/ |
public $default_config_handler_func = null; |
/** |
* default plugin handler |
* |
* @var callable |
*/ |
public $default_plugin_handler_func = null; |
/** |
* flag if template_dir is normalized |
* |
* @var bool |
*/ |
public $_compileDirNormalized = false; |
/** |
* flag if plugins_dir is normalized |
* |
* @var bool |
*/ |
public $_pluginsDirNormalized = false; |
/** |
* flag if template_dir is normalized |
* |
* @var bool |
*/ |
public $_cacheDirNormalized = false; |
/** |
* force template compiling? |
* |
* @var boolean |
*/ |
public $force_compile = false; |
/** |
* use sub dirs for compiled/cached files? |
* |
* @var boolean |
*/ |
public $use_sub_dirs = false; |
/** |
* allow ambiguous resources (that are made unique by the resource handler) |
* |
* @var boolean |
*/ |
public $allow_ambiguous_resources = false; |
/** |
* merge compiled includes |
* |
* @var boolean |
*/ |
public $merge_compiled_includes = false; |
/* |
* flag for behaviour when extends: resource and {extends} tag are used simultaneous |
* if false disable execution of {extends} in templates called by extends resource. |
* (behaviour as versions < 3.1.28) |
* |
* @var boolean |
*/ |
public $extends_recursion = true; |
/** |
* force cache file creation |
* |
* @var boolean |
*/ |
public $force_cache = false; |
/** |
* template left-delimiter |
* |
* @var string |
*/ |
public $left_delimiter = "{"; |
/** |
* template right-delimiter |
* |
* @var string |
*/ |
public $right_delimiter = "}"; |
/** |
* array of strings which shall be treated as literal by compiler |
* |
* @var array string |
*/ |
public $literals = array(); |
/** |
* class name |
* This should be instance of Smarty_Security. |
* |
* @var string |
* @see Smarty_Security |
*/ |
public $security_class = 'Smarty_Security'; |
/** |
* implementation of security class |
* |
* @var Smarty_Security |
*/ |
public $security_policy = null; |
/** |
* controls handling of PHP-blocks |
* |
* @var integer |
*/ |
public $php_handling = self::PHP_PASSTHRU; |
/** |
* controls if the php template file resource is allowed |
* |
* @var bool |
*/ |
public $allow_php_templates = false; |
/** |
* debug mode |
* Setting this to true enables the debug-console. |
* |
* @var boolean |
*/ |
public $debugging = false; |
/** |
* This determines if debugging is enable-able from the browser. |
* <ul> |
* <li>NONE => no debugging control allowed</li> |
* <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li> |
* </ul> |
* |
* @var string |
*/ |
public $debugging_ctrl = 'NONE'; |
/** |
* Name of debugging URL-param. |
* Only used when $debugging_ctrl is set to 'URL'. |
* The name of the URL-parameter that activates debugging. |
* |
* @var string |
*/ |
public $smarty_debug_id = 'SMARTY_DEBUG'; |
/** |
* Path of debug template. |
* |
* @var string |
*/ |
public $debug_tpl = null; |
/** |
* When set, smarty uses this value as error_reporting-level. |
* |
* @var int |
*/ |
public $error_reporting = null; |
/** |
* Controls whether variables with the same name overwrite each other. |
* |
* @var boolean |
*/ |
public $config_overwrite = true; |
/** |
* Controls whether config values of on/true/yes and off/false/no get converted to boolean. |
* |
* @var boolean |
*/ |
public $config_booleanize = true; |
/** |
* Controls whether hidden config sections/vars are read from the file. |
* |
* @var boolean |
*/ |
public $config_read_hidden = false; |
/** |
* locking concurrent compiles |
* |
* @var boolean |
*/ |
public $compile_locking = true; |
/** |
* Controls whether cache resources should use locking mechanism |
* |
* @var boolean |
*/ |
public $cache_locking = false; |
/** |
* seconds to wait for acquiring a lock before ignoring the write lock |
* |
* @var float |
*/ |
public $locking_timeout = 10; |
/** |
* resource type used if none given |
* Must be an valid key of $registered_resources. |
* |
* @var string |
*/ |
public $default_resource_type = 'file'; |
/** |
* caching type |
* Must be an element of $cache_resource_types. |
* |
* @var string |
*/ |
public $caching_type = 'file'; |
/** |
* config type |
* |
* @var string |
*/ |
public $default_config_type = 'file'; |
/** |
* check If-Modified-Since headers |
* |
* @var boolean |
*/ |
public $cache_modified_check = false; |
/** |
* registered plugins |
* |
* @var array |
*/ |
public $registered_plugins = array(); |
/** |
* registered objects |
* |
* @var array |
*/ |
public $registered_objects = array(); |
/** |
* registered classes |
* |
* @var array |
*/ |
public $registered_classes = array(); |
/** |
* registered filters |
* |
* @var array |
*/ |
public $registered_filters = array(); |
/** |
* registered resources |
* |
* @var array |
*/ |
public $registered_resources = array(); |
/** |
* registered cache resources |
* |
* @var array |
*/ |
public $registered_cache_resources = array(); |
/** |
* autoload filter |
* |
* @var array |
*/ |
public $autoload_filters = array(); |
/** |
* default modifier |
* |
* @var array |
*/ |
public $default_modifiers = array(); |
/** |
* autoescape variable output |
* |
* @var boolean |
*/ |
public $escape_html = false; |
/** |
* start time for execution time calculation |
* |
* @var int |
*/ |
public $start_time = 0; |
/** |
* required by the compiler for BC |
* |
* @var string |
*/ |
public $_current_file = null; |
/** |
* internal flag to enable parser debugging |
* |
* @var bool |
*/ |
public $_parserdebug = false; |
/** |
* This object type (Smarty = 1, template = 2, data = 4) |
* |
* @var int |
*/ |
public $_objType = 1; |
/** |
* Debug object |
* |
* @var Smarty_Internal_Debug |
*/ |
public $_debug = null; |
/** |
* template directory |
* |
* @var array |
*/ |
protected $template_dir = array('./templates/'); |
/** |
* flags for normalized template directory entries |
* |
* @var array |
*/ |
protected $_processedTemplateDir = array(); |
/** |
* config directory |
* |
* @var array |
*/ |
protected $config_dir = array('./configs/'); |
/** |
* flags for normalized template directory entries |
* |
* @var array |
*/ |
protected $_processedConfigDir = array(); |
/** |
* compile directory |
* |
* @var string |
*/ |
protected $compile_dir = './templates_c/'; |
/** |
* plugins directory |
* |
* @var array |
*/ |
protected $plugins_dir = array(); |
/** |
* cache directory |
* |
* @var string |
*/ |
protected $cache_dir = './cache/'; |
/** |
* removed properties |
* |
* @var string[] |
*/ |
protected $obsoleteProperties = array( |
'resource_caching', 'template_resource_caching', 'direct_access_security', |
'_dir_perms', '_file_perms', 'plugin_search_order', |
'inheritance_merge_compiled_includes', 'resource_cache_mode', |
); |
/** |
* List of private properties which will call getter/setter on a direct access |
* |
* @var string[] |
*/ |
protected $accessMap = array( |
'template_dir' => 'TemplateDir', 'config_dir' => 'ConfigDir', |
'plugins_dir' => 'PluginsDir', 'compile_dir' => 'CompileDir', |
'cache_dir' => 'CacheDir', |
); |
/** |
* Initialize new Smarty object |
*/ |
public function __construct() |
{ |
$this->_clearTemplateCache(); |
parent::__construct(); |
if (is_callable('mb_internal_encoding')) { |
mb_internal_encoding(Smarty::$_CHARSET); |
} |
$this->start_time = microtime(true); |
if (isset($_SERVER[ 'SCRIPT_NAME' ])) { |
Smarty::$global_tpl_vars[ 'SCRIPT_NAME' ] = new Smarty_Variable($_SERVER[ 'SCRIPT_NAME' ]); |
} |
// Check if we're running on windows |
Smarty::$_IS_WINDOWS = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; |
// let PCRE (preg_*) treat strings as ISO-8859-1 if we're not dealing with UTF-8 |
if (Smarty::$_CHARSET !== 'UTF-8') { |
Smarty::$_UTF8_MODIFIER = ''; |
} |
} |
/** |
* Enable error handler to mute expected messages |
* |
* @return boolean |
* @deprecated |
*/ |
public static function muteExpectedErrors() |
{ |
return Smarty_Internal_ErrorHandler::muteExpectedErrors(); |
} |
/** |
* Disable error handler muting expected messages |
* |
* @deprecated |
*/ |
public static function unmuteExpectedErrors() |
{ |
restore_error_handler(); |
} |
/** |
* Check if a template resource exists |
* |
* @param string $resource_name template name |
* |
* @return bool status |
* @throws \SmartyException |
*/ |
public function templateExists($resource_name) |
{ |
// create source object |
$source = Smarty_Template_Source::load(null, $this, $resource_name); |
return $source->exists; |
} |
/** |
* Loads security class and enables security |
* |
* @param string|Smarty_Security $security_class if a string is used, it must be class-name |
* |
* @return Smarty current Smarty instance for chaining |
* @throws \SmartyException |
*/ |
public function enableSecurity($security_class = null) |
{ |
Smarty_Security::enableSecurity($this, $security_class); |
return $this; |
} |
/** |
* Disable security |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function disableSecurity() |
{ |
$this->security_policy = null; |
return $this; |
} |
/** |
* Add template directory(s) |
* |
* @param string|array $template_dir directory(s) of template sources |
* @param string $key of the array element to assign the template dir to |
* @param bool $isConfig true for config_dir |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function addTemplateDir($template_dir, $key = null, $isConfig = false) |
{ |
if ($isConfig) { |
$processed = &$this->_processedConfigDir; |
$dir = &$this->config_dir; |
$this->_configDirNormalized = false; |
} else { |
$processed = &$this->_processedTemplateDir; |
$dir = &$this->template_dir; |
$this->_templateDirNormalized = false; |
} |
if (is_array($template_dir)) { |
foreach ($template_dir as $k => $v) { |
if (is_int($k)) { |
// indexes are not merged but appended |
$dir[] = $v; |
} else { |
// string indexes are overridden |
$dir[ $k ] = $v; |
unset($processed[ $key ]); |
} |
} |
} else { |
if ($key !== null) { |
// override directory at specified index |
$dir[ $key ] = $template_dir; |
unset($processed[ $key ]); |
} else { |
// append new directory |
$dir[] = $template_dir; |
} |
} |
return $this; |
} |
/** |
* Get template directories |
* |
* @param mixed $index index of directory to get, null to get all |
* @param bool $isConfig true for config_dir |
* |
* @return array list of template directories, or directory of $index |
*/ |
public function getTemplateDir($index = null, $isConfig = false) |
{ |
if ($isConfig) { |
$dir = &$this->config_dir; |
} else { |
$dir = &$this->template_dir; |
} |
if ($isConfig ? !$this->_configDirNormalized : !$this->_templateDirNormalized) { |
$this->_normalizeTemplateConfig($isConfig); |
} |
if ($index !== null) { |
return isset($dir[ $index ]) ? $dir[ $index ] : null; |
} |
return $dir; |
} |
/** |
* Set template directory |
* |
* @param string|array $template_dir directory(s) of template sources |
* @param bool $isConfig true for config_dir |
* |
* @return \Smarty current Smarty instance for chaining |
*/ |
public function setTemplateDir($template_dir, $isConfig = false) |
{ |
if ($isConfig) { |
$this->config_dir = array(); |
$this->_processedConfigDir = array(); |
} else { |
$this->template_dir = array(); |
$this->_processedTemplateDir = array(); |
} |
$this->addTemplateDir($template_dir, null, $isConfig); |
return $this; |
} |
/** |
* Add config directory(s) |
* |
* @param string|array $config_dir directory(s) of config sources |
* @param mixed $key key of the array element to assign the config dir to |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function addConfigDir($config_dir, $key = null) |
{ |
return $this->addTemplateDir($config_dir, $key, true); |
} |
/** |
* Get config directory |
* |
* @param mixed $index index of directory to get, null to get all |
* |
* @return array configuration directory |
*/ |
public function getConfigDir($index = null) |
{ |
return $this->getTemplateDir($index, true); |
} |
/** |
* Set config directory |
* |
* @param $config_dir |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function setConfigDir($config_dir) |
{ |
return $this->setTemplateDir($config_dir, true); |
} |
/** |
* Adds directory of plugin files |
* |
* @param null|array|string $plugins_dir |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function addPluginsDir($plugins_dir) |
{ |
if (empty($this->plugins_dir)) { |
$this->plugins_dir[] = SMARTY_PLUGINS_DIR; |
} |
$this->plugins_dir = array_merge($this->plugins_dir, (array)$plugins_dir); |
$this->_pluginsDirNormalized = false; |
return $this; |
} |
/** |
* Get plugin directories |
* |
* @return array list of plugin directories |
*/ |
public function getPluginsDir() |
{ |
if (empty($this->plugins_dir)) { |
$this->plugins_dir[] = SMARTY_PLUGINS_DIR; |
$this->_pluginsDirNormalized = false; |
} |
if (!$this->_pluginsDirNormalized) { |
if (!is_array($this->plugins_dir)) { |
$this->plugins_dir = (array)$this->plugins_dir; |
} |
foreach ($this->plugins_dir as $k => $v) { |
$this->plugins_dir[ $k ] = $this->_realpath(rtrim($v, '/\\') . DIRECTORY_SEPARATOR, true); |
} |
$this->_cache[ 'plugin_files' ] = array(); |
$this->_pluginsDirNormalized = true; |
} |
return $this->plugins_dir; |
} |
/** |
* Set plugins directory |
* |
* @param string|array $plugins_dir directory(s) of plugins |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function setPluginsDir($plugins_dir) |
{ |
$this->plugins_dir = (array)$plugins_dir; |
$this->_pluginsDirNormalized = false; |
return $this; |
} |
/** |
* Get compiled directory |
* |
* @return string path to compiled templates |
*/ |
public function getCompileDir() |
{ |
if (!$this->_compileDirNormalized) { |
$this->_normalizeDir('compile_dir', $this->compile_dir); |
$this->_compileDirNormalized = true; |
} |
return $this->compile_dir; |
} |
/** |
* |
* @param string $compile_dir directory to store compiled templates in |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function setCompileDir($compile_dir) |
{ |
$this->_normalizeDir('compile_dir', $compile_dir); |
$this->_compileDirNormalized = true; |
return $this; |
} |
/** |
* Get cache directory |
* |
* @return string path of cache directory |
*/ |
public function getCacheDir() |
{ |
if (!$this->_cacheDirNormalized) { |
$this->_normalizeDir('cache_dir', $this->cache_dir); |
$this->_cacheDirNormalized = true; |
} |
return $this->cache_dir; |
} |
/** |
* Set cache directory |
* |
* @param string $cache_dir directory to store cached templates in |
* |
* @return Smarty current Smarty instance for chaining |
*/ |
public function setCacheDir($cache_dir) |
{ |
$this->_normalizeDir('cache_dir', $cache_dir); |
$this->_cacheDirNormalized = true; |
return $this; |
} |
/** |
* creates a template object |
* |
* @param string $template the resource handle of the template file |
* @param mixed $cache_id cache id to be used with this template |
* @param mixed $compile_id compile id to be used with this template |
* @param object $parent next higher level of Smarty variables |
* @param boolean $do_clone flag is Smarty object shall be cloned |
* |
* @return \Smarty_Internal_Template template object |
* @throws \SmartyException |
*/ |
public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true) |
{ |
if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) { |
$parent = $cache_id; |
$cache_id = null; |
} |
if ($parent !== null && is_array($parent)) { |
$data = $parent; |
$parent = null; |
} else { |
$data = null; |
} |
if (!$this->_templateDirNormalized) { |
$this->_normalizeTemplateConfig(false); |
} |
$_templateId = $this->_getTemplateId($template, $cache_id, $compile_id); |
$tpl = null; |
if ($this->caching && isset(Smarty_Internal_Template::$isCacheTplObj[ $_templateId ])) { |
$tpl = $do_clone ? clone Smarty_Internal_Template::$isCacheTplObj[ $_templateId ] : |
Smarty_Internal_Template::$isCacheTplObj[ $_templateId ]; |
$tpl->inheritance = null; |
$tpl->tpl_vars = $tpl->config_vars = array(); |
} elseif (!$do_clone && isset(Smarty_Internal_Template::$tplObjCache[ $_templateId ])) { |
$tpl = clone Smarty_Internal_Template::$tplObjCache[ $_templateId ]; |
$tpl->inheritance = null; |
$tpl->tpl_vars = $tpl->config_vars = array(); |
} else { |
/* @var Smarty_Internal_Template $tpl */ |
$tpl = new $this->template_class($template, $this, null, $cache_id, $compile_id, null, null); |
$tpl->templateId = $_templateId; |
} |
if ($do_clone) { |
$tpl->smarty = clone $tpl->smarty; |
} |
$tpl->parent = $parent ? $parent : $this; |
// fill data if present |
if (!empty($data) && is_array($data)) { |
// set up variable values |
foreach ($data as $_key => $_val) { |
$tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val); |
} |
} |
if ($this->debugging || $this->debugging_ctrl === 'URL') { |
$tpl->smarty->_debug = new Smarty_Internal_Debug(); |
// check URL debugging control |
if (!$this->debugging && $this->debugging_ctrl === 'URL') { |
$tpl->smarty->_debug->debugUrl($tpl->smarty); |
} |
} |
return $tpl; |
} |
/** |
* Takes unknown classes and loads plugin files for them |
* class name format: Smarty_PluginType_PluginName |
* plugin filename format: plugintype.pluginname.php |
* |
* @param string $plugin_name class plugin name to load |
* @param bool $check check if already loaded |
* |
* @return string |boolean filepath of loaded file or false |
* @throws \SmartyException |
*/ |
public function loadPlugin($plugin_name, $check = true) |
{ |
return $this->ext->loadPlugin->loadPlugin($this, $plugin_name, $check); |
} |
/** |
* Get unique template id |
* |
* @param string $template_name |
* @param null|mixed $cache_id |
* @param null|mixed $compile_id |
* @param null $caching |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function _getTemplateId( |
$template_name, |
$cache_id = null, |
$compile_id = null, |
$caching = null, |
Smarty_Internal_Template $template = null |
) { |
$template_name = (strpos($template_name, ':') === false) ? "{$this->default_resource_type}:{$template_name}" : |
$template_name; |
$cache_id = $cache_id === null ? $this->cache_id : $cache_id; |
$compile_id = $compile_id === null ? $this->compile_id : $compile_id; |
$caching = (int)($caching === null ? $this->caching : $caching); |
if ((isset($template) && strpos($template_name, ':.') !== false) || $this->allow_ambiguous_resources) { |
$_templateId = |
Smarty_Resource::getUniqueTemplateName((isset($template) ? $template : $this), $template_name) . |
"#{$cache_id}#{$compile_id}#{$caching}"; |
} else { |
$_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}"; |
} |
if (isset($_templateId[ 150 ])) { |
$_templateId = sha1($_templateId); |
} |
return $_templateId; |
} |
/** |
* Normalize path |
* - remove /./ and /../ |
* - make it absolute if required |
* |
* @param string $path file path |
* @param bool $realpath if true - convert to absolute |
* false - convert to relative |
* null - keep as it is but |
* remove /./ /../ |
* |
* @return string |
*/ |
public function _realpath($path, $realpath = null) |
{ |
$nds = array('/' => '\\', '\\' => '/'); |
preg_match( |
'%^(?<root>(?:[[:alpha:]]:[\\\\/]|/|[\\\\]{2}[[:alpha:]]+|[[:print:]]{2,}:[/]{2}|[\\\\])?)(?<path>(.*))$%u', |
$path, |
$parts |
); |
$path = $parts[ 'path' ]; |
if ($parts[ 'root' ] === '\\') { |
$parts[ 'root' ] = substr(getcwd(), 0, 2) . $parts[ 'root' ]; |
} else { |
if ($realpath !== null && !$parts[ 'root' ]) { |
$path = getcwd() . DIRECTORY_SEPARATOR . $path; |
} |
} |
// normalize DIRECTORY_SEPARATOR |
$path = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $path); |
$parts[ 'root' ] = str_replace($nds[ DIRECTORY_SEPARATOR ], DIRECTORY_SEPARATOR, $parts[ 'root' ]); |
do { |
$path = preg_replace( |
array('#[\\\\/]{2}#', '#[\\\\/][.][\\\\/]#', '#[\\\\/]([^\\\\/.]+)[\\\\/][.][.][\\\\/]#'), |
DIRECTORY_SEPARATOR, |
$path, |
-1, |
$count |
); |
} while ($count > 0); |
return $realpath !== false ? $parts[ 'root' ] . $path : str_ireplace(getcwd(), '.', $parts[ 'root' ] . $path); |
} |
/** |
* Empty template objects cache |
*/ |
public function _clearTemplateCache() |
{ |
Smarty_Internal_Template::$isCacheTplObj = array(); |
Smarty_Internal_Template::$tplObjCache = array(); |
} |
/** |
* @param boolean $use_sub_dirs |
*/ |
public function setUseSubDirs($use_sub_dirs) |
{ |
$this->use_sub_dirs = $use_sub_dirs; |
} |
/** |
* @param int $error_reporting |
*/ |
public function setErrorReporting($error_reporting) |
{ |
$this->error_reporting = $error_reporting; |
} |
/** |
* @param boolean $escape_html |
*/ |
public function setEscapeHtml($escape_html) |
{ |
$this->escape_html = $escape_html; |
} |
/** |
* Return auto_literal flag |
* |
* @return boolean |
*/ |
public function getAutoLiteral() |
{ |
return $this->auto_literal; |
} |
/** |
* Set auto_literal flag |
* |
* @param boolean $auto_literal |
*/ |
public function setAutoLiteral($auto_literal = true) |
{ |
$this->auto_literal = $auto_literal; |
} |
/** |
* @param boolean $force_compile |
*/ |
public function setForceCompile($force_compile) |
{ |
$this->force_compile = $force_compile; |
} |
/** |
* @param boolean $merge_compiled_includes |
*/ |
public function setMergeCompiledIncludes($merge_compiled_includes) |
{ |
$this->merge_compiled_includes = $merge_compiled_includes; |
} |
/** |
* Get left delimiter |
* |
* @return string |
*/ |
public function getLeftDelimiter() |
{ |
return $this->left_delimiter; |
} |
/** |
* Set left delimiter |
* |
* @param string $left_delimiter |
*/ |
public function setLeftDelimiter($left_delimiter) |
{ |
$this->left_delimiter = $left_delimiter; |
} |
/** |
* Get right delimiter |
* |
* @return string $right_delimiter |
*/ |
public function getRightDelimiter() |
{ |
return $this->right_delimiter; |
} |
/** |
* Set right delimiter |
* |
* @param string |
*/ |
public function setRightDelimiter($right_delimiter) |
{ |
$this->right_delimiter = $right_delimiter; |
} |
/** |
* @param boolean $debugging |
*/ |
public function setDebugging($debugging) |
{ |
$this->debugging = $debugging; |
} |
/** |
* @param boolean $config_overwrite |
*/ |
public function setConfigOverwrite($config_overwrite) |
{ |
$this->config_overwrite = $config_overwrite; |
} |
/** |
* @param boolean $config_booleanize |
*/ |
public function setConfigBooleanize($config_booleanize) |
{ |
$this->config_booleanize = $config_booleanize; |
} |
/** |
* @param boolean $config_read_hidden |
*/ |
public function setConfigReadHidden($config_read_hidden) |
{ |
$this->config_read_hidden = $config_read_hidden; |
} |
/** |
* @param boolean $compile_locking |
*/ |
public function setCompileLocking($compile_locking) |
{ |
$this->compile_locking = $compile_locking; |
} |
/** |
* @param string $default_resource_type |
*/ |
public function setDefaultResourceType($default_resource_type) |
{ |
$this->default_resource_type = $default_resource_type; |
} |
/** |
* @param string $caching_type |
*/ |
public function setCachingType($caching_type) |
{ |
$this->caching_type = $caching_type; |
} |
/** |
* Test install |
* |
* @param null $errors |
*/ |
public function testInstall(&$errors = null) |
{ |
Smarty_Internal_TestInstall::testInstall($this, $errors); |
} |
/** |
* Get Smarty object |
* |
* @return Smarty |
*/ |
public function _getSmartyObj() |
{ |
return $this; |
} |
/** |
* <<magic>> Generic getter. |
* Calls the appropriate getter function. |
* Issues an E_USER_NOTICE if no valid getter is found. |
* |
* @param string $name property name |
* |
* @return mixed |
*/ |
public function __get($name) |
{ |
if (isset($this->accessMap[ $name ])) { |
$method = 'get' . $this->accessMap[ $name ]; |
return $this->{$method}(); |
} elseif (isset($this->_cache[ $name ])) { |
return $this->_cache[ $name ]; |
} elseif (in_array($name, $this->obsoleteProperties)) { |
return null; |
} else { |
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); |
} |
return null; |
} |
/** |
* <<magic>> Generic setter. |
* Calls the appropriate setter function. |
* Issues an E_USER_NOTICE if no valid setter is found. |
* |
* @param string $name property name |
* @param mixed $value parameter passed to setter |
* |
*/ |
public function __set($name, $value) |
{ |
if (isset($this->accessMap[ $name ])) { |
$method = 'set' . $this->accessMap[ $name ]; |
$this->{$method}($value); |
} elseif (in_array($name, $this->obsoleteProperties)) { |
return; |
} elseif (is_object($value) && method_exists($value, $name)) { |
$this->$name = $value; |
} else { |
trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE); |
} |
} |
/** |
* Normalize and set directory string |
* |
* @param string $dirName cache_dir or compile_dir |
* @param string $dir filepath of folder |
*/ |
private function _normalizeDir($dirName, $dir) |
{ |
$this->{$dirName} = $this->_realpath(rtrim($dir, "/\\") . DIRECTORY_SEPARATOR, true); |
if (class_exists('Smarty_Internal_ErrorHandler', false)) { |
if (!isset(Smarty_Internal_ErrorHandler::$mutedDirectories[ $this->{$dirName} ])) { |
Smarty_Internal_ErrorHandler::$mutedDirectories[ $this->{$dirName} ] = null; |
} |
} |
} |
/** |
* Normalize template_dir or config_dir |
* |
* @param bool $isConfig true for config_dir |
*/ |
private function _normalizeTemplateConfig($isConfig) |
{ |
if ($isConfig) { |
$processed = &$this->_processedConfigDir; |
$dir = &$this->config_dir; |
} else { |
$processed = &$this->_processedTemplateDir; |
$dir = &$this->template_dir; |
} |
if (!is_array($dir)) { |
$dir = (array)$dir; |
} |
foreach ($dir as $k => $v) { |
if (!isset($processed[ $k ])) { |
$dir[ $k ] = $v = $this->_realpath(rtrim($v, "/\\") . DIRECTORY_SEPARATOR, true); |
$processed[ $k ] = true; |
} |
} |
$isConfig ? $this->_configDirNormalized = true : $this->_templateDirNormalized = true; |
$isConfig ? $this->_joined_config_dir = join('#', $this->config_dir) : |
$this->_joined_template_dir = join('#', $this->template_dir); |
} |
} |
/web/acc/manager/vnstat/smarty/SmartyBC.class.php |
---|
0,0 → 1,477 |
<?php |
/** |
* Project: Smarty: the PHP compiling template engine |
* File: SmartyBC.class.php |
* SVN: $Id: $ |
* This library is free software; you can redistribute it and/or |
* modify it under the terms of the GNU Lesser General Public |
* License as published by the Free Software Foundation; either |
* version 2.1 of the License, or (at your option) any later version. |
* This library 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 |
* Lesser General Public License for more details. |
* You should have received a copy of the GNU Lesser General Public |
* License along with this library; if not, write to the Free Software |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
* For questions, help, comments, discussion, etc., please join the |
* Smarty mailing list. Send a blank e-mail to |
* smarty-discussion-subscribe@googlegroups.com |
* |
* @link http://www.smarty.net/ |
* @copyright 2008 New Digital Group, Inc. |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Uwe Tews |
* @author Rodney Rehm |
* @package Smarty |
*/ |
/** |
* @ignore |
*/ |
require_once dirname(__FILE__) . '/Smarty.class.php'; |
/** |
* Smarty Backward Compatibility Wrapper Class |
* |
* @package Smarty |
*/ |
class SmartyBC extends Smarty |
{ |
/** |
* Smarty 2 BC |
* |
* @var string |
*/ |
public $_version = self::SMARTY_VERSION; |
/** |
* This is an array of directories where trusted php scripts reside. |
* |
* @var array |
*/ |
public $trusted_dir = array(); |
/** |
* Initialize new SmartyBC object |
*/ |
public function __construct() |
{ |
parent::__construct(); |
} |
/** |
* wrapper for assign_by_ref |
* |
* @param string $tpl_var the template variable name |
* @param mixed &$value the referenced value to assign |
*/ |
public function assign_by_ref($tpl_var, &$value) |
{ |
$this->assignByRef($tpl_var, $value); |
} |
/** |
* wrapper for append_by_ref |
* |
* @param string $tpl_var the template variable name |
* @param mixed &$value the referenced value to append |
* @param boolean $merge flag if array elements shall be merged |
*/ |
public function append_by_ref($tpl_var, &$value, $merge = false) |
{ |
$this->appendByRef($tpl_var, $value, $merge); |
} |
/** |
* clear the given assigned template variable. |
* |
* @param string $tpl_var the template variable to clear |
*/ |
public function clear_assign($tpl_var) |
{ |
$this->clearAssign($tpl_var); |
} |
/** |
* Registers custom function to be used in templates |
* |
* @param string $function the name of the template function |
* @param string $function_impl the name of the PHP function to register |
* @param bool $cacheable |
* @param mixed $cache_attrs |
* |
* @throws \SmartyException |
*/ |
public function register_function($function, $function_impl, $cacheable = true, $cache_attrs = null) |
{ |
$this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs); |
} |
/** |
* Unregister custom function |
* |
* @param string $function name of template function |
*/ |
public function unregister_function($function) |
{ |
$this->unregisterPlugin('function', $function); |
} |
/** |
* Registers object to be used in templates |
* |
* @param string $object name of template object |
* @param object $object_impl the referenced PHP object to register |
* @param array $allowed list of allowed methods (empty = all) |
* @param boolean $smarty_args smarty argument format, else traditional |
* @param array $block_methods list of methods that are block format |
* |
* @throws SmartyException |
* @internal param array $block_functs list of methods that are block format |
*/ |
public function register_object( |
$object, |
$object_impl, |
$allowed = array(), |
$smarty_args = true, |
$block_methods = array() |
) { |
settype($allowed, 'array'); |
settype($smarty_args, 'boolean'); |
$this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods); |
} |
/** |
* Unregister object |
* |
* @param string $object name of template object |
*/ |
public function unregister_object($object) |
{ |
$this->unregisterObject($object); |
} |
/** |
* Registers block function to be used in templates |
* |
* @param string $block name of template block |
* @param string $block_impl PHP function to register |
* @param bool $cacheable |
* @param mixed $cache_attrs |
* |
* @throws \SmartyException |
*/ |
public function register_block($block, $block_impl, $cacheable = true, $cache_attrs = null) |
{ |
$this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs); |
} |
/** |
* Unregister block function |
* |
* @param string $block name of template function |
*/ |
public function unregister_block($block) |
{ |
$this->unregisterPlugin('block', $block); |
} |
/** |
* Registers compiler function |
* |
* @param string $function name of template function |
* @param string $function_impl name of PHP function to register |
* @param bool $cacheable |
* |
* @throws \SmartyException |
*/ |
public function register_compiler_function($function, $function_impl, $cacheable = true) |
{ |
$this->registerPlugin('compiler', $function, $function_impl, $cacheable); |
} |
/** |
* Unregister compiler function |
* |
* @param string $function name of template function |
*/ |
public function unregister_compiler_function($function) |
{ |
$this->unregisterPlugin('compiler', $function); |
} |
/** |
* Registers modifier to be used in templates |
* |
* @param string $modifier name of template modifier |
* @param string $modifier_impl name of PHP function to register |
* |
* @throws \SmartyException |
*/ |
public function register_modifier($modifier, $modifier_impl) |
{ |
$this->registerPlugin('modifier', $modifier, $modifier_impl); |
} |
/** |
* Unregister modifier |
* |
* @param string $modifier name of template modifier |
*/ |
public function unregister_modifier($modifier) |
{ |
$this->unregisterPlugin('modifier', $modifier); |
} |
/** |
* Registers a resource to fetch a template |
* |
* @param string $type name of resource |
* @param array $functions array of functions to handle resource |
*/ |
public function register_resource($type, $functions) |
{ |
$this->registerResource($type, $functions); |
} |
/** |
* Unregister a resource |
* |
* @param string $type name of resource |
*/ |
public function unregister_resource($type) |
{ |
$this->unregisterResource($type); |
} |
/** |
* Registers a prefilter function to apply |
* to a template before compiling |
* |
* @param callable $function |
* |
* @throws \SmartyException |
*/ |
public function register_prefilter($function) |
{ |
$this->registerFilter('pre', $function); |
} |
/** |
* Unregister a prefilter function |
* |
* @param callable $function |
*/ |
public function unregister_prefilter($function) |
{ |
$this->unregisterFilter('pre', $function); |
} |
/** |
* Registers a postfilter function to apply |
* to a compiled template after compilation |
* |
* @param callable $function |
* |
* @throws \SmartyException |
*/ |
public function register_postfilter($function) |
{ |
$this->registerFilter('post', $function); |
} |
/** |
* Unregister a postfilter function |
* |
* @param callable $function |
*/ |
public function unregister_postfilter($function) |
{ |
$this->unregisterFilter('post', $function); |
} |
/** |
* Registers an output filter function to apply |
* to a template output |
* |
* @param callable $function |
* |
* @throws \SmartyException |
*/ |
public function register_outputfilter($function) |
{ |
$this->registerFilter('output', $function); |
} |
/** |
* Unregister an outputfilter function |
* |
* @param callable $function |
*/ |
public function unregister_outputfilter($function) |
{ |
$this->unregisterFilter('output', $function); |
} |
/** |
* load a filter of specified type and name |
* |
* @param string $type filter type |
* @param string $name filter name |
* |
* @throws \SmartyException |
*/ |
public function load_filter($type, $name) |
{ |
$this->loadFilter($type, $name); |
} |
/** |
* clear cached content for the given template and cache id |
* |
* @param string $tpl_file name of template file |
* @param string $cache_id name of cache_id |
* @param string $compile_id name of compile_id |
* @param string $exp_time expiration time |
* |
* @return boolean |
*/ |
public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null) |
{ |
return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time); |
} |
/** |
* clear the entire contents of cache (all templates) |
* |
* @param string $exp_time expire time |
* |
* @return boolean |
*/ |
public function clear_all_cache($exp_time = null) |
{ |
return $this->clearCache(null, null, null, $exp_time); |
} |
/** |
* test to see if valid cache exists for this template |
* |
* @param string $tpl_file name of template file |
* @param string $cache_id |
* @param string $compile_id |
* |
* @return bool |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function is_cached($tpl_file, $cache_id = null, $compile_id = null) |
{ |
return $this->isCached($tpl_file, $cache_id, $compile_id); |
} |
/** |
* clear all the assigned template variables. |
*/ |
public function clear_all_assign() |
{ |
$this->clearAllAssign(); |
} |
/** |
* clears compiled version of specified template resource, |
* or all compiled template files if one is not specified. |
* This function is for advanced use only, not normally needed. |
* |
* @param string $tpl_file |
* @param string $compile_id |
* @param string $exp_time |
* |
* @return boolean results of {@link smarty_core_rm_auto()} |
*/ |
public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null) |
{ |
return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time); |
} |
/** |
* Checks whether requested template exists. |
* |
* @param string $tpl_file |
* |
* @return bool |
* @throws \SmartyException |
*/ |
public function template_exists($tpl_file) |
{ |
return $this->templateExists($tpl_file); |
} |
/** |
* Returns an array containing template variables |
* |
* @param string $name |
* |
* @return array |
*/ |
public function get_template_vars($name = null) |
{ |
return $this->getTemplateVars($name); |
} |
/** |
* Returns an array containing config variables |
* |
* @param string $name |
* |
* @return array |
*/ |
public function get_config_vars($name = null) |
{ |
return $this->getConfigVars($name); |
} |
/** |
* load configuration values |
* |
* @param string $file |
* @param string $section |
* @param string $scope |
*/ |
public function config_load($file, $section = null, $scope = 'global') |
{ |
$this->ConfigLoad($file, $section, $scope); |
} |
/** |
* return a reference to a registered object |
* |
* @param string $name |
* |
* @return object |
*/ |
public function get_registered_object($name) |
{ |
return $this->getRegisteredObject($name); |
} |
/** |
* clear configuration values |
* |
* @param string $var |
*/ |
public function clear_config($var = null) |
{ |
$this->clearConfig($var); |
} |
/** |
* trigger Smarty error |
* |
* @param string $error_msg |
* @param integer $error_type |
*/ |
public function trigger_error($error_msg, $error_type = E_USER_WARNING) |
{ |
trigger_error("Smarty error: $error_msg", $error_type); |
} |
} |
/web/acc/manager/vnstat/smarty/bootstrap.php |
---|
0,0 → 1,16 |
<?php |
/** |
* This file is part of the Smarty package. |
* |
* (c) Sebastian Bergmann <sebastian@phpunit.de> |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Load and register Smarty Autoloader |
*/ |
if (!class_exists('Smarty_Autoloader')) { |
include dirname(__FILE__) . '/Autoloader.php'; |
} |
Smarty_Autoloader::register(true); |
/web/acc/manager/vnstat/smarty/composer.json |
---|
0,0 → 1,45 |
{ |
"name": "smarty/smarty", |
"type": "library", |
"description": "Smarty - the compiling PHP template engine", |
"keywords": [ |
"templating" |
], |
"homepage": "http://www.smarty.net", |
"license": "LGPL-3.0", |
"authors": [ |
{ |
"name": "Monte Ohrt", |
"email": "monte@ohrt.com" |
}, |
{ |
"name": "Uwe Tews", |
"email": "uwe.tews@googlemail.com" |
}, |
{ |
"name": "Rodney Rehm", |
"email": "rodney.rehm@medialize.de" |
} |
], |
"support": { |
"irc": "irc://irc.freenode.org/smarty", |
"issues": "https://github.com/smarty-php/smarty/issues", |
"forum": "http://www.smarty.net/forums/" |
}, |
"require": { |
"php": ">=5.2" |
}, |
"autoload": { |
"classmap": [ |
"libs/" |
] |
}, |
"extra": { |
"branch-alias": { |
"dev-master": "3.1.x-dev" |
} |
}, |
"require-dev": { |
"phpunit/phpunit": "6.4.1" |
} |
} |
/web/acc/manager/vnstat/smarty/debug.tpl |
---|
0,0 → 1,160 |
{capture name='_smarty_debug' assign=debug_output} |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> |
<head> |
<title>Smarty Debug Console</title> |
<style type="text/css"> |
{literal} |
body, h1, h2, h3, td, th, p { |
font-family: sans-serif; |
font-weight: normal; |
font-size: 0.9em; |
margin: 1px; |
padding: 0; |
} |
h1 { |
margin: 0; |
text-align: left; |
padding: 2px; |
background-color: #f0c040; |
color: black; |
font-weight: bold; |
font-size: 1.2em; |
} |
h2 { |
background-color: #9B410E; |
color: white; |
text-align: left; |
font-weight: bold; |
padding: 2px; |
border-top: 1px solid black; |
} |
h3 { |
text-align: left; |
font-weight: bold; |
color: black; |
font-size: 0.7em; |
padding: 2px; |
} |
body { |
background: black; |
} |
p, table, div { |
background: #f0ead8; |
} |
p { |
margin: 0; |
font-style: italic; |
text-align: center; |
} |
table { |
width: 100%; |
} |
th, td { |
font-family: monospace; |
vertical-align: top; |
text-align: left; |
} |
td { |
color: green; |
} |
.odd { |
background-color: #eeeeee; |
} |
.even { |
background-color: #fafafa; |
} |
.exectime { |
font-size: 0.8em; |
font-style: italic; |
} |
#bold div { |
color: black; |
font-weight: bold; |
} |
#blue h3 { |
color: blue; |
} |
#normal div { |
color: black; |
font-weight: normal; |
} |
#table_assigned_vars th { |
color: blue; |
font-weight: bold; |
} |
#table_config_vars th { |
color: maroon; |
} |
{/literal} |
</style> |
</head> |
<body> |
<h1>Smarty {Smarty::SMARTY_VERSION} Debug Console |
- {if isset($template_name)}{$template_name|debug_print_var nofilter} {/if}{if !empty($template_data)}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1> |
{if !empty($template_data)} |
<h2>included templates & config files (load time in seconds)</h2> |
<div> |
{foreach $template_data as $template} |
<font color=brown>{$template.name}</font> |
<br /> <span class="exectime"> |
(compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}) |
</span> |
<br /> |
{/foreach} |
</div> |
{/if} |
<h2>assigned template variables</h2> |
<table id="table_assigned_vars"> |
{foreach $assigned_vars as $vars} |
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}"> |
<td><h3><font color=blue>${$vars@key}</font></h3> |
{if isset($vars['nocache'])}<b>Nocache</b><br />{/if} |
{if isset($vars['scope'])}<b>Origin:</b> {$vars['scope']|debug_print_var nofilter}{/if} |
</td> |
<td><h3>Value</h3>{$vars['value']|debug_print_var:10:80 nofilter}</td> |
<td>{if isset($vars['attributes'])}<h3>Attributes</h3>{$vars['attributes']|debug_print_var nofilter} {/if}</td> |
{/foreach} |
</table> |
<h2>assigned config file variables</h2> |
<table id="table_config_vars"> |
{foreach $config_vars as $vars} |
<tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}"> |
<td><h3><font color=blue>#{$vars@key}#</font></h3> |
{if isset($vars['scope'])}<b>Origin:</b> {$vars['scope']|debug_print_var nofilter}{/if} |
</td> |
<td>{$vars['value']|debug_print_var:10:80 nofilter}</td> |
</tr> |
{/foreach} |
</table> |
</body> |
</html> |
{/capture} |
<script type="text/javascript"> |
{$id = '__Smarty__'} |
{if $display_mode}{$id = "$offset$template_name"|md5}{/if} |
_smarty_console = window.open("", "console{$id}", "width=1024,height=600,left={$offset},top={$offset},resizable,scrollbars=yes"); |
_smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}"); |
_smarty_console.document.close(); |
</script> |
/web/acc/manager/vnstat/smarty/plugins/block.textformat.php |
---|
0,0 → 1,121 |
<?php |
/** |
* Smarty plugin to format text blocks |
* |
* @package Smarty |
* @subpackage PluginsBlock |
*/ |
/** |
* Smarty {textformat}{/textformat} block plugin |
* Type: block function |
* Name: textformat |
* Purpose: format text a certain way with preset styles |
* or custom wrap/indent settings |
* Params: |
* |
* - style - string (email) |
* - indent - integer (0) |
* - wrap - integer (80) |
* - wrap_char - string ("\n") |
* - indent_char - string (" ") |
* - wrap_boundary - boolean (true) |
* |
* @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} |
* (Smarty online manual) |
* |
* @param array $params parameters |
* @param string $content contents of the block |
* @param Smarty_Internal_Template $template template object |
* @param boolean &$repeat repeat flag |
* |
* @return string content re-formatted |
* @author Monte Ohrt <monte at ohrt dot com> |
* @throws \SmartyException |
*/ |
function smarty_block_textformat($params, $content, Smarty_Internal_Template $template, &$repeat) |
{ |
if (is_null($content)) { |
return; |
} |
if (Smarty::$_MBSTRING) { |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_modifier_mb_wordwrap', |
'file' => SMARTY_PLUGINS_DIR . 'modifier.mb_wordwrap.php' |
) |
) |
); |
} |
$style = null; |
$indent = 0; |
$indent_first = 0; |
$indent_char = ' '; |
$wrap = 80; |
$wrap_char = "\n"; |
$wrap_cut = false; |
$assign = null; |
foreach ($params as $_key => $_val) { |
switch ($_key) { |
case 'style': |
case 'indent_char': |
case 'wrap_char': |
case 'assign': |
$$_key = (string)$_val; |
break; |
case 'indent': |
case 'indent_first': |
case 'wrap': |
$$_key = (int)$_val; |
break; |
case 'wrap_cut': |
$$_key = (bool)$_val; |
break; |
default: |
trigger_error("textformat: unknown attribute '{$_key}'"); |
} |
} |
if ($style === 'email') { |
$wrap = 72; |
} |
// split into paragraphs |
$_paragraphs = preg_split('![\r\n]{2}!', $content); |
foreach ($_paragraphs as &$_paragraph) { |
if (!$_paragraph) { |
continue; |
} |
// convert mult. spaces & special chars to single space |
$_paragraph = |
preg_replace( |
array( |
'!\s+!' . Smarty::$_UTF8_MODIFIER, |
'!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER |
), |
array( |
' ', |
'' |
), |
$_paragraph |
); |
// indent first line |
if ($indent_first > 0) { |
$_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph; |
} |
// wordwrap sentences |
if (Smarty::$_MBSTRING) { |
$_paragraph = smarty_modifier_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); |
} else { |
$_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); |
} |
// indent lines |
if ($indent > 0) { |
$_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph); |
} |
} |
$_output = implode($wrap_char . $wrap_char, $_paragraphs); |
if ($assign) { |
$template->assign($assign, $_output); |
} else { |
return $_output; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/function.counter.php |
---|
0,0 → 1,62 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {counter} function plugin |
* Type: function |
* Name: counter |
* Purpose: print out a counter value |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* @link http://www.smarty.net/manual/en/language.function.counter.php {counter} |
* (Smarty online manual) |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @return string|null |
*/ |
function smarty_function_counter($params, $template) |
{ |
static $counters = array(); |
$name = (isset($params[ 'name' ])) ? $params[ 'name' ] : 'default'; |
if (!isset($counters[ $name ])) { |
$counters[ $name ] = array('start' => 1, 'skip' => 1, 'direction' => 'up', 'count' => 1); |
} |
$counter =& $counters[ $name ]; |
if (isset($params[ 'start' ])) { |
$counter[ 'start' ] = $counter[ 'count' ] = (int)$params[ 'start' ]; |
} |
if (!empty($params[ 'assign' ])) { |
$counter[ 'assign' ] = $params[ 'assign' ]; |
} |
if (isset($counter[ 'assign' ])) { |
$template->assign($counter[ 'assign' ], $counter[ 'count' ]); |
} |
if (isset($params[ 'print' ])) { |
$print = (bool)$params[ 'print' ]; |
} else { |
$print = empty($counter[ 'assign' ]); |
} |
if ($print) { |
$retval = $counter[ 'count' ]; |
} else { |
$retval = null; |
} |
if (isset($params[ 'skip' ])) { |
$counter[ 'skip' ] = $params[ 'skip' ]; |
} |
if (isset($params[ 'direction' ])) { |
$counter[ 'direction' ] = $params[ 'direction' ]; |
} |
if ($counter[ 'direction' ] === 'down') { |
$counter[ 'count' ] -= $counter[ 'skip' ]; |
} else { |
$counter[ 'count' ] += $counter[ 'skip' ]; |
} |
return $retval; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.cycle.php |
---|
0,0 → 1,92 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {cycle} function plugin |
* Type: function |
* Name: cycle |
* Date: May 3, 2002 |
* Purpose: cycle through given values |
* Params: |
* |
* - name - name of cycle (optional) |
* - values - comma separated list of values to cycle, or an array of values to cycle |
* (this can be left out for subsequent calls) |
* - reset - boolean - resets given var to true |
* - print - boolean - print var or not. default is true |
* - advance - boolean - whether or not to advance the cycle |
* - delimiter - the value delimiter, default is "," |
* - assign - boolean, assigns to template var instead of printed. |
* |
* Examples: |
* |
* {cycle values="#eeeeee,#d0d0d0d"} |
* {cycle name=row values="one,two,three" reset=true} |
* {cycle name=row} |
* |
* @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} |
* (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author credit to Mark Priatel <mpriatel@rogers.com> |
* @author credit to Gerard <gerard@interfold.com> |
* @author credit to Jason Sweat <jsweat_php@yahoo.com> |
* @version 1.3 |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @return string|null |
*/ |
function smarty_function_cycle($params, $template) |
{ |
static $cycle_vars; |
$name = (empty($params[ 'name' ])) ? 'default' : $params[ 'name' ]; |
$print = (isset($params[ 'print' ])) ? (bool)$params[ 'print' ] : true; |
$advance = (isset($params[ 'advance' ])) ? (bool)$params[ 'advance' ] : true; |
$reset = (isset($params[ 'reset' ])) ? (bool)$params[ 'reset' ] : false; |
if (!isset($params[ 'values' ])) { |
if (!isset($cycle_vars[ $name ][ 'values' ])) { |
trigger_error('cycle: missing \'values\' parameter'); |
return; |
} |
} else { |
if (isset($cycle_vars[ $name ][ 'values' ]) && $cycle_vars[ $name ][ 'values' ] !== $params[ 'values' ]) { |
$cycle_vars[ $name ][ 'index' ] = 0; |
} |
$cycle_vars[ $name ][ 'values' ] = $params[ 'values' ]; |
} |
if (isset($params[ 'delimiter' ])) { |
$cycle_vars[ $name ][ 'delimiter' ] = $params[ 'delimiter' ]; |
} elseif (!isset($cycle_vars[ $name ][ 'delimiter' ])) { |
$cycle_vars[ $name ][ 'delimiter' ] = ','; |
} |
if (is_array($cycle_vars[ $name ][ 'values' ])) { |
$cycle_array = $cycle_vars[ $name ][ 'values' ]; |
} else { |
$cycle_array = explode($cycle_vars[ $name ][ 'delimiter' ], $cycle_vars[ $name ][ 'values' ]); |
} |
if (!isset($cycle_vars[ $name ][ 'index' ]) || $reset) { |
$cycle_vars[ $name ][ 'index' ] = 0; |
} |
if (isset($params[ 'assign' ])) { |
$print = false; |
$template->assign($params[ 'assign' ], $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]); |
} |
if ($print) { |
$retval = $cycle_array[ $cycle_vars[ $name ][ 'index' ] ]; |
} else { |
$retval = null; |
} |
if ($advance) { |
if ($cycle_vars[ $name ][ 'index' ] >= count($cycle_array) - 1) { |
$cycle_vars[ $name ][ 'index' ] = 0; |
} else { |
$cycle_vars[ $name ][ 'index' ]++; |
} |
} |
return $retval; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.fetch.php |
---|
0,0 → 1,204 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {fetch} plugin |
* Type: function |
* Name: fetch |
* Purpose: fetch file, web or ftp data and display results |
* |
* @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} |
* (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @throws SmartyException |
* @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable |
*/ |
function smarty_function_fetch($params, $template) |
{ |
if (empty($params[ 'file' ])) { |
trigger_error('[plugin] fetch parameter \'file\' cannot be empty', E_USER_NOTICE); |
return; |
} |
// strip file protocol |
if (stripos($params[ 'file' ], 'file://') === 0) { |
$params[ 'file' ] = substr($params[ 'file' ], 7); |
} |
$protocol = strpos($params[ 'file' ], '://'); |
if ($protocol !== false) { |
$protocol = strtolower(substr($params[ 'file' ], 0, $protocol)); |
} |
if (isset($template->smarty->security_policy)) { |
if ($protocol) { |
// remote resource (or php stream, …) |
if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) { |
return; |
} |
} else { |
// local file |
if (!$template->smarty->security_policy->isTrustedResourceDir($params[ 'file' ])) { |
return; |
} |
} |
} |
$content = ''; |
if ($protocol === 'http') { |
// http fetch |
if ($uri_parts = parse_url($params[ 'file' ])) { |
// set defaults |
$host = $server_name = $uri_parts[ 'host' ]; |
$timeout = 30; |
$accept = 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'; |
$agent = 'Smarty Template Engine ' . Smarty::SMARTY_VERSION; |
$referer = ''; |
$uri = !empty($uri_parts[ 'path' ]) ? $uri_parts[ 'path' ] : '/'; |
$uri .= !empty($uri_parts[ 'query' ]) ? '?' . $uri_parts[ 'query' ] : ''; |
$_is_proxy = false; |
if (empty($uri_parts[ 'port' ])) { |
$port = 80; |
} else { |
$port = $uri_parts[ 'port' ]; |
} |
if (!empty($uri_parts[ 'user' ])) { |
$user = $uri_parts[ 'user' ]; |
} |
if (!empty($uri_parts[ 'pass' ])) { |
$pass = $uri_parts[ 'pass' ]; |
} |
// loop through parameters, setup headers |
foreach ($params as $param_key => $param_value) { |
switch ($param_key) { |
case 'file': |
case 'assign': |
case 'assign_headers': |
break; |
case 'user': |
if (!empty($param_value)) { |
$user = $param_value; |
} |
break; |
case 'pass': |
if (!empty($param_value)) { |
$pass = $param_value; |
} |
break; |
case 'accept': |
if (!empty($param_value)) { |
$accept = $param_value; |
} |
break; |
case 'header': |
if (!empty($param_value)) { |
if (!preg_match('![\w\d-]+: .+!', $param_value)) { |
trigger_error("[plugin] invalid header format '{$param_value}'", E_USER_NOTICE); |
return; |
} else { |
$extra_headers[] = $param_value; |
} |
} |
break; |
case 'proxy_host': |
if (!empty($param_value)) { |
$proxy_host = $param_value; |
} |
break; |
case 'proxy_port': |
if (!preg_match('!\D!', $param_value)) { |
$proxy_port = (int)$param_value; |
} else { |
trigger_error("[plugin] invalid value for attribute '{$param_key }'", E_USER_NOTICE); |
return; |
} |
break; |
case 'agent': |
if (!empty($param_value)) { |
$agent = $param_value; |
} |
break; |
case 'referer': |
if (!empty($param_value)) { |
$referer = $param_value; |
} |
break; |
case 'timeout': |
if (!preg_match('!\D!', $param_value)) { |
$timeout = (int)$param_value; |
} else { |
trigger_error("[plugin] invalid value for attribute '{$param_key}'", E_USER_NOTICE); |
return; |
} |
break; |
default: |
trigger_error("[plugin] unrecognized attribute '{$param_key}'", E_USER_NOTICE); |
return; |
} |
} |
if (!empty($proxy_host) && !empty($proxy_port)) { |
$_is_proxy = true; |
$fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout); |
} else { |
$fp = fsockopen($server_name, $port, $errno, $errstr, $timeout); |
} |
if (!$fp) { |
trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE); |
return; |
} else { |
if ($_is_proxy) { |
fputs($fp, 'GET ' . $params[ 'file' ] . " HTTP/1.0\r\n"); |
} else { |
fputs($fp, "GET $uri HTTP/1.0\r\n"); |
} |
if (!empty($host)) { |
fputs($fp, "Host: $host\r\n"); |
} |
if (!empty($accept)) { |
fputs($fp, "Accept: $accept\r\n"); |
} |
if (!empty($agent)) { |
fputs($fp, "User-Agent: $agent\r\n"); |
} |
if (!empty($referer)) { |
fputs($fp, "Referer: $referer\r\n"); |
} |
if (isset($extra_headers) && is_array($extra_headers)) { |
foreach ($extra_headers as $curr_header) { |
fputs($fp, $curr_header . "\r\n"); |
} |
} |
if (!empty($user) && !empty($pass)) { |
fputs($fp, 'Authorization: BASIC ' . base64_encode("$user:$pass") . "\r\n"); |
} |
fputs($fp, "\r\n"); |
while (!feof($fp)) { |
$content .= fgets($fp, 4096); |
} |
fclose($fp); |
$csplit = preg_split("!\r\n\r\n!", $content, 2); |
$content = $csplit[ 1 ]; |
if (!empty($params[ 'assign_headers' ])) { |
$template->assign($params[ 'assign_headers' ], preg_split("!\r\n!", $csplit[ 0 ])); |
} |
} |
} else { |
trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE); |
return; |
} |
} else { |
$content = @file_get_contents($params[ 'file' ]); |
if ($content === false) { |
throw new SmartyException("{fetch} cannot read resource '" . $params[ 'file' ] . "'"); |
} |
} |
if (!empty($params[ 'assign' ])) { |
$template->assign($params[ 'assign' ], $content); |
} else { |
return $content; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_checkboxes.php |
---|
0,0 → 1,286 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_checkboxes} function plugin |
* File: function.html_checkboxes.php |
* Type: function |
* Name: html_checkboxes |
* Date: 24.Feb.2003 |
* Purpose: Prints out a list of checkbox input types |
* Examples: |
* |
* {html_checkboxes values=$ids output=$names} |
* {html_checkboxes values=$ids name='box' separator='<br>' output=$names} |
* {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names} |
* |
* Params: |
* |
* - name (optional) - string default "checkbox" |
* - values (required) - array |
* - options (optional) - associative array |
* - checked (optional) - array default not set |
* - separator (optional) - ie <br> or |
* - output (optional) - the output next to each checkbox |
* - assign (optional) - assign the output as an array to this variable |
* - escape (optional) - escape the content (not value), defaults to true |
* |
* @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} |
* (Smarty online manual) |
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> |
* @author credits to Monte Ohrt <monte at ohrt dot com> |
* @version 1.0 |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @return string |
* @uses smarty_function_escape_special_chars() |
* @throws \SmartyException |
*/ |
function smarty_function_html_checkboxes($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$name = 'checkbox'; |
$values = null; |
$options = null; |
$selected = array(); |
$separator = ''; |
$escape = true; |
$labels = true; |
$label_ids = false; |
$output = null; |
$extra = ''; |
foreach ($params as $_key => $_val) { |
switch ($_key) { |
case 'name': |
case 'separator': |
$$_key = (string)$_val; |
break; |
case 'escape': |
case 'labels': |
case 'label_ids': |
$$_key = (bool)$_val; |
break; |
case 'options': |
$$_key = (array)$_val; |
break; |
case 'values': |
case 'output': |
$$_key = array_values((array)$_val); |
break; |
case 'checked': |
case 'selected': |
if (is_array($_val)) { |
$selected = array(); |
foreach ($_val as $_sel) { |
if (is_object($_sel)) { |
if (method_exists($_sel, '__toString')) { |
$_sel = smarty_function_escape_special_chars((string)$_sel->__toString()); |
} else { |
trigger_error( |
'html_checkboxes: selected attribute contains an object of class \'' . |
get_class($_sel) . '\' without __toString() method', |
E_USER_NOTICE |
); |
continue; |
} |
} else { |
$_sel = smarty_function_escape_special_chars((string)$_sel); |
} |
$selected[ $_sel ] = true; |
} |
} elseif (is_object($_val)) { |
if (method_exists($_val, '__toString')) { |
$selected = smarty_function_escape_special_chars((string)$_val->__toString()); |
} else { |
trigger_error( |
'html_checkboxes: selected attribute is an object of class \'' . get_class($_val) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
} |
} else { |
$selected = smarty_function_escape_special_chars((string)$_val); |
} |
break; |
case 'checkboxes': |
trigger_error( |
'html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', |
E_USER_WARNING |
); |
$options = (array)$_val; |
break; |
case 'assign': |
break; |
case 'strict': |
break; |
case 'disabled': |
case 'readonly': |
if (!empty($params[ 'strict' ])) { |
if (!is_scalar($_val)) { |
trigger_error( |
"html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute", |
E_USER_NOTICE |
); |
} |
if ($_val === true || $_val === $_key) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; |
} |
break; |
} |
// omit break; to fall through! |
// no break |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
trigger_error("html_checkboxes: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
break; |
} |
} |
if (!isset($options) && !isset($values)) { |
return ''; |
} /* raise error here? */ |
$_html_result = array(); |
if (isset($options)) { |
foreach ($options as $_key => $_val) { |
$_html_result[] = |
smarty_function_html_checkboxes_output( |
$name, |
$_key, |
$_val, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
); |
} |
} else { |
foreach ($values as $_i => $_key) { |
$_val = isset($output[ $_i ]) ? $output[ $_i ] : ''; |
$_html_result[] = |
smarty_function_html_checkboxes_output( |
$name, |
$_key, |
$_val, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
); |
} |
} |
if (!empty($params[ 'assign' ])) { |
$template->assign($params[ 'assign' ], $_html_result); |
} else { |
return implode("\n", $_html_result); |
} |
} |
/** |
* @param $name |
* @param $value |
* @param $output |
* @param $selected |
* @param $extra |
* @param $separator |
* @param $labels |
* @param $label_ids |
* @param bool $escape |
* |
* @return string |
*/ |
function smarty_function_html_checkboxes_output( |
$name, |
$value, |
$output, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape = true |
) { |
$_output = ''; |
if (is_object($value)) { |
if (method_exists($value, '__toString')) { |
$value = (string)$value->__toString(); |
} else { |
trigger_error( |
'html_options: value is an object of class \'' . get_class($value) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$value = (string)$value; |
} |
if (is_object($output)) { |
if (method_exists($output, '__toString')) { |
$output = (string)$output->__toString(); |
} else { |
trigger_error( |
'html_options: output is an object of class \'' . get_class($output) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$output = (string)$output; |
} |
if ($labels) { |
if ($label_ids) { |
$_id = smarty_function_escape_special_chars( |
preg_replace( |
'![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, |
'_', |
$name . '_' . $value |
) |
); |
$_output .= '<label for="' . $_id . '">'; |
} else { |
$_output .= '<label>'; |
} |
} |
$name = smarty_function_escape_special_chars($name); |
$value = smarty_function_escape_special_chars($value); |
if ($escape) { |
$output = smarty_function_escape_special_chars($output); |
} |
$_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"'; |
if ($labels && $label_ids) { |
$_output .= ' id="' . $_id . '"'; |
} |
if (is_array($selected)) { |
if (isset($selected[ $value ])) { |
$_output .= ' checked="checked"'; |
} |
} elseif ($value === $selected) { |
$_output .= ' checked="checked"'; |
} |
$_output .= $extra . ' />' . $output; |
if ($labels) { |
$_output .= '</label>'; |
} |
$_output .= $separator; |
return $_output; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_image.php |
---|
0,0 → 1,158 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_image} function plugin |
* Type: function |
* Name: html_image |
* Date: Feb 24, 2003 |
* Purpose: format HTML tags for the image |
* Examples: {html_image file="/images/masthead.gif"} |
* Output: <img src="/images/masthead.gif" width=400 height=23> |
* Params: |
* |
* - file - (required) - file (and path) of image |
* - height - (optional) - image height (default actual height) |
* - width - (optional) - image width (default actual width) |
* - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT |
* - path_prefix - prefix for path output (optional, default empty) |
* |
* @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image} |
* (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author credits to Duda <duda@big.hu> |
* @version 1.0 |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @throws SmartyException |
* @return string |
* @uses smarty_function_escape_special_chars() |
*/ |
function smarty_function_html_image($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$alt = ''; |
$file = ''; |
$height = ''; |
$width = ''; |
$extra = ''; |
$prefix = ''; |
$suffix = ''; |
$path_prefix = ''; |
$basedir = isset($_SERVER[ 'DOCUMENT_ROOT' ]) ? $_SERVER[ 'DOCUMENT_ROOT' ] : ''; |
foreach ($params as $_key => $_val) { |
switch ($_key) { |
case 'file': |
case 'height': |
case 'width': |
case 'dpi': |
case 'path_prefix': |
case 'basedir': |
$$_key = $_val; |
break; |
case 'alt': |
if (!is_array($_val)) { |
$$_key = smarty_function_escape_special_chars($_val); |
} else { |
throw new SmartyException( |
"html_image: extra attribute '{$_key}' cannot be an array", |
E_USER_NOTICE |
); |
} |
break; |
case 'link': |
case 'href': |
$prefix = '<a href="' . $_val . '">'; |
$suffix = '</a>'; |
break; |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
throw new SmartyException( |
"html_image: extra attribute '{$_key}' cannot be an array", |
E_USER_NOTICE |
); |
} |
break; |
} |
} |
if (empty($file)) { |
trigger_error('html_image: missing \'file\' parameter', E_USER_NOTICE); |
return; |
} |
if ($file[ 0 ] === '/') { |
$_image_path = $basedir . $file; |
} else { |
$_image_path = $file; |
} |
// strip file protocol |
if (stripos($params[ 'file' ], 'file://') === 0) { |
$params[ 'file' ] = substr($params[ 'file' ], 7); |
} |
$protocol = strpos($params[ 'file' ], '://'); |
if ($protocol !== false) { |
$protocol = strtolower(substr($params[ 'file' ], 0, $protocol)); |
} |
if (isset($template->smarty->security_policy)) { |
if ($protocol) { |
// remote resource (or php stream, …) |
if (!$template->smarty->security_policy->isTrustedUri($params[ 'file' ])) { |
return; |
} |
} else { |
// local file |
if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) { |
return; |
} |
} |
} |
if (!isset($params[ 'width' ]) || !isset($params[ 'height' ])) { |
// FIXME: (rodneyrehm) getimagesize() loads the complete file off a remote resource, use custom [jpg,png,gif]header reader! |
if (!$_image_data = @getimagesize($_image_path)) { |
if (!file_exists($_image_path)) { |
trigger_error("html_image: unable to find '{$_image_path}'", E_USER_NOTICE); |
return; |
} elseif (!is_readable($_image_path)) { |
trigger_error("html_image: unable to read '{$_image_path}'", E_USER_NOTICE); |
return; |
} else { |
trigger_error("html_image: '{$_image_path}' is not a valid image file", E_USER_NOTICE); |
return; |
} |
} |
if (!isset($params[ 'width' ])) { |
$width = $_image_data[ 0 ]; |
} |
if (!isset($params[ 'height' ])) { |
$height = $_image_data[ 1 ]; |
} |
} |
if (isset($params[ 'dpi' ])) { |
if (strstr($_SERVER[ 'HTTP_USER_AGENT' ], 'Mac')) { |
// FIXME: (rodneyrehm) wrong dpi assumption |
// don't know who thought this up… even if it was true in 1998, it's definitely wrong in 2011. |
$dpi_default = 72; |
} else { |
$dpi_default = 96; |
} |
$_resize = $dpi_default / $params[ 'dpi' ]; |
$width = round($width * $_resize); |
$height = round($height * $_resize); |
} |
return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . |
$height . '"' . $extra . ' />' . $suffix; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_options.php |
---|
0,0 → 1,230 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_options} function plugin |
* Type: function |
* Name: html_options |
* Purpose: Prints the list of <option> tags generated from |
* the passed parameters |
* Params: |
* |
* - name (optional) - string default "select" |
* - values (required) - if no options supplied) - array |
* - options (required) - if no values supplied) - associative array |
* - selected (optional) - string default not set |
* - output (required) - if not options supplied) - array |
* - id (optional) - string default not set |
* - class (optional) - string default not set |
* |
* @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image} |
* (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de> |
* |
* @param array $params parameters |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @uses smarty_function_escape_special_chars() |
* @throws \SmartyException |
*/ |
function smarty_function_html_options($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$name = null; |
$values = null; |
$options = null; |
$selected = null; |
$output = null; |
$id = null; |
$class = null; |
$extra = ''; |
foreach ($params as $_key => $_val) { |
switch ($_key) { |
case 'name': |
case 'class': |
case 'id': |
$$_key = (string)$_val; |
break; |
case 'options': |
$options = (array)$_val; |
break; |
case 'values': |
case 'output': |
$$_key = array_values((array)$_val); |
break; |
case 'selected': |
if (is_array($_val)) { |
$selected = array(); |
foreach ($_val as $_sel) { |
if (is_object($_sel)) { |
if (method_exists($_sel, '__toString')) { |
$_sel = smarty_function_escape_special_chars((string)$_sel->__toString()); |
} else { |
trigger_error( |
'html_options: selected attribute contains an object of class \'' . |
get_class($_sel) . '\' without __toString() method', |
E_USER_NOTICE |
); |
continue; |
} |
} else { |
$_sel = smarty_function_escape_special_chars((string)$_sel); |
} |
$selected[ $_sel ] = true; |
} |
} elseif (is_object($_val)) { |
if (method_exists($_val, '__toString')) { |
$selected = smarty_function_escape_special_chars((string)$_val->__toString()); |
} else { |
trigger_error( |
'html_options: selected attribute is an object of class \'' . get_class($_val) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
} |
} else { |
$selected = smarty_function_escape_special_chars((string)$_val); |
} |
break; |
case 'strict': |
break; |
case 'disabled': |
case 'readonly': |
if (!empty($params[ 'strict' ])) { |
if (!is_scalar($_val)) { |
trigger_error( |
"html_options: {$_key} attribute must be a scalar, only boolean true or string '{$_key}' will actually add the attribute", |
E_USER_NOTICE |
); |
} |
if ($_val === true || $_val === $_key) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; |
} |
break; |
} |
// omit break; to fall through! |
// no break |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
trigger_error("html_options: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
break; |
} |
} |
if (!isset($options) && !isset($values)) { |
/* raise error here? */ |
return ''; |
} |
$_html_result = ''; |
$_idx = 0; |
if (isset($options)) { |
foreach ($options as $_key => $_val) { |
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); |
} |
} else { |
foreach ($values as $_i => $_key) { |
$_val = isset($output[ $_i ]) ? $output[ $_i ] : ''; |
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx); |
} |
} |
if (!empty($name)) { |
$_html_class = !empty($class) ? ' class="' . $class . '"' : ''; |
$_html_id = !empty($id) ? ' id="' . $id . '"' : ''; |
$_html_result = |
'<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . |
'</select>' . "\n"; |
} |
return $_html_result; |
} |
/** |
* @param $key |
* @param $value |
* @param $selected |
* @param $id |
* @param $class |
* @param $idx |
* |
* @return string |
*/ |
function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx) |
{ |
if (!is_array($value)) { |
$_key = smarty_function_escape_special_chars($key); |
$_html_result = '<option value="' . $_key . '"'; |
if (is_array($selected)) { |
if (isset($selected[ $_key ])) { |
$_html_result .= ' selected="selected"'; |
} |
} elseif ($_key === $selected) { |
$_html_result .= ' selected="selected"'; |
} |
$_html_class = !empty($class) ? ' class="' . $class . ' option"' : ''; |
$_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : ''; |
if (is_object($value)) { |
if (method_exists($value, '__toString')) { |
$value = smarty_function_escape_special_chars((string)$value->__toString()); |
} else { |
trigger_error( |
'html_options: value is an object of class \'' . get_class($value) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$value = smarty_function_escape_special_chars((string)$value); |
} |
$_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n"; |
$idx++; |
} else { |
$_idx = 0; |
$_html_result = |
smarty_function_html_options_optgroup( |
$key, |
$value, |
$selected, |
!empty($id) ? ($id . '-' . $idx) : null, |
$class, |
$_idx |
); |
$idx++; |
} |
return $_html_result; |
} |
/** |
* @param $key |
* @param $values |
* @param $selected |
* @param $id |
* @param $class |
* @param $idx |
* |
* @return string |
*/ |
function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx) |
{ |
$optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n"; |
foreach ($values as $key => $value) { |
$optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx); |
} |
$optgroup_html .= "</optgroup>\n"; |
return $optgroup_html; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_radios.php |
---|
0,0 → 1,266 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_radios} function plugin |
* File: function.html_radios.php |
* Type: function |
* Name: html_radios |
* Date: 24.Feb.2003 |
* Purpose: Prints out a list of radio input types |
* Params: |
* |
* - name (optional) - string default "radio" |
* - values (required) - array |
* - options (required) - associative array |
* - checked (optional) - array default not set |
* - separator (optional) - ie <br> or |
* - output (optional) - the output next to each radio button |
* - assign (optional) - assign the output as an array to this variable |
* - escape (optional) - escape the content (not value), defaults to true |
* |
* Examples: |
* |
* {html_radios values=$ids output=$names} |
* {html_radios values=$ids name='box' separator='<br>' output=$names} |
* {html_radios values=$ids checked=$checked separator='<br>' output=$names} |
* |
* @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios} |
* (Smarty online manual) |
* @author Christopher Kvarme <christopher.kvarme@flashjab.com> |
* @author credits to Monte Ohrt <monte at ohrt dot com> |
* @version 1.0 |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @return string |
* @uses smarty_function_escape_special_chars() |
* @throws \SmartyException |
*/ |
function smarty_function_html_radios($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$name = 'radio'; |
$values = null; |
$options = null; |
$selected = null; |
$separator = ''; |
$escape = true; |
$labels = true; |
$label_ids = false; |
$output = null; |
$extra = ''; |
foreach ($params as $_key => $_val) { |
switch ($_key) { |
case 'name': |
case 'separator': |
$$_key = (string)$_val; |
break; |
case 'checked': |
case 'selected': |
if (is_array($_val)) { |
trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING); |
} elseif (is_object($_val)) { |
if (method_exists($_val, '__toString')) { |
$selected = smarty_function_escape_special_chars((string)$_val->__toString()); |
} else { |
trigger_error( |
'html_radios: selected attribute is an object of class \'' . get_class($_val) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
} |
} else { |
$selected = (string)$_val; |
} |
break; |
case 'escape': |
case 'labels': |
case 'label_ids': |
$$_key = (bool)$_val; |
break; |
case 'options': |
$$_key = (array)$_val; |
break; |
case 'values': |
case 'output': |
$$_key = array_values((array)$_val); |
break; |
case 'radios': |
trigger_error( |
'html_radios: the use of the "radios" attribute is deprecated, use "options" instead', |
E_USER_WARNING |
); |
$options = (array)$_val; |
break; |
case 'assign': |
break; |
case 'strict': |
break; |
case 'disabled': |
case 'readonly': |
if (!empty($params[ 'strict' ])) { |
if (!is_scalar($_val)) { |
trigger_error( |
"html_options: {$_key} attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", |
E_USER_NOTICE |
); |
} |
if ($_val === true || $_val === $_key) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; |
} |
break; |
} |
// omit break; to fall through! |
// no break |
default: |
if (!is_array($_val)) { |
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"'; |
} else { |
trigger_error("html_radios: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
break; |
} |
} |
if (!isset($options) && !isset($values)) { |
/* raise error here? */ |
return ''; |
} |
$_html_result = array(); |
if (isset($options)) { |
foreach ($options as $_key => $_val) { |
$_html_result[] = |
smarty_function_html_radios_output( |
$name, |
$_key, |
$_val, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
); |
} |
} else { |
foreach ($values as $_i => $_key) { |
$_val = isset($output[ $_i ]) ? $output[ $_i ] : ''; |
$_html_result[] = |
smarty_function_html_radios_output( |
$name, |
$_key, |
$_val, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
); |
} |
} |
if (!empty($params[ 'assign' ])) { |
$template->assign($params[ 'assign' ], $_html_result); |
} else { |
return implode("\n", $_html_result); |
} |
} |
/** |
* @param $name |
* @param $value |
* @param $output |
* @param $selected |
* @param $extra |
* @param $separator |
* @param $labels |
* @param $label_ids |
* @param $escape |
* |
* @return string |
*/ |
function smarty_function_html_radios_output( |
$name, |
$value, |
$output, |
$selected, |
$extra, |
$separator, |
$labels, |
$label_ids, |
$escape |
) { |
$_output = ''; |
if (is_object($value)) { |
if (method_exists($value, '__toString')) { |
$value = (string)$value->__toString(); |
} else { |
trigger_error( |
'html_options: value is an object of class \'' . get_class($value) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$value = (string)$value; |
} |
if (is_object($output)) { |
if (method_exists($output, '__toString')) { |
$output = (string)$output->__toString(); |
} else { |
trigger_error( |
'html_options: output is an object of class \'' . get_class($output) . |
'\' without __toString() method', |
E_USER_NOTICE |
); |
return ''; |
} |
} else { |
$output = (string)$output; |
} |
if ($labels) { |
if ($label_ids) { |
$_id = smarty_function_escape_special_chars( |
preg_replace( |
'![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, |
'_', |
$name . '_' . $value |
) |
); |
$_output .= '<label for="' . $_id . '">'; |
} else { |
$_output .= '<label>'; |
} |
} |
$name = smarty_function_escape_special_chars($name); |
$value = smarty_function_escape_special_chars($value); |
if ($escape) { |
$output = smarty_function_escape_special_chars($output); |
} |
$_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"'; |
if ($labels && $label_ids) { |
$_output .= ' id="' . $_id . '"'; |
} |
if ($value === $selected) { |
$_output .= ' checked="checked"'; |
} |
$_output .= $extra . ' />' . $output; |
if ($labels) { |
$_output .= '</label>'; |
} |
$_output .= $separator; |
return $_output; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_select_date.php |
---|
0,0 → 1,388 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_select_date} plugin |
* Type: function |
* Name: html_select_date |
* Purpose: Prints the dropdowns for date selection. |
* ChangeLog: |
* |
* - 1.0 initial release |
* - 1.1 added support for +/- N syntax for begin |
* and end year values. (Monte) |
* - 1.2 added support for yyyy-mm-dd syntax for |
* time value. (Jan Rosier) |
* - 1.3 added support for choosing format for |
* month values (Gary Loescher) |
* - 1.3.1 added support for choosing format for |
* day values (Marcus Bointon) |
* - 1.3.2 support negative timestamps, force year |
* dropdown to include given date unless explicitly set (Monte) |
* - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that |
* of 0000-00-00 dates (cybot, boots) |
* - 2.0 complete rewrite for performance, |
* added attributes month_names, *_id |
* |
* @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date} |
* (Smarty online manual) |
* @version 2.0 |
* @author Andrei Zmievski |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Rodney Rehm |
* |
* @param array $params parameters |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @throws \SmartyException |
*/ |
function smarty_function_html_select_date($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
// generate timestamps used for month names only |
static $_month_timestamps = null; |
static $_current_year = null; |
if ($_month_timestamps === null) { |
$_current_year = date('Y'); |
$_month_timestamps = array(); |
for ($i = 1; $i <= 12; $i++) { |
$_month_timestamps[ $i ] = mktime(0, 0, 0, $i, 1, 2000); |
} |
} |
/* Default values. */ |
$prefix = 'Date_'; |
$start_year = null; |
$end_year = null; |
$display_days = true; |
$display_months = true; |
$display_years = true; |
$month_format = '%B'; |
/* Write months as numbers by default GL */ |
$month_value_format = '%m'; |
$day_format = '%02d'; |
/* Write day values using this format MB */ |
$day_value_format = '%d'; |
$year_as_text = false; |
/* Display years in reverse order? Ie. 2000,1999,.... */ |
$reverse_years = false; |
/* Should the select boxes be part of an array when returned from PHP? |
e.g. setting it to "birthday", would create "birthday[Day]", |
"birthday[Month]" & "birthday[Year]". Can be combined with prefix */ |
$field_array = null; |
/* <select size>'s of the different <select> tags. |
If not set, uses default dropdown. */ |
$day_size = null; |
$month_size = null; |
$year_size = null; |
/* Unparsed attributes common to *ALL* the <select>/<input> tags. |
An example might be in the template: all_extra ='class ="foo"'. */ |
$all_extra = null; |
/* Separate attributes for the tags. */ |
$day_extra = null; |
$month_extra = null; |
$year_extra = null; |
/* Order in which to display the fields. |
"D" -> day, "M" -> month, "Y" -> year. */ |
$field_order = 'MDY'; |
/* String printed between the different fields. */ |
$field_separator = "\n"; |
$option_separator = "\n"; |
$time = null; |
// $all_empty = null; |
// $day_empty = null; |
// $month_empty = null; |
// $year_empty = null; |
$extra_attrs = ''; |
$all_id = null; |
$day_id = null; |
$month_id = null; |
$year_id = null; |
foreach ($params as $_key => $_value) { |
switch ($_key) { |
case 'time': |
if (!is_array($_value) && $_value !== null) { |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_make_timestamp', |
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php' |
) |
) |
); |
$time = smarty_make_timestamp($_value); |
} |
break; |
case 'month_names': |
if (is_array($_value) && count($_value) === 12) { |
$$_key = $_value; |
} else { |
trigger_error('html_select_date: month_names must be an array of 12 strings', E_USER_NOTICE); |
} |
break; |
case 'prefix': |
case 'field_array': |
case 'start_year': |
case 'end_year': |
case 'day_format': |
case 'day_value_format': |
case 'month_format': |
case 'month_value_format': |
case 'day_size': |
case 'month_size': |
case 'year_size': |
case 'all_extra': |
case 'day_extra': |
case 'month_extra': |
case 'year_extra': |
case 'field_order': |
case 'field_separator': |
case 'option_separator': |
case 'all_empty': |
case 'month_empty': |
case 'day_empty': |
case 'year_empty': |
case 'all_id': |
case 'month_id': |
case 'day_id': |
case 'year_id': |
$$_key = (string)$_value; |
break; |
case 'display_days': |
case 'display_months': |
case 'display_years': |
case 'year_as_text': |
case 'reverse_years': |
$$_key = (bool)$_value; |
break; |
default: |
if (!is_array($_value)) { |
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"'; |
} else { |
trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
break; |
} |
} |
// Note: date() is faster than strftime() |
// Note: explode(date()) is faster than date() date() date() |
if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) { |
if (isset($params[ 'time' ][ $prefix . 'Year' ])) { |
// $_REQUEST[$field_array] given |
foreach (array( |
'Y' => 'Year', |
'm' => 'Month', |
'd' => 'Day' |
) as $_elementKey => $_elementName) { |
$_variableName = '_' . strtolower($_elementName); |
$$_variableName = |
isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] : |
date($_elementKey); |
} |
} elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Year' ])) { |
// $_REQUEST given |
foreach (array( |
'Y' => 'Year', |
'm' => 'Month', |
'd' => 'Day' |
) as $_elementKey => $_elementName) { |
$_variableName = '_' . strtolower($_elementName); |
$$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ? |
$params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey); |
} |
} else { |
// no date found, use NOW |
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); |
} |
} elseif ($time === null) { |
if (array_key_exists('time', $params)) { |
$_year = $_month = $_day = $time = null; |
} else { |
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); |
} |
} else { |
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d', $time)); |
} |
// make syntax "+N" or "-N" work with $start_year and $end_year |
// Note preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match) is slower than trim+substr |
foreach (array( |
'start', |
'end' |
) as $key) { |
$key .= '_year'; |
$t = $$key; |
if ($t === null) { |
$$key = (int)$_current_year; |
} elseif ($t[ 0 ] === '+') { |
$$key = (int)($_current_year + (int)trim(substr($t, 1))); |
} elseif ($t[ 0 ] === '-') { |
$$key = (int)($_current_year - (int)trim(substr($t, 1))); |
} else { |
$$key = (int)$$key; |
} |
} |
// flip for ascending or descending |
if (($start_year > $end_year && !$reverse_years) || ($start_year < $end_year && $reverse_years)) { |
$t = $end_year; |
$end_year = $start_year; |
$start_year = $t; |
} |
// generate year <select> or <input> |
if ($display_years) { |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($year_extra) { |
$_extra .= ' ' . $year_extra; |
} |
if ($year_as_text) { |
$_html_years = |
'<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . |
$extra_attrs . ' />'; |
} else { |
$_html_years = '<select name="' . $_name . '"'; |
if ($year_id !== null || $all_id !== null) { |
$_html_years .= ' id="' . smarty_function_escape_special_chars( |
$year_id !== null ? |
($year_id ? $year_id : $_name) : |
($all_id ? ($all_id . $_name) : |
$_name) |
) . '"'; |
} |
if ($year_size) { |
$_html_years .= ' size="' . $year_size . '"'; |
} |
$_html_years .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($year_empty) || isset($all_empty)) { |
$_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' . |
$option_separator; |
} |
$op = $start_year > $end_year ? -1 : 1; |
for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) { |
$_html_years .= '<option value="' . $i . '"' . ($_year == $i ? ' selected="selected"' : '') . '>' . $i . |
'</option>' . $option_separator; |
} |
$_html_years .= '</select>'; |
} |
} |
// generate month <select> or <input> |
if ($display_months) { |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($month_extra) { |
$_extra .= ' ' . $month_extra; |
} |
$_html_months = '<select name="' . $_name . '"'; |
if ($month_id !== null || $all_id !== null) { |
$_html_months .= ' id="' . smarty_function_escape_special_chars( |
$month_id !== null ? |
($month_id ? $month_id : $_name) : |
($all_id ? ($all_id . $_name) : |
$_name) |
) . '"'; |
} |
if ($month_size) { |
$_html_months .= ' size="' . $month_size . '"'; |
} |
$_html_months .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($month_empty) || isset($all_empty)) { |
$_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' . |
$option_separator; |
} |
for ($i = 1; $i <= 12; $i++) { |
$_val = sprintf('%02d', $i); |
$_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[ $i ]) : |
($month_format === '%m' ? $_val : strftime($month_format, $_month_timestamps[ $i ])); |
$_value = $month_value_format === '%m' ? $_val : strftime($month_value_format, $_month_timestamps[ $i ]); |
$_html_months .= '<option value="' . $_value . '"' . ($_val == $_month ? ' selected="selected"' : '') . |
'>' . $_text . '</option>' . $option_separator; |
} |
$_html_months .= '</select>'; |
} |
// generate day <select> or <input> |
if ($display_days) { |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($day_extra) { |
$_extra .= ' ' . $day_extra; |
} |
$_html_days = '<select name="' . $_name . '"'; |
if ($day_id !== null || $all_id !== null) { |
$_html_days .= ' id="' . |
smarty_function_escape_special_chars( |
$day_id !== null ? ($day_id ? $day_id : $_name) : |
($all_id ? ($all_id . $_name) : $_name) |
) . '"'; |
} |
if ($day_size) { |
$_html_days .= ' size="' . $day_size . '"'; |
} |
$_html_days .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($day_empty) || isset($all_empty)) { |
$_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' . |
$option_separator; |
} |
for ($i = 1; $i <= 31; $i++) { |
$_val = sprintf('%02d', $i); |
$_text = $day_format === '%02d' ? $_val : sprintf($day_format, $i); |
$_value = $day_value_format === '%02d' ? $_val : sprintf($day_value_format, $i); |
$_html_days .= '<option value="' . $_value . '"' . ($_val == $_day ? ' selected="selected"' : '') . '>' . |
$_text . '</option>' . $option_separator; |
} |
$_html_days .= '</select>'; |
} |
// order the fields for output |
$_html = ''; |
for ($i = 0; $i <= 2; $i++) { |
switch ($field_order[ $i ]) { |
case 'Y': |
case 'y': |
if (isset($_html_years)) { |
if ($_html) { |
$_html .= $field_separator; |
} |
$_html .= $_html_years; |
} |
break; |
case 'm': |
case 'M': |
if (isset($_html_months)) { |
if ($_html) { |
$_html .= $field_separator; |
} |
$_html .= $_html_months; |
} |
break; |
case 'd': |
case 'D': |
if (isset($_html_days)) { |
if ($_html) { |
$_html .= $field_separator; |
} |
$_html .= $_html_days; |
} |
break; |
} |
} |
return $_html; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_select_time.php |
---|
0,0 → 1,354 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_select_time} function plugin |
* Type: function |
* Name: html_select_time |
* Purpose: Prints the dropdowns for time selection |
* |
* @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time} |
* (Smarty online manual) |
* @author Roberto Berto <roberto@berto.net> |
* @author Monte Ohrt <monte AT ohrt DOT com> |
* |
* @param array $params parameters |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
* @uses smarty_make_timestamp() |
* @throws \SmartyException |
*/ |
function smarty_function_html_select_time($params, Smarty_Internal_Template $template) |
{ |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_function_escape_special_chars', |
'file' => SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php' |
) |
) |
); |
$prefix = 'Time_'; |
$field_array = null; |
$field_separator = "\n"; |
$option_separator = "\n"; |
$time = null; |
$display_hours = true; |
$display_minutes = true; |
$display_seconds = true; |
$display_meridian = true; |
$hour_format = '%02d'; |
$hour_value_format = '%02d'; |
$minute_format = '%02d'; |
$minute_value_format = '%02d'; |
$second_format = '%02d'; |
$second_value_format = '%02d'; |
$hour_size = null; |
$minute_size = null; |
$second_size = null; |
$meridian_size = null; |
$all_empty = null; |
$hour_empty = null; |
$minute_empty = null; |
$second_empty = null; |
$meridian_empty = null; |
$all_id = null; |
$hour_id = null; |
$minute_id = null; |
$second_id = null; |
$meridian_id = null; |
$use_24_hours = true; |
$minute_interval = 1; |
$second_interval = 1; |
$extra_attrs = ''; |
$all_extra = null; |
$hour_extra = null; |
$minute_extra = null; |
$second_extra = null; |
$meridian_extra = null; |
foreach ($params as $_key => $_value) { |
switch ($_key) { |
case 'time': |
if (!is_array($_value) && $_value !== null) { |
$template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_make_timestamp', |
'file' => SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php' |
) |
) |
); |
$time = smarty_make_timestamp($_value); |
} |
break; |
case 'prefix': |
case 'field_array': |
case 'field_separator': |
case 'option_separator': |
case 'all_extra': |
case 'hour_extra': |
case 'minute_extra': |
case 'second_extra': |
case 'meridian_extra': |
case 'all_empty': |
case 'hour_empty': |
case 'minute_empty': |
case 'second_empty': |
case 'meridian_empty': |
case 'all_id': |
case 'hour_id': |
case 'minute_id': |
case 'second_id': |
case 'meridian_id': |
case 'hour_format': |
case 'hour_value_format': |
case 'minute_format': |
case 'minute_value_format': |
case 'second_format': |
case 'second_value_format': |
$$_key = (string)$_value; |
break; |
case 'display_hours': |
case 'display_minutes': |
case 'display_seconds': |
case 'display_meridian': |
case 'use_24_hours': |
$$_key = (bool)$_value; |
break; |
case 'minute_interval': |
case 'second_interval': |
case 'hour_size': |
case 'minute_size': |
case 'second_size': |
case 'meridian_size': |
$$_key = (int)$_value; |
break; |
default: |
if (!is_array($_value)) { |
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"'; |
} else { |
trigger_error("html_select_date: extra attribute '{$_key}' cannot be an array", E_USER_NOTICE); |
} |
break; |
} |
} |
if (isset($params[ 'time' ]) && is_array($params[ 'time' ])) { |
if (isset($params[ 'time' ][ $prefix . 'Hour' ])) { |
// $_REQUEST[$field_array] given |
foreach (array( |
'H' => 'Hour', |
'i' => 'Minute', |
's' => 'Second' |
) as $_elementKey => $_elementName) { |
$_variableName = '_' . strtolower($_elementName); |
$$_variableName = |
isset($params[ 'time' ][ $prefix . $_elementName ]) ? $params[ 'time' ][ $prefix . $_elementName ] : |
date($_elementKey); |
} |
$_meridian = |
isset($params[ 'time' ][ $prefix . 'Meridian' ]) ? (' ' . $params[ 'time' ][ $prefix . 'Meridian' ]) : |
''; |
$time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian); |
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); |
} elseif (isset($params[ 'time' ][ $field_array ][ $prefix . 'Hour' ])) { |
// $_REQUEST given |
foreach (array( |
'H' => 'Hour', |
'i' => 'Minute', |
's' => 'Second' |
) as $_elementKey => $_elementName) { |
$_variableName = '_' . strtolower($_elementName); |
$$_variableName = isset($params[ 'time' ][ $field_array ][ $prefix . $_elementName ]) ? |
$params[ 'time' ][ $field_array ][ $prefix . $_elementName ] : date($_elementKey); |
} |
$_meridian = isset($params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) ? |
(' ' . $params[ 'time' ][ $field_array ][ $prefix . 'Meridian' ]) : ''; |
$time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian); |
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); |
} else { |
// no date found, use NOW |
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d')); |
} |
} elseif ($time === null) { |
if (array_key_exists('time', $params)) { |
$_hour = $_minute = $_second = $time = null; |
} else { |
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s')); |
} |
} else { |
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time)); |
} |
// generate hour <select> |
if ($display_hours) { |
$_html_hours = ''; |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Hour]') : ($prefix . 'Hour'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($hour_extra) { |
$_extra .= ' ' . $hour_extra; |
} |
$_html_hours = '<select name="' . $_name . '"'; |
if ($hour_id !== null || $all_id !== null) { |
$_html_hours .= ' id="' . |
smarty_function_escape_special_chars( |
$hour_id !== null ? ($hour_id ? $hour_id : $_name) : |
($all_id ? ($all_id . $_name) : $_name) |
) . '"'; |
} |
if ($hour_size) { |
$_html_hours .= ' size="' . $hour_size . '"'; |
} |
$_html_hours .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($hour_empty) || isset($all_empty)) { |
$_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' . |
$option_separator; |
} |
$start = $use_24_hours ? 0 : 1; |
$end = $use_24_hours ? 23 : 12; |
for ($i = $start; $i <= $end; $i++) { |
$_val = sprintf('%02d', $i); |
$_text = $hour_format === '%02d' ? $_val : sprintf($hour_format, $i); |
$_value = $hour_value_format === '%02d' ? $_val : sprintf($hour_value_format, $i); |
if (!$use_24_hours) { |
$_hour12 = $_hour == 0 ? 12 : ($_hour <= 12 ? $_hour : $_hour - 12); |
} |
$selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null; |
$_html_hours .= '<option value="' . $_value . '"' . ($selected ? ' selected="selected"' : '') . '>' . |
$_text . '</option>' . $option_separator; |
} |
$_html_hours .= '</select>'; |
} |
// generate minute <select> |
if ($display_minutes) { |
$_html_minutes = ''; |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Minute]') : ($prefix . 'Minute'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($minute_extra) { |
$_extra .= ' ' . $minute_extra; |
} |
$_html_minutes = '<select name="' . $_name . '"'; |
if ($minute_id !== null || $all_id !== null) { |
$_html_minutes .= ' id="' . smarty_function_escape_special_chars( |
$minute_id !== null ? |
($minute_id ? $minute_id : $_name) : |
($all_id ? ($all_id . $_name) : |
$_name) |
) . '"'; |
} |
if ($minute_size) { |
$_html_minutes .= ' size="' . $minute_size . '"'; |
} |
$_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($minute_empty) || isset($all_empty)) { |
$_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' . |
$option_separator; |
} |
$selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null; |
for ($i = 0; $i <= 59; $i += $minute_interval) { |
$_val = sprintf('%02d', $i); |
$_text = $minute_format === '%02d' ? $_val : sprintf($minute_format, $i); |
$_value = $minute_value_format === '%02d' ? $_val : sprintf($minute_value_format, $i); |
$_html_minutes .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') . |
'>' . $_text . '</option>' . $option_separator; |
} |
$_html_minutes .= '</select>'; |
} |
// generate second <select> |
if ($display_seconds) { |
$_html_seconds = ''; |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Second]') : ($prefix . 'Second'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($second_extra) { |
$_extra .= ' ' . $second_extra; |
} |
$_html_seconds = '<select name="' . $_name . '"'; |
if ($second_id !== null || $all_id !== null) { |
$_html_seconds .= ' id="' . smarty_function_escape_special_chars( |
$second_id !== null ? |
($second_id ? $second_id : $_name) : |
($all_id ? ($all_id . $_name) : |
$_name) |
) . '"'; |
} |
if ($second_size) { |
$_html_seconds .= ' size="' . $second_size . '"'; |
} |
$_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($second_empty) || isset($all_empty)) { |
$_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' . |
$option_separator; |
} |
$selected = $_second !== null ? ($_second - $_second % $second_interval) : null; |
for ($i = 0; $i <= 59; $i += $second_interval) { |
$_val = sprintf('%02d', $i); |
$_text = $second_format === '%02d' ? $_val : sprintf($second_format, $i); |
$_value = $second_value_format === '%02d' ? $_val : sprintf($second_value_format, $i); |
$_html_seconds .= '<option value="' . $_value . '"' . ($selected === $i ? ' selected="selected"' : '') . |
'>' . $_text . '</option>' . $option_separator; |
} |
$_html_seconds .= '</select>'; |
} |
// generate meridian <select> |
if ($display_meridian && !$use_24_hours) { |
$_html_meridian = ''; |
$_extra = ''; |
$_name = $field_array ? ($field_array . '[' . $prefix . 'Meridian]') : ($prefix . 'Meridian'); |
if ($all_extra) { |
$_extra .= ' ' . $all_extra; |
} |
if ($meridian_extra) { |
$_extra .= ' ' . $meridian_extra; |
} |
$_html_meridian = '<select name="' . $_name . '"'; |
if ($meridian_id !== null || $all_id !== null) { |
$_html_meridian .= ' id="' . smarty_function_escape_special_chars( |
$meridian_id !== null ? |
($meridian_id ? $meridian_id : |
$_name) : |
($all_id ? ($all_id . $_name) : |
$_name) |
) . '"'; |
} |
if ($meridian_size) { |
$_html_meridian .= ' size="' . $meridian_size . '"'; |
} |
$_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator; |
if (isset($meridian_empty) || isset($all_empty)) { |
$_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) . |
'</option>' . $option_separator; |
} |
$_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') . |
'>AM</option>' . $option_separator . '<option value="pm"' . |
($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator . |
'</select>'; |
} |
$_html = ''; |
foreach (array( |
'_html_hours', |
'_html_minutes', |
'_html_seconds', |
'_html_meridian' |
) as $k) { |
if (isset($$k)) { |
if ($_html) { |
$_html .= $field_separator; |
} |
$_html .= $$k; |
} |
} |
return $_html; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.html_table.php |
---|
0,0 → 1,164 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {html_table} function plugin |
* Type: function |
* Name: html_table |
* Date: Feb 17, 2003 |
* Purpose: make an html table from an array of data |
* Params: |
* |
* - loop - array to loop through |
* - cols - number of columns, comma separated list of column names |
* or array of column names |
* - rows - number of rows |
* - table_attr - table attributes |
* - th_attr - table heading attributes (arrays are cycled) |
* - tr_attr - table row attributes (arrays are cycled) |
* - td_attr - table cell attributes (arrays are cycled) |
* - trailpad - value to pad trailing cells with |
* - caption - text for caption element |
* - vdir - vertical direction (default: "down", means top-to-bottom) |
* - hdir - horizontal direction (default: "right", means left-to-right) |
* - inner - inner loop (default "cols": print $loop line by line, |
* $loop will be printed column by column otherwise) |
* |
* Examples: |
* |
* {table loop=$data} |
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'} |
* {table loop=$data cols="first,second,third" tr_attr=$colors} |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author credit to Messju Mohr <messju at lammfellpuschen dot de> |
* @author credit to boots <boots dot smarty at yahoo dot com> |
* @version 1.1 |
* @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table} |
* (Smarty online manual) |
* |
* @param array $params parameters |
* |
* @return string |
*/ |
function smarty_function_html_table($params) |
{ |
$table_attr = 'border="1"'; |
$tr_attr = ''; |
$th_attr = ''; |
$td_attr = ''; |
$cols = $cols_count = 3; |
$rows = 3; |
$trailpad = ' '; |
$vdir = 'down'; |
$hdir = 'right'; |
$inner = 'cols'; |
$caption = ''; |
$loop = null; |
if (!isset($params[ 'loop' ])) { |
trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING); |
return; |
} |
foreach ($params as $_key => $_value) { |
switch ($_key) { |
case 'loop': |
$$_key = (array)$_value; |
break; |
case 'cols': |
if (is_array($_value) && !empty($_value)) { |
$cols = $_value; |
$cols_count = count($_value); |
} elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) { |
$cols = explode(',', $_value); |
$cols_count = count($cols); |
} elseif (!empty($_value)) { |
$cols_count = (int)$_value; |
} else { |
$cols_count = $cols; |
} |
break; |
case 'rows': |
$$_key = (int)$_value; |
break; |
case 'table_attr': |
case 'trailpad': |
case 'hdir': |
case 'vdir': |
case 'inner': |
case 'caption': |
$$_key = (string)$_value; |
break; |
case 'tr_attr': |
case 'td_attr': |
case 'th_attr': |
$$_key = $_value; |
break; |
} |
} |
$loop_count = count($loop); |
if (empty($params[ 'rows' ])) { |
/* no rows specified */ |
$rows = ceil($loop_count / $cols_count); |
} elseif (empty($params[ 'cols' ])) { |
if (!empty($params[ 'rows' ])) { |
/* no cols specified, but rows */ |
$cols_count = ceil($loop_count / $rows); |
} |
} |
$output = "<table $table_attr>\n"; |
if (!empty($caption)) { |
$output .= '<caption>' . $caption . "</caption>\n"; |
} |
if (is_array($cols)) { |
$cols = ($hdir === 'right') ? $cols : array_reverse($cols); |
$output .= "<thead><tr>\n"; |
for ($r = 0; $r < $cols_count; $r++) { |
$output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>'; |
$output .= $cols[ $r ]; |
$output .= "</th>\n"; |
} |
$output .= "</tr></thead>\n"; |
} |
$output .= "<tbody>\n"; |
for ($r = 0; $r < $rows; $r++) { |
$output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n"; |
$rx = ($vdir === 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count; |
for ($c = 0; $c < $cols_count; $c++) { |
$x = ($hdir === 'right') ? $rx + $c : $rx + $cols_count - 1 - $c; |
if ($inner !== 'cols') { |
/* shuffle x to loop over rows*/ |
$x = floor($x / $cols_count) + ($x % $cols_count) * $rows; |
} |
if ($x < $loop_count) { |
$output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[ $x ] . "</td>\n"; |
} else { |
$output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n"; |
} |
} |
$output .= "</tr>\n"; |
} |
$output .= "</tbody>\n"; |
$output .= "</table>\n"; |
return $output; |
} |
/** |
* @param $name |
* @param $var |
* @param $no |
* |
* @return string |
*/ |
function smarty_function_html_table_cycle($name, $var, $no) |
{ |
if (!is_array($var)) { |
$ret = $var; |
} else { |
$ret = $var[ $no % count($var) ]; |
} |
return ($ret) ? ' ' . $ret : ''; |
} |
/web/acc/manager/vnstat/smarty/plugins/function.mailto.php |
---|
0,0 → 1,137 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {mailto} function plugin |
* Type: function |
* Name: mailto |
* Date: May 21, 2002 |
* Purpose: automate mailto address link creation, and optionally encode them. |
* Params: |
* |
* - address - (required) - e-mail address |
* - text - (optional) - text to display, default is address |
* - encode - (optional) - can be one of: |
* * none : no encoding (default) |
* * javascript : encode with javascript |
* * javascript_charcode : encode with javascript charcode |
* * hex : encode with hexadecimal (no javascript) |
* - cc - (optional) - address(es) to carbon copy |
* - bcc - (optional) - address(es) to blind carbon copy |
* - subject - (optional) - e-mail subject |
* - newsgroups - (optional) - newsgroup(s) to post to |
* - followupto - (optional) - address(es) to follow up to |
* - extra - (optional) - extra tags for the href link |
* |
* Examples: |
* |
* {mailto address="me@domain.com"} |
* {mailto address="me@domain.com" encode="javascript"} |
* {mailto address="me@domain.com" encode="hex"} |
* {mailto address="me@domain.com" subject="Hello to you!"} |
* {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"} |
* {mailto address="me@domain.com" extra='class="mailto"'} |
* |
* @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto} |
* (Smarty online manual) |
* @version 1.2 |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author credits to Jason Sweat (added cc, bcc and subject functionality) |
* |
* @param array $params parameters |
* |
* @return string |
*/ |
function smarty_function_mailto($params) |
{ |
static $_allowed_encoding = |
array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true); |
$extra = ''; |
if (empty($params[ 'address' ])) { |
trigger_error("mailto: missing 'address' parameter", E_USER_WARNING); |
return; |
} else { |
$address = $params[ 'address' ]; |
} |
$text = $address; |
// netscape and mozilla do not decode %40 (@) in BCC field (bug?) |
// so, don't encode it. |
$search = array('%40', '%2C'); |
$replace = array('@', ','); |
$mail_parms = array(); |
foreach ($params as $var => $value) { |
switch ($var) { |
case 'cc': |
case 'bcc': |
case 'followupto': |
if (!empty($value)) { |
$mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value)); |
} |
break; |
case 'subject': |
case 'newsgroups': |
$mail_parms[] = $var . '=' . rawurlencode($value); |
break; |
case 'extra': |
case 'text': |
$$var = $value; |
// no break |
default: |
} |
} |
if ($mail_parms) { |
$address .= '?' . join('&', $mail_parms); |
} |
$encode = (empty($params[ 'encode' ])) ? 'none' : $params[ 'encode' ]; |
if (!isset($_allowed_encoding[ $encode ])) { |
trigger_error( |
"mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", |
E_USER_WARNING |
); |
return; |
} |
// FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed! |
if ($encode === 'javascript') { |
$string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');'; |
$js_encode = ''; |
for ($x = 0, $_length = strlen($string); $x < $_length; $x++) { |
$js_encode .= '%' . bin2hex($string[ $x ]); |
} |
return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>'; |
} elseif ($encode === 'javascript_charcode') { |
$string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>'; |
for ($x = 0, $y = strlen($string); $x < $y; $x++) { |
$ord[] = ord($string[ $x ]); |
} |
$_ret = "<script type=\"text/javascript\" language=\"javascript\">\n" . "{document.write(String.fromCharCode(" . |
implode(',', $ord) . "))" . "}\n" . "</script>\n"; |
return $_ret; |
} elseif ($encode === 'hex') { |
preg_match('!^(.*)(\?.*)$!', $address, $match); |
if (!empty($match[ 2 ])) { |
trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING); |
return; |
} |
$address_encode = ''; |
for ($x = 0, $_length = strlen($address); $x < $_length; $x++) { |
if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[ $x ])) { |
$address_encode .= '%' . bin2hex($address[ $x ]); |
} else { |
$address_encode .= $address[ $x ]; |
} |
} |
$text_encode = ''; |
for ($x = 0, $_length = strlen($text); $x < $_length; $x++) { |
$text_encode .= '&#x' . bin2hex($text[ $x ]) . ';'; |
} |
$mailto = "mailto:"; |
return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>'; |
} else { |
// no encoding |
return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>'; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/function.math.php |
---|
0,0 → 1,112 |
<?php |
/** |
* Smarty plugin |
* This plugin is only for Smarty2 BC |
* |
* @package Smarty |
* @subpackage PluginsFunction |
*/ |
/** |
* Smarty {math} function plugin |
* Type: function |
* Name: math |
* Purpose: handle math computations in template |
* |
* @link http://www.smarty.net/manual/en/language.function.math.php {math} |
* (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param array $params parameters |
* @param Smarty_Internal_Template $template template object |
* |
* @return string|null |
*/ |
function smarty_function_math($params, $template) |
{ |
static $_allowed_funcs = |
array( |
'int' => true, |
'abs' => true, |
'ceil' => true, |
'cos' => true, |
'exp' => true, |
'floor' => true, |
'log' => true, |
'log10' => true, |
'max' => true, |
'min' => true, |
'pi' => true, |
'pow' => true, |
'rand' => true, |
'round' => true, |
'sin' => true, |
'sqrt' => true, |
'srand' => true, |
'tan' => true |
); |
// be sure equation parameter is present |
if (empty($params[ 'equation' ])) { |
trigger_error("math: missing equation parameter", E_USER_WARNING); |
return; |
} |
$equation = $params[ 'equation' ]; |
// make sure parenthesis are balanced |
if (substr_count($equation, '(') !== substr_count($equation, ')')) { |
trigger_error("math: unbalanced parenthesis", E_USER_WARNING); |
return; |
} |
// disallow backticks |
if (strpos($equation, '`') !== false) { |
trigger_error("math: backtick character not allowed in equation", E_USER_WARNING); |
return; |
} |
// also disallow dollar signs |
if (strpos($equation, '$') !== false) { |
trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING); |
return; |
} |
foreach ($params as $key => $val) { |
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') { |
// make sure value is not empty |
if (strlen($val) === 0) { |
trigger_error("math: parameter '{$key}' is empty", E_USER_WARNING); |
return; |
} |
if (!is_numeric($val)) { |
trigger_error("math: parameter '{$key}' is not numeric", E_USER_WARNING); |
return; |
} |
} |
} |
// match all vars in equation, make sure all are passed |
preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match); |
foreach ($match[ 1 ] as $curr_var) { |
if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) { |
trigger_error( |
"math: function call '{$curr_var}' not allowed, or missing parameter '{$curr_var}'", |
E_USER_WARNING |
); |
return; |
} |
} |
foreach ($params as $key => $val) { |
if ($key !== 'equation' && $key !== 'format' && $key !== 'assign') { |
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation); |
} |
} |
$smarty_math_result = null; |
eval("\$smarty_math_result = " . $equation . ";"); |
if (empty($params[ 'format' ])) { |
if (empty($params[ 'assign' ])) { |
return $smarty_math_result; |
} else { |
$template->assign($params[ 'assign' ], $smarty_math_result); |
} |
} else { |
if (empty($params[ 'assign' ])) { |
printf($params[ 'format' ], $smarty_math_result); |
} else { |
$template->assign($params[ 'assign' ], sprintf($params[ 'format' ], $smarty_math_result)); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.capitalize.php |
---|
0,0 → 1,145 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty capitalize modifier plugin |
* Type: modifier |
* Name: capitalize |
* Purpose: capitalize words in the string |
* {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }} |
* |
* @param string $string string to capitalize |
* @param boolean $uc_digits also capitalize "x123" to "X123" |
* @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa" |
* |
* @return string capitalized string |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Rodney Rehm |
*/ |
function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false) |
{ |
if (Smarty::$_MBSTRING) { |
if ($lc_rest) { |
// uppercase (including hyphenated words) |
$upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET); |
} else { |
// uppercase word breaks |
$upper_string = preg_replace_callback( |
"!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, |
'smarty_mod_cap_mbconvert_cb', |
$string |
); |
} |
// check uc_digits case |
if (!$uc_digits) { |
if (preg_match_all( |
"!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, |
$string, |
$matches, |
PREG_OFFSET_CAPTURE |
) |
) { |
foreach ($matches[ 1 ] as $match) { |
$upper_string = |
substr_replace( |
$upper_string, |
mb_strtolower($match[ 0 ], Smarty::$_CHARSET), |
$match[ 1 ], |
strlen($match[ 0 ]) |
); |
} |
} |
} |
$upper_string = |
preg_replace_callback( |
"!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, |
'smarty_mod_cap_mbconvert2_cb', |
$upper_string |
); |
return $upper_string; |
} |
// lowercase first |
if ($lc_rest) { |
$string = strtolower($string); |
} |
// uppercase (including hyphenated words) |
$upper_string = |
preg_replace_callback( |
"!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, |
'smarty_mod_cap_ucfirst_cb', |
$string |
); |
// check uc_digits case |
if (!$uc_digits) { |
if (preg_match_all( |
"!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, |
$string, |
$matches, |
PREG_OFFSET_CAPTURE |
) |
) { |
foreach ($matches[ 1 ] as $match) { |
$upper_string = |
substr_replace($upper_string, strtolower($match[ 0 ]), $match[ 1 ], strlen($match[ 0 ])); |
} |
} |
} |
$upper_string = preg_replace_callback( |
"!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, |
'smarty_mod_cap_ucfirst2_cb', |
$upper_string |
); |
return $upper_string; |
} |
/** |
* |
* Bug: create_function() use exhausts memory when used in long loops |
* Fix: use declared functions for callbacks instead of using create_function() |
* Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3 |
* |
* @author Kyle Renfrow |
*/ |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_mbconvert_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 2 ]), MB_CASE_UPPER, Smarty::$_CHARSET); |
} |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_mbconvert2_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . mb_convert_case(stripslashes($matches[ 3 ]), MB_CASE_UPPER, Smarty::$_CHARSET); |
} |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_ucfirst_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 2 ])); |
} |
/** |
* @param $matches |
* |
* @return string |
*/ |
function smarty_mod_cap_ucfirst2_cb($matches) |
{ |
return stripslashes($matches[ 1 ]) . ucfirst(stripslashes($matches[ 3 ])); |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.date_format.php |
---|
0,0 → 1,85 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty date_format modifier plugin |
* Type: modifier |
* Name: date_format |
* Purpose: format datestamps via strftime |
* Input: |
* - string: input date string |
* - format: strftime format for output |
* - default_date: default date if $string is empty |
* |
* @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string input date string |
* @param string $format strftime format for output |
* @param string $default_date default date if $string is empty |
* @param string $formatter either 'strftime' or 'auto' |
* |
* @return string |void |
* @uses smarty_make_timestamp() |
*/ |
function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto') |
{ |
if ($format === null) { |
$format = Smarty::$_DATE_FORMAT; |
} |
/** |
* require_once the {@link shared.make_timestamp.php} plugin |
*/ |
static $is_loaded = false; |
if (!$is_loaded) { |
if (!is_callable('smarty_make_timestamp')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php'; |
} |
$is_loaded = true; |
} |
if (!empty($string) && $string !== '0000-00-00' && $string !== '0000-00-00 00:00:00') { |
$timestamp = smarty_make_timestamp($string); |
} elseif (!empty($default_date)) { |
$timestamp = smarty_make_timestamp($default_date); |
} else { |
return; |
} |
if ($formatter === 'strftime' || ($formatter === 'auto' && strpos($format, '%') !== false)) { |
if (Smarty::$_IS_WINDOWS) { |
$_win_from = array( |
'%D', |
'%h', |
'%n', |
'%r', |
'%R', |
'%t', |
'%T' |
); |
$_win_to = array( |
'%m/%d/%y', |
'%b', |
"\n", |
'%I:%M:%S %p', |
'%H:%M', |
"\t", |
'%H:%M:%S' |
); |
if (strpos($format, '%e') !== false) { |
$_win_from[] = '%e'; |
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp)); |
} |
if (strpos($format, '%l') !== false) { |
$_win_from[] = '%l'; |
$_win_to[] = sprintf('%\' 2d', date('h', $timestamp)); |
} |
$format = str_replace($_win_from, $_win_to, $format); |
} |
return strftime($format, $timestamp); |
} else { |
return date($format, $timestamp); |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.debug_print_var.php |
---|
0,0 → 1,103 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage Debug |
*/ |
/** |
* Smarty debug_print_var modifier plugin |
* Type: modifier |
* Name: debug_print_var |
* Purpose: formats variable contents for display in the console |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param array|object $var variable to be formatted |
* @param int $max maximum recursion depth if $var is an array or object |
* @param int $length maximum string length if $var is a string |
* @param int $depth actual recursion depth |
* @param array $objects processed objects in actual depth to prevent recursive object processing |
* |
* @return string |
*/ |
function smarty_modifier_debug_print_var($var, $max = 10, $length = 40, $depth = 0, $objects = array()) |
{ |
$_replace = array("\n" => '\n', "\r" => '\r', "\t" => '\t'); |
switch (gettype($var)) { |
case 'array': |
$results = '<b>Array (' . count($var) . ')</b>'; |
if ($depth === $max) { |
break; |
} |
foreach ($var as $curr_key => $curr_val) { |
$results .= '<br>' . str_repeat(' ', $depth * 2) . '<b>' . strtr($curr_key, $_replace) . |
'</b> => ' . |
smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects); |
$depth--; |
} |
break; |
case 'object': |
$object_vars = get_object_vars($var); |
$results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>'; |
if (in_array($var, $objects)) { |
$results .= ' called recursive'; |
break; |
} |
if ($depth === $max) { |
break; |
} |
$objects[] = $var; |
foreach ($object_vars as $curr_key => $curr_val) { |
$results .= '<br>' . str_repeat(' ', $depth * 2) . '<b> ->' . strtr($curr_key, $_replace) . |
'</b> = ' . smarty_modifier_debug_print_var($curr_val, $max, $length, ++$depth, $objects); |
$depth--; |
} |
break; |
case 'boolean': |
case 'NULL': |
case 'resource': |
if (true === $var) { |
$results = 'true'; |
} elseif (false === $var) { |
$results = 'false'; |
} elseif (null === $var) { |
$results = 'null'; |
} else { |
$results = htmlspecialchars((string)$var); |
} |
$results = '<i>' . $results . '</i>'; |
break; |
case 'integer': |
case 'float': |
$results = htmlspecialchars((string)$var); |
break; |
case 'string': |
$results = strtr($var, $_replace); |
if (Smarty::$_MBSTRING) { |
if (mb_strlen($var, Smarty::$_CHARSET) > $length) { |
$results = mb_substr($var, 0, $length - 3, Smarty::$_CHARSET) . '...'; |
} |
} else { |
if (isset($var[ $length ])) { |
$results = substr($var, 0, $length - 3) . '...'; |
} |
} |
$results = htmlspecialchars('"' . $results . '"', ENT_QUOTES, Smarty::$_CHARSET); |
break; |
case 'unknown type': |
default: |
$results = strtr((string)$var, $_replace); |
if (Smarty::$_MBSTRING) { |
if (mb_strlen($results, Smarty::$_CHARSET) > $length) { |
$results = mb_substr($results, 0, $length - 3, Smarty::$_CHARSET) . '...'; |
} |
} else { |
if (strlen($results) > $length) { |
$results = substr($results, 0, $length - 3) . '...'; |
} |
} |
$results = htmlspecialchars($results, ENT_QUOTES, Smarty::$_CHARSET); |
} |
return $results; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.escape.php |
---|
0,0 → 1,255 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty escape modifier plugin |
* Type: modifier |
* Name: escape |
* Purpose: escape string for output |
* |
* @link http://www.smarty.net/docs/en/language.modifier.escape |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string input string |
* @param string $esc_type escape type |
* @param string $char_set character set, used for htmlspecialchars() or htmlentities() |
* @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities() |
* |
* @return string escaped input string |
*/ |
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true) |
{ |
static $_double_encode = null; |
static $is_loaded_1 = false; |
static $is_loaded_2 = false; |
if ($_double_encode === null) { |
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); |
} |
if (!$char_set) { |
$char_set = Smarty::$_CHARSET; |
} |
switch ($esc_type) { |
case 'html': |
if ($_double_encode) { |
// php >=5.3.2 - go native |
return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode); |
} else { |
if ($double_encode) { |
// php <5.2.3 - only handle double encoding |
return htmlspecialchars($string, ENT_QUOTES, $char_set); |
} else { |
// php <5.2.3 - prevent double encoding |
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); |
$string = htmlspecialchars($string, ENT_QUOTES, $char_set); |
$string = str_replace( |
array( |
'%%%SMARTY_START%%%', |
'%%%SMARTY_END%%%' |
), |
array( |
'&', |
';' |
), |
$string |
); |
return $string; |
} |
} |
// no break |
case 'htmlall': |
if (Smarty::$_MBSTRING) { |
// mb_convert_encoding ignores htmlspecialchars() |
if ($_double_encode) { |
// php >=5.3.2 - go native |
$string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode); |
} else { |
if ($double_encode) { |
// php <5.2.3 - only handle double encoding |
$string = htmlspecialchars($string, ENT_QUOTES, $char_set); |
} else { |
// php <5.2.3 - prevent double encoding |
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); |
$string = htmlspecialchars($string, ENT_QUOTES, $char_set); |
$string = |
str_replace( |
array( |
'%%%SMARTY_START%%%', |
'%%%SMARTY_END%%%' |
), |
array( |
'&', |
';' |
), |
$string |
); |
return $string; |
} |
} |
// htmlentities() won't convert everything, so use mb_convert_encoding |
return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set); |
} |
// no MBString fallback |
if ($_double_encode) { |
return htmlentities($string, ENT_QUOTES, $char_set, $double_encode); |
} else { |
if ($double_encode) { |
return htmlentities($string, ENT_QUOTES, $char_set); |
} else { |
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); |
$string = htmlentities($string, ENT_QUOTES, $char_set); |
$string = str_replace( |
array( |
'%%%SMARTY_START%%%', |
'%%%SMARTY_END%%%' |
), |
array( |
'&', |
';' |
), |
$string |
); |
return $string; |
} |
} |
// no break |
case 'url': |
return rawurlencode($string); |
case 'urlpathinfo': |
return str_replace('%2F', '/', rawurlencode($string)); |
case 'quotes': |
// escape unescaped single quotes |
return preg_replace("%(?<!\\\\)'%", "\\'", $string); |
case 'hex': |
// escape every byte into hex |
// Note that the UTF-8 encoded character ä will be represented as %c3%a4 |
$return = ''; |
$_length = strlen($string); |
for ($x = 0; $x < $_length; $x++) { |
$return .= '%' . bin2hex($string[ $x ]); |
} |
return $return; |
case 'hexentity': |
$return = ''; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_1) { |
if (!is_callable('smarty_mb_to_unicode')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; |
} |
$is_loaded_1 = true; |
} |
$return = ''; |
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { |
$return .= '&#x' . strtoupper(dechex($unicode)) . ';'; |
} |
return $return; |
} |
// no MBString fallback |
$_length = strlen($string); |
for ($x = 0; $x < $_length; $x++) { |
$return .= '&#x' . bin2hex($string[ $x ]) . ';'; |
} |
return $return; |
case 'decentity': |
$return = ''; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_1) { |
if (!is_callable('smarty_mb_to_unicode')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; |
} |
$is_loaded_1 = true; |
} |
$return = ''; |
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { |
$return .= '&#' . $unicode . ';'; |
} |
return $return; |
} |
// no MBString fallback |
$_length = strlen($string); |
for ($x = 0; $x < $_length; $x++) { |
$return .= '&#' . ord($string[ $x ]) . ';'; |
} |
return $return; |
case 'javascript': |
// escape quotes and backslashes, newlines, etc. |
return strtr( |
$string, |
array( |
'\\' => '\\\\', |
"'" => "\\'", |
'"' => '\\"', |
"\r" => '\\r', |
"\n" => '\\n', |
'</' => '<\/' |
) |
); |
case 'mail': |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_2) { |
if (!is_callable('smarty_mb_str_replace')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'; |
} |
$is_loaded_2 = true; |
} |
return smarty_mb_str_replace( |
array( |
'@', |
'.' |
), |
array( |
' [AT] ', |
' [DOT] ' |
), |
$string |
); |
} |
// no MBString fallback |
return str_replace( |
array( |
'@', |
'.' |
), |
array( |
' [AT] ', |
' [DOT] ' |
), |
$string |
); |
case 'nonstd': |
// escape non-standard chars, such as ms document quotes |
$return = ''; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded_1) { |
if (!is_callable('smarty_mb_to_unicode')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php'; |
} |
$is_loaded_1 = true; |
} |
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) { |
if ($unicode >= 126) { |
$return .= '&#' . $unicode . ';'; |
} else { |
$return .= chr($unicode); |
} |
} |
return $return; |
} |
$_length = strlen($string); |
for ($_i = 0; $_i < $_length; $_i++) { |
$_ord = ord(substr($string, $_i, 1)); |
// non-standard char, escape it |
if ($_ord >= 126) { |
$return .= '&#' . $_ord . ';'; |
} else { |
$return .= substr($string, $_i, 1); |
} |
} |
return $return; |
default: |
return $string; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.mb_wordwrap.php |
---|
0,0 → 1,71 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty wordwrap modifier plugin |
* Type: modifier |
* Name: mb_wordwrap |
* Purpose: Wrap a string to a given number of characters |
* |
* @link http://php.net/manual/en/function.wordwrap.php for similarity |
* |
* @param string $str the string to wrap |
* @param int $width the width of the output |
* @param string $break the character used to break the line |
* @param boolean $cut ignored parameter, just for the sake of |
* |
* @return string wrapped string |
* @author Rodney Rehm |
*/ |
function smarty_modifier_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false) |
{ |
// break words into tokens using white space as a delimiter |
$tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); |
$length = 0; |
$t = ''; |
$_previous = false; |
$_space = false; |
foreach ($tokens as $_token) { |
$token_length = mb_strlen($_token, Smarty::$_CHARSET); |
$_tokens = array($_token); |
if ($token_length > $width) { |
if ($cut) { |
$_tokens = preg_split( |
'!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, |
$_token, |
-1, |
PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE |
); |
} |
} |
foreach ($_tokens as $token) { |
$_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token); |
$token_length = mb_strlen($token, Smarty::$_CHARSET); |
$length += $token_length; |
if ($length > $width) { |
// remove space before inserted break |
if ($_previous) { |
$t = mb_substr($t, 0, -1, Smarty::$_CHARSET); |
} |
if (!$_space) { |
// add the break before the token |
if (!empty($t)) { |
$t .= $break; |
} |
$length = $token_length; |
} |
} elseif ($token === "\n") { |
// hard break must reset counters |
$length = 0; |
} |
$_previous = $_space; |
// add the token |
$t .= $token; |
} |
} |
return $t; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.regex_replace.php |
---|
0,0 → 1,55 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty regex_replace modifier plugin |
* Type: modifier |
* Name: regex_replace |
* Purpose: regular expression search/replace |
* |
* @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php |
* regex_replace (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string input string |
* @param string|array $search regular expression(s) to search for |
* @param string|array $replace string(s) that should be replaced |
* @param int $limit the maximum number of replacements |
* |
* @return string |
*/ |
function smarty_modifier_regex_replace($string, $search, $replace, $limit = -1) |
{ |
if (is_array($search)) { |
foreach ($search as $idx => $s) { |
$search[ $idx ] = _smarty_regex_replace_check($s); |
} |
} else { |
$search = _smarty_regex_replace_check($search); |
} |
return preg_replace($search, $replace, $string, $limit); |
} |
/** |
* @param string $search string(s) that should be replaced |
* |
* @return string |
* @ignore |
*/ |
function _smarty_regex_replace_check($search) |
{ |
// null-byte injection detection |
// anything behind the first null-byte is ignored |
if (($pos = strpos($search, "\0")) !== false) { |
$search = substr($search, 0, $pos); |
} |
// remove eval-modifier from $search |
if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[ 1 ], 'e') !== false)) { |
$search = substr($search, 0, -strlen($match[ 1 ])) . preg_replace('![e\s]+!', '', $match[ 1 ]); |
} |
return $search; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.replace.php |
---|
0,0 → 1,37 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty replace modifier plugin |
* Type: modifier |
* Name: replace |
* Purpose: simple search/replace |
* |
* @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Uwe Tews |
* |
* @param string $string input string |
* @param string $search text to search for |
* @param string $replace replacement text |
* |
* @return string |
*/ |
function smarty_modifier_replace($string, $search, $replace) |
{ |
static $is_loaded = false; |
if (Smarty::$_MBSTRING) { |
if (!$is_loaded) { |
if (!is_callable('smarty_mb_str_replace')) { |
include_once SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php'; |
} |
$is_loaded = true; |
} |
return smarty_mb_str_replace($search, $replace, $string); |
} |
return str_replace($search, $replace, $string); |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.spacify.php |
---|
0,0 → 1,26 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty spacify modifier plugin |
* Type: modifier |
* Name: spacify |
* Purpose: add spaces between characters in a string |
* |
* @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string input string |
* @param string $spacify_char string to insert between characters. |
* |
* @return string |
*/ |
function smarty_modifier_spacify($string, $spacify_char = ' ') |
{ |
// well… what about charsets besides latin and UTF-8? |
return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY)); |
} |
/web/acc/manager/vnstat/smarty/plugins/modifier.truncate.php |
---|
0,0 → 1,62 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifier |
*/ |
/** |
* Smarty truncate modifier plugin |
* Type: modifier |
* Name: truncate |
* Purpose: Truncate a string to a certain length if necessary, |
* optionally splitting in the middle of a word, and |
* appending the $etc string or inserting $etc into the middle. |
* |
* @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string input string |
* @param integer $length length of truncated text |
* @param string $etc end string |
* @param boolean $break_words truncate at word boundary |
* @param boolean $middle truncate in the middle of text |
* |
* @return string truncated string |
*/ |
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) |
{ |
if ($length === 0) { |
return ''; |
} |
if (Smarty::$_MBSTRING) { |
if (mb_strlen($string, Smarty::$_CHARSET) > $length) { |
$length -= min($length, mb_strlen($etc, Smarty::$_CHARSET)); |
if (!$break_words && !$middle) { |
$string = preg_replace( |
'/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, |
'', |
mb_substr($string, 0, $length + 1, Smarty::$_CHARSET) |
); |
} |
if (!$middle) { |
return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc; |
} |
return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . |
mb_substr($string, -$length / 2, $length, Smarty::$_CHARSET); |
} |
return $string; |
} |
// no MBString fallback |
if (isset($string[ $length ])) { |
$length -= min($length, strlen($etc)); |
if (!$break_words && !$middle) { |
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1)); |
} |
if (!$middle) { |
return substr($string, 0, $length) . $etc; |
} |
return substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2); |
} |
return $string; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.cat.php |
---|
0,0 → 1,28 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty cat modifier plugin |
* Type: modifier |
* Name: cat |
* Date: Feb 24, 2003 |
* Purpose: catenate a value to a variable |
* Input: string to catenate |
* Example: {$var|cat:"foo"} |
* |
* @link http://smarty.php.net/manual/en/language.modifier.cat.php cat |
* (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_cat($params) |
{ |
return '(' . implode(').(', $params) . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_characters.php |
---|
0,0 → 1,32 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_characters modifier plugin |
* Type: modifier |
* Name: count_characters |
* Purpose: count the number of characters in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online |
* manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_count_characters($params) |
{ |
if (!isset($params[ 1 ]) || $params[ 1 ] !== 'true') { |
return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[ 0 ] . ', $tmp)'; |
} |
if (Smarty::$_MBSTRING) { |
return 'mb_strlen(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; |
} |
// no MBString fallback |
return 'strlen(' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_paragraphs.php |
---|
0,0 → 1,26 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_paragraphs modifier plugin |
* Type: modifier |
* Name: count_paragraphs |
* Purpose: count the number of paragraphs in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php |
* count_paragraphs (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_count_paragraphs($params) |
{ |
// count \r or \n characters |
return '(preg_match_all(\'#[\r\n]+#\', ' . $params[ 0 ] . ', $tmp)+1)'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_sentences.php |
---|
0,0 → 1,26 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_sentences modifier plugin |
* Type: modifier |
* Name: count_sentences |
* Purpose: count the number of sentences in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php |
* count_sentences (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_count_sentences($params) |
{ |
// find periods, question marks, exclamation marks with a word before but not after. |
return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[ 0 ] . ', $tmp)'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.count_words.php |
---|
0,0 → 1,31 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty count_words modifier plugin |
* Type: modifier |
* Name: count_words |
* Purpose: count the number of words in a text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_count_words($params) |
{ |
if (Smarty::$_MBSTRING) { |
// return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)'; |
// expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592 |
return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . |
$params[ 0 ] . ', $tmp)'; |
} |
// no MBString fallback |
return 'str_word_count(' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.default.php |
---|
0,0 → 1,32 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty default modifier plugin |
* Type: modifier |
* Name: default |
* Purpose: designate default value for empty variables |
* |
* @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_default($params) |
{ |
$output = $params[ 0 ]; |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = "''"; |
} |
array_shift($params); |
foreach ($params as $param) { |
$output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)'; |
} |
return $output; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.escape.php |
---|
0,0 → 1,112 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty escape modifier plugin |
* Type: modifier |
* Name: escape |
* Purpose: escape string for output |
* |
* @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual) |
* @author Rodney Rehm |
* |
* @param array $params parameters |
* @param Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @return string with compiled code |
* @throws \SmartyException |
*/ |
function smarty_modifiercompiler_escape($params, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
static $_double_encode = null; |
static $is_loaded = false; |
$compiler->template->_checkPlugins( |
array( |
array( |
'function' => 'smarty_literal_compiler_param', |
'file' => SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php' |
) |
) |
); |
if ($_double_encode === null) { |
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>='); |
} |
try { |
$esc_type = smarty_literal_compiler_param($params, 1, 'html'); |
$char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET); |
$double_encode = smarty_literal_compiler_param($params, 3, true); |
if (!$char_set) { |
$char_set = Smarty::$_CHARSET; |
} |
switch ($esc_type) { |
case 'html': |
if ($_double_encode) { |
return 'htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' . |
var_export($double_encode, true) . ')'; |
} elseif ($double_encode) { |
return 'htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')'; |
} else { |
// fall back to modifier.escape.php |
} |
// no break |
case 'htmlall': |
if (Smarty::$_MBSTRING) { |
if ($_double_encode) { |
// php >=5.2.3 - go native |
return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . |
var_export($char_set, true) . ', ' . var_export($double_encode, true) . |
'), "HTML-ENTITIES", ' . var_export($char_set, true) . ')'; |
} elseif ($double_encode) { |
// php <5.2.3 - only handle double encoding |
return 'mb_convert_encoding(htmlspecialchars(' . $params[ 0 ] . ', ENT_QUOTES, ' . |
var_export($char_set, true) . '), "HTML-ENTITIES", ' . var_export($char_set, true) . ')'; |
} else { |
// fall back to modifier.escape.php |
} |
} |
// no MBString fallback |
if ($_double_encode) { |
// php >=5.2.3 - go native |
return 'htmlentities(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ', ' . |
var_export($double_encode, true) . ')'; |
} elseif ($double_encode) { |
// php <5.2.3 - only handle double encoding |
return 'htmlentities(' . $params[ 0 ] . ', ENT_QUOTES, ' . var_export($char_set, true) . ')'; |
} else { |
// fall back to modifier.escape.php |
} |
// no break |
case 'url': |
return 'rawurlencode(' . $params[ 0 ] . ')'; |
case 'urlpathinfo': |
return 'str_replace("%2F", "/", rawurlencode(' . $params[ 0 ] . '))'; |
case 'quotes': |
// escape unescaped single quotes |
return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[ 0 ] . ')'; |
case 'javascript': |
// escape quotes and backslashes, newlines, etc. |
return 'strtr(' . |
$params[ 0 ] . |
', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))'; |
} |
} catch (SmartyException $e) { |
// pass through to regular plugin fallback |
} |
// could not optimize |escape call, so fallback to regular plugin |
if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) { |
$compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'file' ] = |
SMARTY_PLUGINS_DIR . 'modifier.escape.php'; |
$compiler->required_plugins[ 'nocache' ][ 'escape' ][ 'modifier' ][ 'function' ] = |
'smarty_modifier_escape'; |
} else { |
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'file' ] = |
SMARTY_PLUGINS_DIR . 'modifier.escape.php'; |
$compiler->required_plugins[ 'compiled' ][ 'escape' ][ 'modifier' ][ 'function' ] = |
'smarty_modifier_escape'; |
} |
return 'smarty_modifier_escape(' . join(', ', $params) . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.from_charset.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty from_charset modifier plugin |
* Type: modifier |
* Name: from_charset |
* Purpose: convert character encoding from $charset to internal encoding |
* |
* @author Rodney Rehm |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_from_charset($params) |
{ |
if (!Smarty::$_MBSTRING) { |
// FIXME: (rodneyrehm) shouldn't this throw an error? |
return $params[ 0 ]; |
} |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = '"ISO-8859-1"'; |
} |
return 'mb_convert_encoding(' . $params[ 0 ] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[ 1 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.indent.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty indent modifier plugin |
* Type: modifier |
* Name: indent |
* Purpose: indent lines of text |
* |
* @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_indent($params) |
{ |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = 4; |
} |
if (!isset($params[ 2 ])) { |
$params[ 2 ] = "' '"; |
} |
return 'preg_replace(\'!^!m\',str_repeat(' . $params[ 2 ] . ',' . $params[ 1 ] . '),' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.lower.php |
---|
0,0 → 1,29 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty lower modifier plugin |
* Type: modifier |
* Name: lower |
* Purpose: convert string to lowercase |
* |
* @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual) |
* @author Monte Ohrt <monte at ohrt dot com> |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_lower($params) |
{ |
if (Smarty::$_MBSTRING) { |
return 'mb_strtolower(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; |
} |
// no MBString fallback |
return 'strtolower(' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.noprint.php |
---|
0,0 → 1,20 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty noprint modifier plugin |
* Type: modifier |
* Name: noprint |
* Purpose: return an empty string |
* |
* @author Uwe Tews |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_noprint() |
{ |
return "''"; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.string_format.php |
---|
0,0 → 1,24 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty string_format modifier plugin |
* Type: modifier |
* Name: string_format |
* Purpose: format strings via sprintf |
* |
* @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_string_format($params) |
{ |
return 'sprintf(' . $params[ 1 ] . ',' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.strip.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty strip modifier plugin |
* Type: modifier |
* Name: strip |
* Purpose: Replace all repeated spaces, newlines, tabs |
* with a single space or supplied replacement string. |
* Example: {$var|strip} {$var|strip:" "} |
* Date: September 25th, 2002 |
* |
* @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_strip($params) |
{ |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = "' '"; |
} |
return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})"; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.strip_tags.php |
---|
0,0 → 1,28 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty strip_tags modifier plugin |
* Type: modifier |
* Name: strip_tags |
* Purpose: strip html tags from text |
* |
* @link http://www.smarty.net/docs/en/language.modifier.strip.tags.tpl strip_tags (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_strip_tags($params) |
{ |
if (!isset($params[ 1 ]) || $params[ 1 ] === true || trim($params[ 1 ], '"') === 'true') { |
return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})"; |
} else { |
return 'strip_tags(' . $params[ 0 ] . ')'; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.to_charset.php |
---|
0,0 → 1,30 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty to_charset modifier plugin |
* Type: modifier |
* Name: to_charset |
* Purpose: convert character encoding from internal encoding to $charset |
* |
* @author Rodney Rehm |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_to_charset($params) |
{ |
if (!Smarty::$_MBSTRING) { |
// FIXME: (rodneyrehm) shouldn't this throw an error? |
return $params[ 0 ]; |
} |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = '"ISO-8859-1"'; |
} |
return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 1 ] . ', "' . addslashes(Smarty::$_CHARSET) . '")'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.unescape.php |
---|
0,0 → 1,44 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty unescape modifier plugin |
* Type: modifier |
* Name: unescape |
* Purpose: unescape html entities |
* |
* @author Rodney Rehm |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_unescape($params) |
{ |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = 'html'; |
} |
if (!isset($params[ 2 ])) { |
$params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\''; |
} else { |
$params[ 2 ] = "'{$params[ 2 ]}'"; |
} |
switch (trim($params[ 1 ], '"\'')) { |
case 'entity': |
case 'htmlall': |
if (Smarty::$_MBSTRING) { |
return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'HTML-ENTITIES\')'; |
} |
return 'html_entity_decode(' . $params[ 0 ] . ', ENT_NOQUOTES, ' . $params[ 2 ] . ')'; |
case 'html': |
return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)'; |
case 'url': |
return 'rawurldecode(' . $params[ 0 ] . ')'; |
default: |
return $params[ 0 ]; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.upper.php |
---|
0,0 → 1,28 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty upper modifier plugin |
* Type: modifier |
* Name: lower |
* Purpose: convert string to uppercase |
* |
* @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* |
* @return string with compiled code |
*/ |
function smarty_modifiercompiler_upper($params) |
{ |
if (Smarty::$_MBSTRING) { |
return 'mb_strtoupper(' . $params[ 0 ] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')'; |
} |
// no MBString fallback |
return 'strtoupper(' . $params[ 0 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/modifiercompiler.wordwrap.php |
---|
0,0 → 1,39 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsModifierCompiler |
*/ |
/** |
* Smarty wordwrap modifier plugin |
* Type: modifier |
* Name: wordwrap |
* Purpose: wrap a string of text at a given length |
* |
* @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual) |
* @author Uwe Tews |
* |
* @param array $params parameters |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @return string with compiled code |
* @throws \SmartyException |
*/ |
function smarty_modifiercompiler_wordwrap($params, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
if (!isset($params[ 1 ])) { |
$params[ 1 ] = 80; |
} |
if (!isset($params[ 2 ])) { |
$params[ 2 ] = '"\n"'; |
} |
if (!isset($params[ 3 ])) { |
$params[ 3 ] = 'false'; |
} |
$function = 'wordwrap'; |
if (Smarty::$_MBSTRING) { |
$function = $compiler->getPlugin('mb_wordwrap', 'modifier'); |
} |
return $function . '(' . $params[ 0 ] . ',' . $params[ 1 ] . ',' . $params[ 2 ] . ',' . $params[ 3 ] . ')'; |
} |
/web/acc/manager/vnstat/smarty/plugins/outputfilter.trimwhitespace.php |
---|
0,0 → 1,89 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFilter |
*/ |
/** |
* Smarty trimwhitespace outputfilter plugin |
* Trim unnecessary whitespace from HTML markup. |
* |
* @author Rodney Rehm |
* |
* @param string $source input string |
* |
* @return string filtered output |
* @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail! |
*/ |
function smarty_outputfilter_trimwhitespace($source) |
{ |
$store = array(); |
$_store = 0; |
$_offset = 0; |
// Unify Line-Breaks to \n |
$source = preg_replace('/\015\012|\015|\012/', "\n", $source); |
// capture Internet Explorer and KnockoutJS Conditional Comments |
if (preg_match_all( |
'#<!--((\[[^\]]+\]>.*?<!\[[^\]]+\])|(\s*/?ko\s+.+))-->#is', |
$source, |
$matches, |
PREG_OFFSET_CAPTURE | PREG_SET_ORDER |
) |
) { |
foreach ($matches as $match) { |
$store[] = $match[ 0 ][ 0 ]; |
$_length = strlen($match[ 0 ][ 0 ]); |
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; |
$source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); |
$_offset += $_length - strlen($replace); |
$_store++; |
} |
} |
// Strip all HTML-Comments |
// yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124 |
$source = preg_replace('#<!--.*?-->#ms', '', $source); |
// capture html elements not to be messed with |
$_offset = 0; |
if (preg_match_all( |
'#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', |
$source, |
$matches, |
PREG_OFFSET_CAPTURE | PREG_SET_ORDER |
) |
) { |
foreach ($matches as $match) { |
$store[] = $match[ 0 ][ 0 ]; |
$_length = strlen($match[ 0 ][ 0 ]); |
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; |
$source = substr_replace($source, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); |
$_offset += $_length - strlen($replace); |
$_store++; |
} |
} |
$expressions = array(// replace multiple spaces between tags by a single space |
// can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements |
'#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2', |
// remove spaces between attributes (but not in attribute values!) |
'#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', |
// note: for some very weird reason trim() seems to remove spaces inside attributes. |
// maybe a \0 byte or something is interfering? |
'#^\s+<#Ss' => '<', |
'#>\s+$#Ss' => '>', |
); |
$source = preg_replace(array_keys($expressions), array_values($expressions), $source); |
// note: for some very weird reason trim() seems to remove spaces inside attributes. |
// maybe a \0 byte or something is interfering? |
// $source = trim( $source ); |
$_offset = 0; |
if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) { |
foreach ($matches as $match) { |
$_length = strlen($match[ 0 ][ 0 ]); |
$replace = $store[ $match[ 1 ][ 0 ] ]; |
$source = substr_replace($source, $replace, $match[ 0 ][ 1 ] + $_offset, $_length); |
$_offset += strlen($replace) - $_length; |
$_store++; |
} |
} |
return $source; |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.escape_special_chars.php |
---|
0,0 → 1,32 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* escape_special_chars common function |
* Function: smarty_function_escape_special_chars |
* Purpose: used by other smarty functions to escape |
* special chars except for already escaped ones |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param string $string text that should by escaped |
* |
* @return string |
*/ |
function smarty_function_escape_special_chars($string) |
{ |
if (!is_array($string)) { |
if (version_compare(PHP_VERSION, '5.2.3', '>=')) { |
$string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false); |
} else { |
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); |
$string = htmlspecialchars($string); |
$string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string); |
} |
} |
return $string; |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.literal_compiler_param.php |
---|
0,0 → 1,35 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* evaluate compiler parameter |
* |
* @param array $params parameter array as given to the compiler function |
* @param integer $index array index of the parameter to convert |
* @param mixed $default value to be returned if the parameter is not present |
* |
* @return mixed evaluated value of parameter or $default |
* @throws SmartyException if parameter is not a literal (but an expression, variable, …) |
* @author Rodney Rehm |
*/ |
function smarty_literal_compiler_param($params, $index, $default = null) |
{ |
// not set, go default |
if (!isset($params[ $index ])) { |
return $default; |
} |
// test if param is a literal |
if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[ $index ])) { |
throw new SmartyException( |
'$param[' . $index . |
'] is not a literal and is thus not evaluatable at compile time' |
); |
} |
$t = null; |
eval("\$t = " . $params[ $index ] . ";"); |
return $t; |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.make_timestamp.php |
---|
0,0 → 1,49 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* Function: smarty_make_timestamp |
* Purpose: used by other smarty functions to make a timestamp from a string. |
* |
* @author Monte Ohrt <monte at ohrt dot com> |
* |
* @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime() |
* |
* @return int |
*/ |
function smarty_make_timestamp($string) |
{ |
if (empty($string)) { |
// use "now": |
return time(); |
} elseif ($string instanceof DateTime |
|| (interface_exists('DateTimeInterface', false) && $string instanceof DateTimeInterface) |
) { |
return (int)$string->format('U'); // PHP 5.2 BC |
} elseif (strlen($string) === 14 && ctype_digit($string)) { |
// it is mysql timestamp format of YYYYMMDDHHMMSS? |
return mktime( |
substr($string, 8, 2), |
substr($string, 10, 2), |
substr($string, 12, 2), |
substr($string, 4, 2), |
substr($string, 6, 2), |
substr($string, 0, 4) |
); |
} elseif (is_numeric($string)) { |
// it is a numeric string, we handle it as timestamp |
return (int)$string; |
} else { |
// strtotime should handle it |
$time = strtotime($string); |
if ($time === -1 || $time === false) { |
// strtotime() was not able to parse $string, use "now": |
return time(); |
} |
return $time; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.mb_str_replace.php |
---|
0,0 → 1,53 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
if (!function_exists('smarty_mb_str_replace')) { |
/** |
* Multibyte string replace |
* |
* @param string|string[] $search the string to be searched |
* @param string|string[] $replace the replacement string |
* @param string $subject the source string |
* @param int &$count number of matches found |
* |
* @return string replaced string |
* @author Rodney Rehm |
*/ |
function smarty_mb_str_replace($search, $replace, $subject, &$count = 0) |
{ |
if (!is_array($search) && is_array($replace)) { |
return false; |
} |
if (is_array($subject)) { |
// call mb_replace for each single string in $subject |
foreach ($subject as &$string) { |
$string = smarty_mb_str_replace($search, $replace, $string, $c); |
$count += $c; |
} |
} elseif (is_array($search)) { |
if (!is_array($replace)) { |
foreach ($search as &$string) { |
$subject = smarty_mb_str_replace($string, $replace, $subject, $c); |
$count += $c; |
} |
} else { |
$n = max(count($search), count($replace)); |
while ($n--) { |
$subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c); |
$count += $c; |
next($search); |
next($replace); |
} |
} |
} else { |
$parts = mb_split(preg_quote($search), $subject); |
$count = count($parts) - 1; |
$subject = implode($replace, $parts); |
} |
return $subject; |
} |
} |
/web/acc/manager/vnstat/smarty/plugins/shared.mb_unicode.php |
---|
0,0 → 1,51 |
<?php |
/** |
* Smarty shared plugin |
* |
* @package Smarty |
* @subpackage PluginsShared |
*/ |
/** |
* convert characters to their decimal unicode equivalents |
* |
* @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration |
* |
* @param string $string characters to calculate unicode of |
* @param string $encoding encoding of $string, if null mb_internal_encoding() is used |
* |
* @return array sequence of unicodes |
* @author Rodney Rehm |
*/ |
function smarty_mb_to_unicode($string, $encoding = null) |
{ |
if ($encoding) { |
$expanded = mb_convert_encoding($string, 'UTF-32BE', $encoding); |
} else { |
$expanded = mb_convert_encoding($string, 'UTF-32BE'); |
} |
return unpack('N*', $expanded); |
} |
/** |
* convert unicodes to the character of given encoding |
* |
* @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration |
* |
* @param integer|array $unicode single unicode or list of unicodes to convert |
* @param string $encoding encoding of returned string, if null mb_internal_encoding() is used |
* |
* @return string unicode as character sequence in given $encoding |
* @author Rodney Rehm |
*/ |
function smarty_mb_from_unicode($unicode, $encoding = null) |
{ |
$t = ''; |
if (!$encoding) { |
$encoding = mb_internal_encoding(); |
} |
foreach ((array)$unicode as $utf32be) { |
$character = pack('N*', $utf32be); |
$t .= mb_convert_encoding($character, $encoding, 'UTF-32BE'); |
} |
return $t; |
} |
/web/acc/manager/vnstat/smarty/plugins/variablefilter.htmlspecialchars.php |
---|
0,0 → 1,19 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage PluginsFilter |
*/ |
/** |
* Smarty htmlspecialchars variablefilter plugin |
* |
* @param string $source input string |
* @param \Smarty_Internal_Template $template |
* |
* @return string filtered output |
*/ |
function smarty_variablefilter_htmlspecialchars($source, Smarty_Internal_Template $template) |
{ |
return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET); |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_cacheresource.php |
---|
0,0 → 1,219 |
<?php |
/** |
* Smarty Internal Plugin |
* |
* @package Smarty |
* @subpackage Cacher |
*/ |
/** |
* Cache Handler API |
* |
* @package Smarty |
* @subpackage Cacher |
* @author Rodney Rehm |
*/ |
abstract class Smarty_CacheResource |
{ |
/** |
* resource types provided by the core |
* |
* @var array |
*/ |
protected static $sysplugins = array('file' => 'smarty_internal_cacheresource_file.php',); |
/** |
* populate Cached Object with meta data from Resource |
* |
* @param \Smarty_Template_Cached $cached cached object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
abstract public function populate(\Smarty_Template_Cached $cached, Smarty_Internal_Template $_template); |
/** |
* populate Cached Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Cached $cached |
* |
* @return void |
*/ |
abstract public function populateTimestamp(Smarty_Template_Cached $cached); |
/** |
* Read the cached template and process header |
* |
* @param Smarty_Internal_Template $_template template object |
* @param Smarty_Template_Cached $cached cached object |
* @param boolean $update flag if called because cache update |
* |
* @return boolean true or false if the cached content does not exist |
*/ |
abstract public function process( |
Smarty_Internal_Template $_template, |
Smarty_Template_Cached $cached = null, |
$update = false |
); |
/** |
* Write the rendered template output to cache |
* |
* @param Smarty_Internal_Template $_template template object |
* @param string $content content to cache |
* |
* @return boolean success |
*/ |
abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content); |
/** |
* Read cached template from cache |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string content |
*/ |
abstract public function readCachedContent(Smarty_Internal_Template $_template); |
/** |
* Return cached content |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return null|string |
*/ |
public function getCachedContent(Smarty_Internal_Template $_template) |
{ |
if ($_template->cached->handler->process($_template)) { |
ob_start(); |
$unifunc = $_template->cached->unifunc; |
$unifunc($_template); |
return ob_get_clean(); |
} |
return null; |
} |
/** |
* Empty cache |
* |
* @param Smarty $smarty Smarty object |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return integer number of cache files deleted |
*/ |
abstract public function clearAll(Smarty $smarty, $exp_time = null); |
/** |
* Empty cache for a specific template |
* |
* @param Smarty $smarty Smarty object |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return integer number of cache files deleted |
*/ |
abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time); |
/** |
* @param Smarty $smarty |
* @param Smarty_Template_Cached $cached |
* |
* @return bool|null |
*/ |
public function locked(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
// theoretically locking_timeout should be checked against time_limit (max_execution_time) |
$start = microtime(true); |
$hadLock = null; |
while ($this->hasLock($smarty, $cached)) { |
$hadLock = true; |
if (microtime(true) - $start > $smarty->locking_timeout) { |
// abort waiting for lock release |
return false; |
} |
sleep(1); |
} |
return $hadLock; |
} |
/** |
* Check is cache is locked for this template |
* |
* @param Smarty $smarty |
* @param Smarty_Template_Cached $cached |
* |
* @return bool |
*/ |
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
// check if lock exists |
return false; |
} |
/** |
* Lock cache for this template |
* |
* @param Smarty $smarty |
* @param Smarty_Template_Cached $cached |
* |
* @return bool |
*/ |
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
// create lock |
return true; |
} |
/** |
* Unlock cache for this template |
* |
* @param Smarty $smarty |
* @param Smarty_Template_Cached $cached |
* |
* @return bool |
*/ |
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
// release lock |
return true; |
} |
/** |
* Load Cache Resource Handler |
* |
* @param Smarty $smarty Smarty object |
* @param string $type name of the cache resource |
* |
* @throws SmartyException |
* @return Smarty_CacheResource Cache Resource Handler |
*/ |
public static function load(Smarty $smarty, $type = null) |
{ |
if (!isset($type)) { |
$type = $smarty->caching_type; |
} |
// try smarty's cache |
if (isset($smarty->_cache[ 'cacheresource_handlers' ][ $type ])) { |
return $smarty->_cache[ 'cacheresource_handlers' ][ $type ]; |
} |
// try registered resource |
if (isset($smarty->registered_cache_resources[ $type ])) { |
// do not cache these instances as they may vary from instance to instance |
return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = $smarty->registered_cache_resources[ $type ]; |
} |
// try sysplugins dir |
if (isset(self::$sysplugins[ $type ])) { |
$cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type); |
return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class(); |
} |
// try plugins dir |
$cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type); |
if ($smarty->loadPlugin($cache_resource_class)) { |
return $smarty->_cache[ 'cacheresource_handlers' ][ $type ] = new $cache_resource_class(); |
} |
// give up |
throw new SmartyException("Unable to load cache resource '{$type}'"); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_cacheresource_custom.php |
---|
0,0 → 1,297 |
<?php |
/** |
* Smarty Internal Plugin |
* |
* @package Smarty |
* @subpackage Cacher |
*/ |
/** |
* Cache Handler API |
* |
* @package Smarty |
* @subpackage Cacher |
* @author Rodney Rehm |
*/ |
abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource |
{ |
/** |
* fetch cached content and its modification time from data source |
* |
* @param string $id unique cache content identifier |
* @param string $name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param string $content cached content |
* @param integer $mtime cache modification timestamp (epoch) |
* |
* @return void |
*/ |
abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime); |
/** |
* Fetch cached content's modification timestamp from data source |
* {@internal implementing this method is optional. |
* Only implement it if modification times can be accessed faster than loading the complete cached content.}} |
* |
* @param string $id unique cache content identifier |
* @param string $name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* |
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found |
*/ |
protected function fetchTimestamp($id, $name, $cache_id, $compile_id) |
{ |
return false; |
} |
/** |
* Save content to cache |
* |
* @param string $id unique cache content identifier |
* @param string $name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer|null $exp_time seconds till expiration or null |
* @param string $content content to cache |
* |
* @return boolean success |
*/ |
abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content); |
/** |
* Delete content from cache |
* |
* @param string|null $name template name |
* @param string|null $cache_id cache id |
* @param string|null $compile_id compile id |
* @param integer|null $exp_time seconds till expiration time in seconds or null |
* |
* @return integer number of deleted caches |
*/ |
abstract protected function delete($name, $cache_id, $compile_id, $exp_time); |
/** |
* populate Cached Object with meta data from Resource |
* |
* @param Smarty_Template_Cached $cached cached object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) |
{ |
$_cache_id = isset($cached->cache_id) ? preg_replace('![^\w\|]+!', '_', $cached->cache_id) : null; |
$_compile_id = isset($cached->compile_id) ? preg_replace('![^\w]+!', '_', $cached->compile_id) : null; |
$path = $cached->source->uid . $_cache_id . $_compile_id; |
$cached->filepath = sha1($path); |
if ($_template->smarty->cache_locking) { |
$cached->lock_id = sha1('lock.' . $path); |
} |
$this->populateTimestamp($cached); |
} |
/** |
* populate Cached Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Cached $cached |
* |
* @return void |
*/ |
public function populateTimestamp(Smarty_Template_Cached $cached) |
{ |
$mtime = |
$this->fetchTimestamp($cached->filepath, $cached->source->name, $cached->cache_id, $cached->compile_id); |
if ($mtime !== null) { |
$cached->timestamp = $mtime; |
$cached->exists = !!$cached->timestamp; |
return; |
} |
$timestamp = null; |
$this->fetch( |
$cached->filepath, |
$cached->source->name, |
$cached->cache_id, |
$cached->compile_id, |
$cached->content, |
$timestamp |
); |
$cached->timestamp = isset($timestamp) ? $timestamp : false; |
$cached->exists = !!$cached->timestamp; |
} |
/** |
* Read the cached template and process the header |
* |
* @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template |
* @param Smarty_Template_Cached $cached cached object |
* @param boolean $update flag if called because cache update |
* |
* @return boolean true or false if the cached content does not exist |
*/ |
public function process( |
Smarty_Internal_Template $_smarty_tpl, |
Smarty_Template_Cached $cached = null, |
$update = false |
) { |
if (!$cached) { |
$cached = $_smarty_tpl->cached; |
} |
$content = $cached->content ? $cached->content : null; |
$timestamp = $cached->timestamp ? $cached->timestamp : null; |
if ($content === null || !$timestamp) { |
$this->fetch( |
$_smarty_tpl->cached->filepath, |
$_smarty_tpl->source->name, |
$_smarty_tpl->cache_id, |
$_smarty_tpl->compile_id, |
$content, |
$timestamp |
); |
} |
if (isset($content)) { |
eval('?>' . $content); |
$cached->content = null; |
return true; |
} |
return false; |
} |
/** |
* Write the rendered template output to cache |
* |
* @param Smarty_Internal_Template $_template template object |
* @param string $content content to cache |
* |
* @return boolean success |
*/ |
public function writeCachedContent(Smarty_Internal_Template $_template, $content) |
{ |
return $this->save( |
$_template->cached->filepath, |
$_template->source->name, |
$_template->cache_id, |
$_template->compile_id, |
$_template->cache_lifetime, |
$content |
); |
} |
/** |
* Read cached template from cache |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string|boolean content |
*/ |
public function readCachedContent(Smarty_Internal_Template $_template) |
{ |
$content = $_template->cached->content ? $_template->cached->content : null; |
$timestamp = null; |
if ($content === null) { |
$timestamp = null; |
$this->fetch( |
$_template->cached->filepath, |
$_template->source->name, |
$_template->cache_id, |
$_template->compile_id, |
$content, |
$timestamp |
); |
} |
if (isset($content)) { |
return $content; |
} |
return false; |
} |
/** |
* Empty cache |
* |
* @param Smarty $smarty Smarty object |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return integer number of cache files deleted |
*/ |
public function clearAll(Smarty $smarty, $exp_time = null) |
{ |
return $this->delete(null, null, null, $exp_time); |
} |
/** |
* Empty cache for a specific template |
* |
* @param Smarty $smarty Smarty object |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return int number of cache files deleted |
* @throws \SmartyException |
*/ |
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) |
{ |
$cache_name = null; |
if (isset($resource_name)) { |
$source = Smarty_Template_Source::load(null, $smarty, $resource_name); |
if ($source->exists) { |
$cache_name = $source->name; |
} else { |
return 0; |
} |
} |
return $this->delete($cache_name, $cache_id, $compile_id, $exp_time); |
} |
/** |
* Check is cache is locked for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return boolean true or false if cache is locked |
*/ |
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$id = $cached->lock_id; |
$name = $cached->source->name . '.lock'; |
$mtime = $this->fetchTimestamp($id, $name, $cached->cache_id, $cached->compile_id); |
if ($mtime === null) { |
$this->fetch($id, $name, $cached->cache_id, $cached->compile_id, $content, $mtime); |
} |
return $mtime && ($t = time()) - $mtime < $smarty->locking_timeout; |
} |
/** |
* Lock cache for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return bool|void |
*/ |
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$cached->is_locked = true; |
$id = $cached->lock_id; |
$name = $cached->source->name . '.lock'; |
$this->save($id, $name, $cached->cache_id, $cached->compile_id, $smarty->locking_timeout, ''); |
} |
/** |
* Unlock cache for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return bool|void |
*/ |
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$cached->is_locked = false; |
$name = $cached->source->name . '.lock'; |
$this->delete($name, $cached->cache_id, $cached->compile_id, null); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_cacheresource_keyvaluestore.php |
---|
0,0 → 1,538 |
<?php |
/** |
* Smarty Internal Plugin |
* |
* @package Smarty |
* @subpackage Cacher |
*/ |
/** |
* Smarty Cache Handler Base for Key/Value Storage Implementations |
* This class implements the functionality required to use simple key/value stores |
* for hierarchical cache groups. key/value stores like memcache or APC do not support |
* wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which |
* is no problem to filesystem and RDBMS implementations. |
* This implementation is based on the concept of invalidation. While one specific cache |
* can be identified and cleared, any range of caches cannot be identified. For this reason |
* each level of the cache group hierarchy can have its own value in the store. These values |
* are nothing but microtimes, telling us when a particular cache group was cleared for the |
* last time. These keys are evaluated for every cache read to determine if the cache has |
* been invalidated since it was created and should hence be treated as inexistent. |
* Although deep hierarchies are possible, they are not recommended. Try to keep your |
* cache groups as shallow as possible. Anything up 3-5 parents should be ok. So |
* »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating |
* cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever« |
* consider using »a|b|c|$page-$items-$whatever« instead. |
* |
* @package Smarty |
* @subpackage Cacher |
* @author Rodney Rehm |
*/ |
abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource |
{ |
/** |
* cache for contents |
* |
* @var array |
*/ |
protected $contents = array(); |
/** |
* cache for timestamps |
* |
* @var array |
*/ |
protected $timestamps = array(); |
/** |
* populate Cached Object with meta data from Resource |
* |
* @param Smarty_Template_Cached $cached cached object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) |
{ |
$cached->filepath = $_template->source->uid . '#' . $this->sanitize($cached->source->resource) . '#' . |
$this->sanitize($cached->cache_id) . '#' . $this->sanitize($cached->compile_id); |
$this->populateTimestamp($cached); |
} |
/** |
* populate Cached Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return void |
*/ |
public function populateTimestamp(Smarty_Template_Cached $cached) |
{ |
if (!$this->fetch( |
$cached->filepath, |
$cached->source->name, |
$cached->cache_id, |
$cached->compile_id, |
$content, |
$timestamp, |
$cached->source->uid |
) |
) { |
return; |
} |
$cached->content = $content; |
$cached->timestamp = (int)$timestamp; |
$cached->exists = !!$cached->timestamp; |
} |
/** |
* Read the cached template and process the header |
* |
* @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template |
* @param Smarty_Template_Cached $cached cached object |
* @param boolean $update flag if called because cache update |
* |
* @return boolean true or false if the cached content does not exist |
*/ |
public function process( |
Smarty_Internal_Template $_smarty_tpl, |
Smarty_Template_Cached $cached = null, |
$update = false |
) { |
if (!$cached) { |
$cached = $_smarty_tpl->cached; |
} |
$content = $cached->content ? $cached->content : null; |
$timestamp = $cached->timestamp ? $cached->timestamp : null; |
if ($content === null || !$timestamp) { |
if (!$this->fetch( |
$_smarty_tpl->cached->filepath, |
$_smarty_tpl->source->name, |
$_smarty_tpl->cache_id, |
$_smarty_tpl->compile_id, |
$content, |
$timestamp, |
$_smarty_tpl->source->uid |
) |
) { |
return false; |
} |
} |
if (isset($content)) { |
eval('?>' . $content); |
return true; |
} |
return false; |
} |
/** |
* Write the rendered template output to cache |
* |
* @param Smarty_Internal_Template $_template template object |
* @param string $content content to cache |
* |
* @return boolean success |
*/ |
public function writeCachedContent(Smarty_Internal_Template $_template, $content) |
{ |
$this->addMetaTimestamp($content); |
return $this->write(array($_template->cached->filepath => $content), $_template->cache_lifetime); |
} |
/** |
* Read cached template from cache |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string|false content |
*/ |
public function readCachedContent(Smarty_Internal_Template $_template) |
{ |
$content = $_template->cached->content ? $_template->cached->content : null; |
$timestamp = null; |
if ($content === null) { |
if (!$this->fetch( |
$_template->cached->filepath, |
$_template->source->name, |
$_template->cache_id, |
$_template->compile_id, |
$content, |
$timestamp, |
$_template->source->uid |
) |
) { |
return false; |
} |
} |
if (isset($content)) { |
return $content; |
} |
return false; |
} |
/** |
* Empty cache |
* {@internal the $exp_time argument is ignored altogether }} |
* |
* @param Smarty $smarty Smarty object |
* @param integer $exp_time expiration time [being ignored] |
* |
* @return integer number of cache files deleted [always -1] |
* @uses purge() to clear the whole store |
* @uses invalidate() to mark everything outdated if purge() is inapplicable |
*/ |
public function clearAll(Smarty $smarty, $exp_time = null) |
{ |
if (!$this->purge()) { |
$this->invalidate(null); |
} |
return -1; |
} |
/** |
* Empty cache for a specific template |
* {@internal the $exp_time argument is ignored altogether}} |
* |
* @param Smarty $smarty Smarty object |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time [being ignored] |
* |
* @return int number of cache files deleted [always -1] |
* @throws \SmartyException |
* @uses buildCachedFilepath() to generate the CacheID |
* @uses invalidate() to mark CacheIDs parent chain as outdated |
* @uses delete() to remove CacheID from cache |
*/ |
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) |
{ |
$uid = $this->getTemplateUid($smarty, $resource_name); |
$cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' . |
$this->sanitize($compile_id); |
$this->delete(array($cid)); |
$this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid); |
return -1; |
} |
/** |
* Get template's unique ID |
* |
* @param Smarty $smarty Smarty object |
* @param string $resource_name template name |
* |
* @return string filepath of cache file |
* @throws \SmartyException |
*/ |
protected function getTemplateUid(Smarty $smarty, $resource_name) |
{ |
if (isset($resource_name)) { |
$source = Smarty_Template_Source::load(null, $smarty, $resource_name); |
if ($source->exists) { |
return $source->uid; |
} |
} |
return ''; |
} |
/** |
* Sanitize CacheID components |
* |
* @param string $string CacheID component to sanitize |
* |
* @return string sanitized CacheID component |
*/ |
protected function sanitize($string) |
{ |
$string = trim($string, '|'); |
if (!$string) { |
return ''; |
} |
return preg_replace('#[^\w\|]+#S', '_', $string); |
} |
/** |
* Fetch and prepare a cache object. |
* |
* @param string $cid CacheID to fetch |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param string $content cached content |
* @param integer &$timestamp cached timestamp (epoch) |
* @param string $resource_uid resource's uid |
* |
* @return boolean success |
*/ |
protected function fetch( |
$cid, |
$resource_name = null, |
$cache_id = null, |
$compile_id = null, |
&$content = null, |
&$timestamp = null, |
$resource_uid = null |
) { |
$t = $this->read(array($cid)); |
$content = !empty($t[ $cid ]) ? $t[ $cid ] : null; |
$timestamp = null; |
if ($content && ($timestamp = $this->getMetaTimestamp($content))) { |
$invalidated = |
$this->getLatestInvalidationTimestamp($cid, $resource_name, $cache_id, $compile_id, $resource_uid); |
if ($invalidated > $timestamp) { |
$timestamp = null; |
$content = null; |
} |
} |
return !!$content; |
} |
/** |
* Add current microtime to the beginning of $cache_content |
* {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}} |
* |
* @param string &$content the content to be cached |
*/ |
protected function addMetaTimestamp(&$content) |
{ |
$mt = explode(' ', microtime()); |
$ts = pack('NN', $mt[ 1 ], (int)($mt[ 0 ] * 100000000)); |
$content = $ts . $content; |
} |
/** |
* Extract the timestamp the $content was cached |
* |
* @param string &$content the cached content |
* |
* @return float the microtime the content was cached |
*/ |
protected function getMetaTimestamp(&$content) |
{ |
extract(unpack('N1s/N1m/a*content', $content)); |
/** |
* @var int $s |
* @var int $m |
*/ |
return $s + ($m / 100000000); |
} |
/** |
* Invalidate CacheID |
* |
* @param string $cid CacheID |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param string $resource_uid source's uid |
* |
* @return void |
*/ |
protected function invalidate( |
$cid = null, |
$resource_name = null, |
$cache_id = null, |
$compile_id = null, |
$resource_uid = null |
) { |
$now = microtime(true); |
$key = null; |
// invalidate everything |
if (!$resource_name && !$cache_id && !$compile_id) { |
$key = 'IVK#ALL'; |
} // invalidate all caches by template |
else { |
if ($resource_name && !$cache_id && !$compile_id) { |
$key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name); |
} // invalidate all caches by cache group |
else { |
if (!$resource_name && $cache_id && !$compile_id) { |
$key = 'IVK#CACHE#' . $this->sanitize($cache_id); |
} // invalidate all caches by compile id |
else { |
if (!$resource_name && !$cache_id && $compile_id) { |
$key = 'IVK#COMPILE#' . $this->sanitize($compile_id); |
} // invalidate by combination |
else { |
$key = 'IVK#CID#' . $cid; |
} |
} |
} |
} |
$this->write(array($key => $now)); |
} |
/** |
* Determine the latest timestamp known to the invalidation chain |
* |
* @param string $cid CacheID to determine latest invalidation timestamp of |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param string $resource_uid source's filepath |
* |
* @return float the microtime the CacheID was invalidated |
*/ |
protected function getLatestInvalidationTimestamp( |
$cid, |
$resource_name = null, |
$cache_id = null, |
$compile_id = null, |
$resource_uid = null |
) { |
// abort if there is no CacheID |
if (false && !$cid) { |
return 0; |
} |
// abort if there are no InvalidationKeys to check |
if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) { |
return 0; |
} |
// there are no InValidationKeys |
if (!($values = $this->read($_cid))) { |
return 0; |
} |
// make sure we're dealing with floats |
$values = array_map('floatval', $values); |
return max($values); |
} |
/** |
* Translate a CacheID into the list of applicable InvalidationKeys. |
* Splits 'some|chain|into|an|array' into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... ) |
* |
* @param string $cid CacheID to translate |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param string $resource_uid source's filepath |
* |
* @return array list of InvalidationKeys |
* @uses $invalidationKeyPrefix to prepend to each InvalidationKey |
*/ |
protected function listInvalidationKeys( |
$cid, |
$resource_name = null, |
$cache_id = null, |
$compile_id = null, |
$resource_uid = null |
) { |
$t = array('IVK#ALL'); |
$_name = $_compile = '#'; |
if ($resource_name) { |
$_name .= $resource_uid . '#' . $this->sanitize($resource_name); |
$t[] = 'IVK#TEMPLATE' . $_name; |
} |
if ($compile_id) { |
$_compile .= $this->sanitize($compile_id); |
$t[] = 'IVK#COMPILE' . $_compile; |
} |
$_name .= '#'; |
$cid = trim($cache_id, '|'); |
if (!$cid) { |
return $t; |
} |
$i = 0; |
while (true) { |
// determine next delimiter position |
$i = strpos($cid, '|', $i); |
// add complete CacheID if there are no more delimiters |
if ($i === false) { |
$t[] = 'IVK#CACHE#' . $cid; |
$t[] = 'IVK#CID' . $_name . $cid . $_compile; |
$t[] = 'IVK#CID' . $_name . $_compile; |
break; |
} |
$part = substr($cid, 0, $i); |
// add slice to list |
$t[] = 'IVK#CACHE#' . $part; |
$t[] = 'IVK#CID' . $_name . $part . $_compile; |
// skip past delimiter position |
$i++; |
} |
return $t; |
} |
/** |
* Check is cache is locked for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return boolean true or false if cache is locked |
*/ |
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$key = 'LOCK#' . $cached->filepath; |
$data = $this->read(array($key)); |
return $data && time() - $data[ $key ] < $smarty->locking_timeout; |
} |
/** |
* Lock cache for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return bool|void |
*/ |
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$cached->is_locked = true; |
$key = 'LOCK#' . $cached->filepath; |
$this->write(array($key => time()), $smarty->locking_timeout); |
} |
/** |
* Unlock cache for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return bool|void |
*/ |
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$cached->is_locked = false; |
$key = 'LOCK#' . $cached->filepath; |
$this->delete(array($key)); |
} |
/** |
* Read values for a set of keys from cache |
* |
* @param array $keys list of keys to fetch |
* |
* @return array list of values with the given keys used as indexes |
*/ |
abstract protected function read(array $keys); |
/** |
* Save values for a set of keys to cache |
* |
* @param array $keys list of values to save |
* @param int $expire expiration time |
* |
* @return boolean true on success, false on failure |
*/ |
abstract protected function write(array $keys, $expire = null); |
/** |
* Remove values from cache |
* |
* @param array $keys list of keys to delete |
* |
* @return boolean true on success, false on failure |
*/ |
abstract protected function delete(array $keys); |
/** |
* Remove *all* values from cache |
* |
* @return boolean true on success, false on failure |
*/ |
protected function purge() |
{ |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_data.php |
---|
0,0 → 1,68 |
<?php |
/** |
* Smarty Plugin Data |
* This file contains the data object |
* |
* @package Smarty |
* @subpackage Template |
* @author Uwe Tews |
*/ |
/** |
* class for the Smarty data object |
* The Smarty data object will hold Smarty variables in the current scope |
* |
* @package Smarty |
* @subpackage Template |
*/ |
class Smarty_Data extends Smarty_Internal_Data |
{ |
/** |
* Counter |
* |
* @var int |
*/ |
public static $count = 0; |
/** |
* Data block name |
* |
* @var string |
*/ |
public $dataObjectName = ''; |
/** |
* Smarty object |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* create Smarty data object |
* |
* @param Smarty|array $_parent parent template |
* @param Smarty|Smarty_Internal_Template $smarty global smarty instance |
* @param string $name optional data block name |
* |
* @throws SmartyException |
*/ |
public function __construct($_parent = null, $smarty = null, $name = null) |
{ |
parent::__construct(); |
self::$count++; |
$this->dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count); |
$this->smarty = $smarty; |
if (is_object($_parent)) { |
// when object set up back pointer |
$this->parent = $_parent; |
} elseif (is_array($_parent)) { |
// set up variable values |
foreach ($_parent as $_key => $_val) { |
$this->tpl_vars[ $_key ] = new Smarty_Variable($_val); |
} |
} elseif ($_parent !== null) { |
throw new SmartyException('Wrong type for template variables'); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_block.php |
---|
0,0 → 1,90 |
<?php |
/** |
* Smarty {block} tag class |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Block |
{ |
/** |
* Block name |
* |
* @var string |
*/ |
public $name = ''; |
/** |
* Hide attribute |
* |
* @var bool |
*/ |
public $hide = false; |
/** |
* Append attribute |
* |
* @var bool |
*/ |
public $append = false; |
/** |
* prepend attribute |
* |
* @var bool |
*/ |
public $prepend = false; |
/** |
* Block calls $smarty.block.child |
* |
* @var bool |
*/ |
public $callsChild = false; |
/** |
* Inheritance child block |
* |
* @var Smarty_Internal_Block|null |
*/ |
public $child = null; |
/** |
* Inheritance calling parent block |
* |
* @var Smarty_Internal_Block|null |
*/ |
public $parent = null; |
/** |
* Inheritance Template index |
* |
* @var int |
*/ |
public $tplIndex = 0; |
/** |
* Smarty_Internal_Block constructor. |
* - if outer level {block} of child template ($state === 1) save it as child root block |
* - otherwise process inheritance and render |
* |
* @param string $name block name |
* @param int|null $tplIndex index of outer level {block} if nested |
*/ |
public function __construct($name, $tplIndex) |
{ |
$this->name = $name; |
$this->tplIndex = $tplIndex; |
} |
/** |
* Compiled block code overloaded by {block} class |
* |
* @param \Smarty_Internal_Template $tpl |
*/ |
public function callBlock(Smarty_Internal_Template $tpl) |
{ |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_cacheresource_file.php |
---|
0,0 → 1,239 |
<?php |
/** |
* Smarty Internal Plugin CacheResource File |
* |
* @package Smarty |
* @subpackage Cacher |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* This class does contain all necessary methods for the HTML cache on file system |
* Implements the file system as resource for the HTML cache Version ussing nocache inserts. |
* |
* @package Smarty |
* @subpackage Cacher |
*/ |
class Smarty_Internal_CacheResource_File extends Smarty_CacheResource |
{ |
/** |
* populate Cached Object with meta data from Resource |
* |
* @param Smarty_Template_Cached $cached cached object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template) |
{ |
$source = &$_template->source; |
$smarty = &$_template->smarty; |
$_compile_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'; |
$_filepath = sha1($source->uid . $smarty->_joined_template_dir); |
$cached->filepath = $smarty->getCacheDir(); |
if (isset($_template->cache_id)) { |
$cached->filepath .= preg_replace( |
array( |
'![^\w|]+!', |
'![|]+!' |
), |
array( |
'_', |
$_compile_dir_sep |
), |
$_template->cache_id |
) . $_compile_dir_sep; |
} |
if (isset($_template->compile_id)) { |
$cached->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . $_compile_dir_sep; |
} |
// if use_sub_dirs, break file into directories |
if ($smarty->use_sub_dirs) { |
$cached->filepath .= $_filepath[ 0 ] . $_filepath[ 1 ] . DIRECTORY_SEPARATOR . $_filepath[ 2 ] . |
$_filepath[ 3 ] . |
DIRECTORY_SEPARATOR . |
$_filepath[ 4 ] . $_filepath[ 5 ] . DIRECTORY_SEPARATOR; |
} |
$cached->filepath .= $_filepath; |
$basename = $source->handler->getBasename($source); |
if (!empty($basename)) { |
$cached->filepath .= '.' . $basename; |
} |
if ($smarty->cache_locking) { |
$cached->lock_id = $cached->filepath . '.lock'; |
} |
$cached->filepath .= '.php'; |
$cached->timestamp = $cached->exists = is_file($cached->filepath); |
if ($cached->exists) { |
$cached->timestamp = filemtime($cached->filepath); |
} |
} |
/** |
* populate Cached Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return void |
*/ |
public function populateTimestamp(Smarty_Template_Cached $cached) |
{ |
$cached->timestamp = $cached->exists = is_file($cached->filepath); |
if ($cached->exists) { |
$cached->timestamp = filemtime($cached->filepath); |
} |
} |
/** |
* Read the cached template and process its header |
* |
* @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template |
* @param Smarty_Template_Cached $cached cached object |
* @param bool $update flag if called because cache update |
* |
* @return boolean true or false if the cached content does not exist |
*/ |
public function process( |
Smarty_Internal_Template $_smarty_tpl, |
Smarty_Template_Cached $cached = null, |
$update = false |
) { |
$_smarty_tpl->cached->valid = false; |
if ($update && defined('HHVM_VERSION')) { |
eval('?>' . file_get_contents($_smarty_tpl->cached->filepath)); |
return true; |
} else { |
return @include $_smarty_tpl->cached->filepath; |
} |
} |
/** |
* Write the rendered template output to cache |
* |
* @param Smarty_Internal_Template $_template template object |
* @param string $content content to cache |
* |
* @return bool success |
* @throws \SmartyException |
*/ |
public function writeCachedContent(Smarty_Internal_Template $_template, $content) |
{ |
if ($_template->smarty->ext->_writeFile->writeFile( |
$_template->cached->filepath, |
$content, |
$_template->smarty |
) === true |
) { |
if (function_exists('opcache_invalidate') |
&& (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api'))) < 1 |
) { |
opcache_invalidate($_template->cached->filepath, true); |
} elseif (function_exists('apc_compile_file')) { |
apc_compile_file($_template->cached->filepath); |
} |
$cached = $_template->cached; |
$cached->timestamp = $cached->exists = is_file($cached->filepath); |
if ($cached->exists) { |
$cached->timestamp = filemtime($cached->filepath); |
return true; |
} |
} |
return false; |
} |
/** |
* Read cached template from cache |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string content |
*/ |
public function readCachedContent(Smarty_Internal_Template $_template) |
{ |
if (is_file($_template->cached->filepath)) { |
return file_get_contents($_template->cached->filepath); |
} |
return false; |
} |
/** |
* Empty cache |
* |
* @param Smarty $smarty |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return integer number of cache files deleted |
*/ |
public function clearAll(Smarty $smarty, $exp_time = null) |
{ |
return $smarty->ext->_cacheResourceFile->clear($smarty, null, null, null, $exp_time); |
} |
/** |
* Empty cache for a specific template |
* |
* @param Smarty $smarty |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return integer number of cache files deleted |
*/ |
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) |
{ |
return $smarty->ext->_cacheResourceFile->clear($smarty, $resource_name, $cache_id, $compile_id, $exp_time); |
} |
/** |
* Check is cache is locked for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return boolean true or false if cache is locked |
*/ |
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
if (version_compare(PHP_VERSION, '5.3.0', '>=')) { |
clearstatcache(true, $cached->lock_id); |
} else { |
clearstatcache(); |
} |
if (is_file($cached->lock_id)) { |
$t = filemtime($cached->lock_id); |
return $t && (time() - $t < $smarty->locking_timeout); |
} else { |
return false; |
} |
} |
/** |
* Lock cache for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return bool|void |
*/ |
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$cached->is_locked = true; |
touch($cached->lock_id); |
} |
/** |
* Unlock cache for this template |
* |
* @param Smarty $smarty Smarty object |
* @param Smarty_Template_Cached $cached cached object |
* |
* @return bool|void |
*/ |
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached) |
{ |
$cached->is_locked = false; |
@unlink($cached->lock_id); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_append.php |
---|
0,0 → 1,52 |
<?php |
/** |
* Smarty Internal Plugin Compile Append |
* Compiles the {append} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Append Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign |
{ |
/** |
* Compiles code for the {append} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// the following must be assigned at runtime because it will be overwritten in parent class |
$this->required_attributes = array('var', 'value'); |
$this->shorttag_order = array('var', 'value'); |
$this->optional_attributes = array('scope', 'index'); |
$this->mapCache = array(); |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
// map to compile assign attributes |
if (isset($_attr[ 'index' ])) { |
$_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']'; |
unset($_attr[ 'index' ]); |
} else { |
$_params[ 'smarty_internal_index' ] = '[]'; |
} |
$_new_attr = array(); |
foreach ($_attr as $key => $value) { |
$_new_attr[] = array($key => $value); |
} |
// call compile assign |
return parent::compile($_new_attr, $compiler, $_params); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_assign.php |
---|
0,0 → 1,96 |
<?php |
/** |
* Smarty Internal Plugin Compile Assign |
* Compiles the {assign} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Assign Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $option_flags = array('nocache', 'noscope'); |
/** |
* Valid scope names |
* |
* @var array |
*/ |
public $valid_scopes = array( |
'local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT, |
'root' => Smarty::SCOPE_ROOT, 'global' => Smarty::SCOPE_GLOBAL, |
'tpl_root' => Smarty::SCOPE_TPL_ROOT, 'smarty' => Smarty::SCOPE_SMARTY |
); |
/** |
* Compiles code for the {assign} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// the following must be assigned at runtime because it will be overwritten in Smarty_Internal_Compile_Append |
$this->required_attributes = array('var', 'value'); |
$this->shorttag_order = array('var', 'value'); |
$this->optional_attributes = array('scope'); |
$this->mapCache = array(); |
$_nocache = false; |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
// nocache ? |
if ($_var = $compiler->getId($_attr[ 'var' ])) { |
$_var = "'{$_var}'"; |
} else { |
$_var = $_attr[ 'var' ]; |
} |
if ($compiler->tag_nocache || $compiler->nocache) { |
$_nocache = true; |
// create nocache var to make it know for further compiling |
$compiler->setNocacheInVariable($_attr[ 'var' ]); |
} |
// scope setup |
if ($_attr[ 'noscope' ]) { |
$_scope = -1; |
} else { |
$_scope = $compiler->convertScope($_attr, $this->valid_scopes); |
} |
// optional parameter |
$_params = ''; |
if ($_nocache || $_scope) { |
$_params .= ' ,' . var_export($_nocache, true); |
} |
if ($_scope) { |
$_params .= ' ,' . $_scope; |
} |
if (isset($parameter[ 'smarty_internal_index' ])) { |
$output = |
"<?php \$_tmp_array = isset(\$_smarty_tpl->tpl_vars[{$_var}]) ? \$_smarty_tpl->tpl_vars[{$_var}]->value : array();\n"; |
$output .= "if (!(is_array(\$_tmp_array) || \$_tmp_array instanceof ArrayAccess)) {\n"; |
$output .= "settype(\$_tmp_array, 'array');\n"; |
$output .= "}\n"; |
$output .= "\$_tmp_array{$parameter['smarty_internal_index']} = {$_attr['value']};\n"; |
$output .= "\$_smarty_tpl->_assignInScope({$_var}, \$_tmp_array{$_params});?>"; |
} else { |
$output = "<?php \$_smarty_tpl->_assignInScope({$_var}, {$_attr['value']}{$_params});?>"; |
} |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_block.php |
---|
0,0 → 1,189 |
<?php |
/** |
* This file is part of Smarty. |
* |
* (c) 2015 Uwe Tews |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Smarty Internal Plugin Compile Block Class |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Compile_Block extends Smarty_Internal_Compile_Shared_Inheritance |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $option_flags = array('hide', 'nocache'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('assign'); |
/** |
* Compiles code for the {block} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
if (!isset($compiler->_cache[ 'blockNesting' ])) { |
$compiler->_cache[ 'blockNesting' ] = 0; |
} |
if ($compiler->_cache[ 'blockNesting' ] === 0) { |
// make sure that inheritance gets initialized in template code |
$this->registerInit($compiler); |
$this->option_flags = array('hide', 'nocache', 'append', 'prepend'); |
} else { |
$this->option_flags = array('hide', 'nocache'); |
} |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
++$compiler->_cache[ 'blockNesting' ]; |
$_className = 'Block_' . preg_replace('![^\w]+!', '_', uniqid(mt_rand(), true)); |
$compiler->_cache[ 'blockName' ][ $compiler->_cache[ 'blockNesting' ] ] = $_attr[ 'name' ]; |
$compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ] = $_className; |
$compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ] = array(); |
$compiler->_cache[ 'blockParams' ][ 1 ][ 'subBlocks' ][ trim($_attr[ 'name' ], '"\'') ][] = $_className; |
$this->openTag( |
$compiler, |
'block', |
array( |
$_attr, $compiler->nocache, $compiler->parser->current_buffer, |
$compiler->template->compiled->has_nocache_code, |
$compiler->template->caching |
) |
); |
$compiler->saveRequiredPlugins(true); |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
$compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); |
$compiler->template->compiled->has_nocache_code = false; |
$compiler->suppressNocacheProcessing = true; |
} |
} |
/** |
* Smarty Internal Plugin Compile BlockClose Class |
*/ |
class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_Compile_Shared_Inheritance |
{ |
/** |
* Compiles code for the {/block} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return bool true |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
list($_attr, $_nocache, $_buffer, $_has_nocache_code, $_caching) = $this->closeTag($compiler, array('block')); |
// init block parameter |
$_block = $compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]; |
unset($compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ]); |
$_name = $_attr[ 'name' ]; |
$_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null; |
unset($_attr[ 'assign' ], $_attr[ 'name' ]); |
foreach ($_attr as $name => $stat) { |
if ((is_bool($stat) && $stat !== false) || (!is_bool($stat) && $stat !== 'false')) { |
$_block[ $name ] = 'true'; |
} |
} |
$_className = $compiler->_cache[ 'blockClass' ][ $compiler->_cache[ 'blockNesting' ] ]; |
// get compiled block code |
$_functionCode = $compiler->parser->current_buffer; |
// setup buffer for template function code |
$compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); |
$output = "<?php\n"; |
$output .= "/* {block {$_name}} */\n"; |
$output .= "class {$_className} extends Smarty_Internal_Block\n"; |
$output .= "{\n"; |
foreach ($_block as $property => $value) { |
$output .= "public \${$property} = " . var_export($value, true) . ";\n"; |
} |
$output .= "public function callBlock(Smarty_Internal_Template \$_smarty_tpl) {\n"; |
$output .= $compiler->compileRequiredPlugins(); |
$compiler->restoreRequiredPlugins(); |
if ($compiler->template->compiled->has_nocache_code) { |
$output .= "\$_smarty_tpl->cached->hashes['{$compiler->template->compiled->nocache_hash}'] = true;\n"; |
} |
if (isset($_assign)) { |
$output .= "ob_start();\n"; |
} |
$output .= "?>\n"; |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$output |
) |
); |
$compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode); |
$output = "<?php\n"; |
if (isset($_assign)) { |
$output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; |
} |
$output .= "}\n"; |
$output .= "}\n"; |
$output .= "/* {/block {$_name}} */\n\n"; |
$output .= "?>\n"; |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$output |
) |
); |
$compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser); |
$compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); |
// restore old status |
$compiler->template->compiled->has_nocache_code = $_has_nocache_code; |
$compiler->tag_nocache = $compiler->nocache; |
$compiler->nocache = $_nocache; |
$compiler->parser->current_buffer = $_buffer; |
$output = "<?php \n"; |
if ($compiler->_cache[ 'blockNesting' ] === 1) { |
$output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n"; |
} else { |
$output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n"; |
} |
$output .= "?>\n"; |
--$compiler->_cache[ 'blockNesting' ]; |
if ($compiler->_cache[ 'blockNesting' ] === 0) { |
unset($compiler->_cache[ 'blockNesting' ]); |
} |
$compiler->has_code = true; |
$compiler->suppressNocacheProcessing = true; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_block_child.php |
---|
0,0 → 1,24 |
<?php |
/** |
* This file is part of Smarty. |
* |
* (c) 2015 Uwe Tews |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Smarty Internal Plugin Compile Block Child Class |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Compile_Block_Child extends Smarty_Internal_Compile_Child |
{ |
/** |
* Tag name |
* |
* @var string |
*/ |
public $tag = 'block_child'; |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_block_parent.php |
---|
0,0 → 1,31 |
<?php |
/** |
* This file is part of Smarty. |
* |
* (c) 2015 Uwe Tews |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Smarty Internal Plugin Compile Block Parent Class |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Compile_Block_Parent extends Smarty_Internal_Compile_Child |
{ |
/** |
* Tag name |
* |
* @var string |
*/ |
public $tag = 'block_parent'; |
/** |
* Block type |
* |
* @var string |
*/ |
public $blockType = 'Parent'; |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_break.php |
---|
0,0 → 1,117 |
<?php |
/** |
* Smarty Internal Plugin Compile Break |
* Compiles the {break} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Break Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('levels'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('levels'); |
/** |
* Tag name may be overloaded by Smarty_Internal_Compile_Continue |
* |
* @var string |
*/ |
public $tag = 'break'; |
/** |
* Compiles code for the {break} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
list($levels, $foreachLevels) = $this->checkLevels($args, $compiler); |
$output = "<?php "; |
if ($foreachLevels > 0 && $this->tag === 'continue') { |
$foreachLevels--; |
} |
if ($foreachLevels > 0) { |
/* @var Smarty_Internal_Compile_Foreach $foreachCompiler */ |
$foreachCompiler = $compiler->getTagCompiler('foreach'); |
$output .= $foreachCompiler->compileRestore($foreachLevels); |
} |
$output .= "{$this->tag} {$levels};?>"; |
return $output; |
} |
/** |
* check attributes and return array of break and foreach levels |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return array |
* @throws \SmartyCompilerException |
*/ |
public function checkLevels($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true); |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
if ($_attr[ 'nocache' ] === true) { |
$compiler->trigger_template_error('nocache option not allowed', null, true); |
} |
if (isset($_attr[ 'levels' ])) { |
if (!is_numeric($_attr[ 'levels' ])) { |
$compiler->trigger_template_error('level attribute must be a numeric constant', null, true); |
} |
$levels = $_attr[ 'levels' ]; |
} else { |
$levels = 1; |
} |
$level_count = $levels; |
$stack_count = count($compiler->_tag_stack) - 1; |
$foreachLevels = 0; |
$lastTag = ''; |
while ($level_count > 0 && $stack_count >= 0) { |
if (isset($_is_loopy[ $compiler->_tag_stack[ $stack_count ][ 0 ] ])) { |
$lastTag = $compiler->_tag_stack[ $stack_count ][ 0 ]; |
if ($level_count === 0) { |
break; |
} |
$level_count--; |
if ($compiler->_tag_stack[ $stack_count ][ 0 ] === 'foreach') { |
$foreachLevels++; |
} |
} |
$stack_count--; |
} |
if ($level_count !== 0) { |
$compiler->trigger_template_error("cannot {$this->tag} {$levels} level(s)", null, true); |
} |
if ($lastTag === 'foreach' && $this->tag === 'break' && $foreachLevels > 0) { |
$foreachLevels--; |
} |
return array($levels, $foreachLevels); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_call.php |
---|
0,0 → 1,89 |
<?php |
/** |
* Smarty Internal Plugin Compile Function_Call |
* Compiles the calls of user defined tags defined by {function} |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Function_Call Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Compiles the calls of user defined tags defined by {function} |
* |
* @param array $args array with attributes from parser |
* @param object $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
// save possible attributes |
if (isset($_attr[ 'assign' ])) { |
// output will be stored in a smarty variable instead of being displayed |
$_assign = $_attr[ 'assign' ]; |
} |
//$_name = trim($_attr['name'], "''"); |
$_name = $_attr[ 'name' ]; |
unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'nocache' ]); |
// set flag (compiled code of {function} must be included in cache file |
if (!$compiler->template->caching || $compiler->nocache || $compiler->tag_nocache) { |
$_nocache = 'true'; |
} else { |
$_nocache = 'false'; |
} |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
$_params = 'array(' . implode(',', $_paramsArray) . ')'; |
//$compiler->suppressNocacheProcessing = true; |
// was there an assign attribute |
if (isset($_assign)) { |
$_output = |
"<?php ob_start();\n\$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});\n\$_smarty_tpl->assign({$_assign}, ob_get_clean());?>\n"; |
} else { |
$_output = |
"<?php \$_smarty_tpl->smarty->ext->_tplFunction->callTemplateFunction(\$_smarty_tpl, {$_name}, {$_params}, {$_nocache});?>\n"; |
} |
return $_output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_capture.php |
---|
0,0 → 1,105 |
<?php |
/** |
* Smarty Internal Plugin Compile Capture |
* Compiles the {capture} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Capture Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('name', 'assign', 'append'); |
/** |
* Compiles code for the {$smarty.capture.xxx} |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
*/ |
public static function compileSpecialVariable( |
$args, |
Smarty_Internal_TemplateCompilerBase $compiler, |
$parameter = null |
) { |
return '$_smarty_tpl->smarty->ext->_capture->getBuffer($_smarty_tpl' . |
(isset($parameter[ 1 ]) ? ", {$parameter[ 1 ]})" : ')'); |
} |
/** |
* Compiles code for the {capture} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param null $parameter |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter = null) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args, $parameter, 'capture'); |
$buffer = isset($_attr[ 'name' ]) ? $_attr[ 'name' ] : "'default'"; |
$assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : 'null'; |
$append = isset($_attr[ 'append' ]) ? $_attr[ 'append' ] : 'null'; |
$compiler->_cache[ 'capture_stack' ][] = array($compiler->nocache); |
// maybe nocache because of nocache variables |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
$_output = "<?php \$_smarty_tpl->smarty->ext->_capture->open(\$_smarty_tpl, $buffer, $assign, $append);?>"; |
return $_output; |
} |
} |
/** |
* Smarty Internal Plugin Compile Captureclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/capture} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param null $parameter |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args, $parameter, '/capture'); |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
list($compiler->nocache) = array_pop($compiler->_cache[ 'capture_stack' ]); |
return "<?php \$_smarty_tpl->smarty->ext->_capture->close(\$_smarty_tpl);?>"; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_child.php |
---|
0,0 → 1,79 |
<?php |
/** |
* This file is part of Smarty. |
* |
* (c) 2015 Uwe Tews |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Smarty Internal Plugin Compile Child Class |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Compile_Child extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('assign'); |
/** |
* Tag name |
* |
* @var string |
*/ |
public $tag = 'child'; |
/** |
* Block type |
* |
* @var string |
*/ |
public $blockType = 'Child'; |
/** |
* Compiles code for the {child} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$tag = isset($parameter[ 0 ]) ? "'{$parameter[0]}'" : "'{{$this->tag}}'"; |
if (!isset($compiler->_cache[ 'blockNesting' ])) { |
$compiler->trigger_template_error( |
"{$tag} used outside {block} tags ", |
$compiler->parser->lex->taglineno |
); |
} |
$compiler->has_code = true; |
$compiler->suppressNocacheProcessing = true; |
if ($this->blockType === 'Child') { |
$compiler->_cache[ 'blockParams' ][ $compiler->_cache[ 'blockNesting' ] ][ 'callsChild' ] = 'true'; |
} |
$_assign = isset($_attr[ 'assign' ]) ? $_attr[ 'assign' ] : null; |
$output = "<?php \n"; |
if (isset($_assign)) { |
$output .= "ob_start();\n"; |
} |
$output .= '$_smarty_tpl->inheritance->call' . $this->blockType . '($_smarty_tpl, $this' . |
($this->blockType === 'Child' ? '' : ", {$tag}") . ");\n"; |
if (isset($_assign)) { |
$output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; |
} |
$output .= "?>\n"; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_config_load.php |
---|
0,0 → 1,96 |
<?php |
/** |
* Smarty Internal Plugin Compile Config Load |
* Compiles the {config load} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Config Load Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('file'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('file', 'section'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('section', 'scope'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $option_flags = array('nocache', 'noscope'); |
/** |
* Valid scope names |
* |
* @var array |
*/ |
public $valid_scopes = array( |
'local' => Smarty::SCOPE_LOCAL, 'parent' => Smarty::SCOPE_PARENT, |
'root' => Smarty::SCOPE_ROOT, 'tpl_root' => Smarty::SCOPE_TPL_ROOT, |
'smarty' => Smarty::SCOPE_SMARTY, 'global' => Smarty::SCOPE_SMARTY |
); |
/** |
* Compiles code for the {config_load} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
if ($_attr[ 'nocache' ] === true) { |
$compiler->trigger_template_error('nocache option not allowed', null, true); |
} |
// save possible attributes |
$conf_file = $_attr[ 'file' ]; |
if (isset($_attr[ 'section' ])) { |
$section = $_attr[ 'section' ]; |
} else { |
$section = 'null'; |
} |
// scope setup |
if ($_attr[ 'noscope' ]) { |
$_scope = -1; |
} else { |
$_scope = $compiler->convertScope($_attr, $this->valid_scopes); |
} |
// create config object |
$_output = |
"<?php\n\$_smarty_tpl->smarty->ext->configLoad->_loadConfigFile(\$_smarty_tpl, {$conf_file}, {$section}, {$_scope});\n?>\n"; |
return $_output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_continue.php |
---|
0,0 → 1,25 |
<?php |
/** |
* Smarty Internal Plugin Compile Continue |
* Compiles the {continue} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Continue Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Continue extends Smarty_Internal_Compile_Break |
{ |
/** |
* Tag name |
* |
* @var string |
*/ |
public $tag = 'continue'; |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_debug.php |
---|
0,0 → 1,40 |
<?php |
/** |
* Smarty Internal Plugin Compile Debug |
* Compiles the {debug} tag. |
* It opens a window the the Smarty Debugging Console. |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Debug Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {debug} tag |
* |
* @param array $args array with attributes from parser |
* @param object $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
// compile always as nocache |
$compiler->tag_nocache = true; |
// display debug template |
$_output = |
"<?php \$_smarty_debug = new Smarty_Internal_Debug;\n \$_smarty_debug->display_debug(\$_smarty_tpl);\n"; |
$_output .= "unset(\$_smarty_debug);\n?>"; |
return $_output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_eval.php |
---|
0,0 → 1,70 |
<?php |
/** |
* Smarty Internal Plugin Compile Eval |
* Compiles the {eval} tag. |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Eval Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('var'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('assign'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('var', 'assign'); |
/** |
* Compiles code for the {eval} tag |
* |
* @param array $args array with attributes from parser |
* @param object $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
if (isset($_attr[ 'assign' ])) { |
// output will be stored in a smarty variable instead of being displayed |
$_assign = $_attr[ 'assign' ]; |
} |
// create template object |
$_output = |
"\$_template = new {$compiler->smarty->template_class}('eval:'.{$_attr[ 'var' ]}, \$_smarty_tpl->smarty, \$_smarty_tpl);"; |
//was there an assign attribute? |
if (isset($_assign)) { |
$_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());"; |
} else { |
$_output .= 'echo $_template->fetch();'; |
} |
return "<?php $_output ?>"; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_extends.php |
---|
0,0 → 1,158 |
<?php |
/** |
* Smarty Internal Plugin Compile extend |
* Compiles the {extends} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile extend Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Extends extends Smarty_Internal_Compile_Shared_Inheritance |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('file'); |
/** |
* Array of names of optional attribute required by tag |
* use array('_any') if there is no restriction of attributes names |
* |
* @var array |
*/ |
public $optional_attributes = array('extends_resource'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('file'); |
/** |
* Compiles code for the {extends} tag extends: resource |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
if ($_attr[ 'nocache' ] === true) { |
$compiler->trigger_template_error('nocache option not allowed', $compiler->parser->lex->line - 1); |
} |
if (strpos($_attr[ 'file' ], '$_tmp') !== false) { |
$compiler->trigger_template_error('illegal value for file attribute', $compiler->parser->lex->line - 1); |
} |
// add code to initialize inheritance |
$this->registerInit($compiler, true); |
$file = trim($_attr[ 'file' ], '\'"'); |
if (strlen($file) > 8 && substr($file, 0, 8) === 'extends:') { |
// generate code for each template |
$files = array_reverse(explode('|', substr($file, 8))); |
$i = 0; |
foreach ($files as $file) { |
if ($file[ 0 ] === '"') { |
$file = trim($file, '".'); |
} else { |
$file = "'{$file}'"; |
} |
$i++; |
if ($i === count($files) && isset($_attr[ 'extends_resource' ])) { |
$this->compileEndChild($compiler); |
} |
$this->compileInclude($compiler, $file); |
} |
if (!isset($_attr[ 'extends_resource' ])) { |
$this->compileEndChild($compiler); |
} |
} else { |
$this->compileEndChild($compiler, $_attr[ 'file' ]); |
} |
$compiler->has_code = false; |
return ''; |
} |
/** |
* Add code for inheritance endChild() method to end of template |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param null|string $template optional inheritance parent template |
* |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
private function compileEndChild(Smarty_Internal_TemplateCompilerBase $compiler, $template = null) |
{ |
$inlineUids = ''; |
if (isset($template) && $compiler->smarty->merge_compiled_includes) { |
$code = $compiler->compileTag('include', array($template, array('scope' => 'parent'))); |
if (preg_match('/([,][\s]*[\'][a-z0-9]+[\'][,][\s]*[\']content.*[\'])[)]/', $code, $match)) { |
$inlineUids = $match[ 1 ]; |
} |
} |
$compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
'<?php $_smarty_tpl->inheritance->endChild($_smarty_tpl' . |
(isset($template) ? |
", {$template}{$inlineUids}" : |
'') . ");\n?>" |
); |
} |
/** |
* Add code for including subtemplate to end of template |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param string $template subtemplate name |
* |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
private function compileInclude(Smarty_Internal_TemplateCompilerBase $compiler, $template) |
{ |
$compiler->parser->template_postfix[] = new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$compiler->compileTag( |
'include', |
array( |
$template, |
array('scope' => 'parent') |
) |
) |
); |
} |
/** |
* Create source code for {extends} from source components array |
* |
* @param \Smarty_Internal_Template $template |
* |
* @return string |
*/ |
public static function extendsSourceArrayCode(Smarty_Internal_Template $template) |
{ |
$resources = array(); |
foreach ($template->source->components as $source) { |
$resources[] = $source->resource; |
} |
return $template->smarty->left_delimiter . 'extends file=\'extends:' . join('|', $resources) . |
'\' extends_resource=true' . $template->smarty->right_delimiter; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_for.php |
---|
0,0 → 1,164 |
<?php |
/** |
* Smarty Internal Plugin Compile For |
* Compiles the {for} {forelse} {/for} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile For Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {for} tag |
* Smarty 3 does implement two different syntax's: |
* - {for $var in $array} |
* For looping over arrays or iterators |
* - {for $x=0; $x<$y; $x++} |
* For general loops |
* The parser is generating different sets of attribute by which this compiler can |
* determine which syntax is used. |
* |
* @param array $args array with attributes from parser |
* @param object $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
*/ |
public function compile($args, $compiler, $parameter) |
{ |
$compiler->loopNesting++; |
if ($parameter === 0) { |
$this->required_attributes = array('start', 'to'); |
$this->optional_attributes = array('max', 'step'); |
} else { |
$this->required_attributes = array('start', 'ifexp', 'var', 'step'); |
$this->optional_attributes = array(); |
} |
$this->mapCache = array(); |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$output = "<?php\n"; |
if ($parameter === 1) { |
foreach ($_attr[ 'start' ] as $_statement) { |
if (is_array($_statement[ 'var' ])) { |
$var = $_statement[ 'var' ][ 'var' ]; |
$index = $_statement[ 'var' ][ 'smarty_internal_index' ]; |
} else { |
$var = $_statement[ 'var' ]; |
$index = ''; |
} |
$output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);\n"; |
$output .= "\$_smarty_tpl->tpl_vars[$var]->value{$index} = {$_statement['value']};\n"; |
} |
if (is_array($_attr[ 'var' ])) { |
$var = $_attr[ 'var' ][ 'var' ]; |
$index = $_attr[ 'var' ][ 'smarty_internal_index' ]; |
} else { |
$var = $_attr[ 'var' ]; |
$index = ''; |
} |
$output .= "if ($_attr[ifexp]) {\nfor (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$var]->value{$index}$_attr[step]) {\n"; |
} else { |
$_statement = $_attr[ 'start' ]; |
if (is_array($_statement[ 'var' ])) { |
$var = $_statement[ 'var' ][ 'var' ]; |
$index = $_statement[ 'var' ][ 'smarty_internal_index' ]; |
} else { |
$var = $_statement[ 'var' ]; |
$index = ''; |
} |
$output .= "\$_smarty_tpl->tpl_vars[$var] = new Smarty_Variable(null, \$_smarty_tpl->isRenderingCache);"; |
if (isset($_attr[ 'step' ])) { |
$output .= "\$_smarty_tpl->tpl_vars[$var]->step = $_attr[step];"; |
} else { |
$output .= "\$_smarty_tpl->tpl_vars[$var]->step = 1;"; |
} |
if (isset($_attr[ 'max' ])) { |
$output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step)),$_attr[max]);\n"; |
} else { |
$output .= "\$_smarty_tpl->tpl_vars[$var]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$var]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$var]->step));\n"; |
} |
$output .= "if (\$_smarty_tpl->tpl_vars[$var]->total > 0) {\n"; |
$output .= "for (\$_smarty_tpl->tpl_vars[$var]->value{$index} = $_statement[value], \$_smarty_tpl->tpl_vars[$var]->iteration = 1;\$_smarty_tpl->tpl_vars[$var]->iteration <= \$_smarty_tpl->tpl_vars[$var]->total;\$_smarty_tpl->tpl_vars[$var]->value{$index} += \$_smarty_tpl->tpl_vars[$var]->step, \$_smarty_tpl->tpl_vars[$var]->iteration++) {\n"; |
$output .= "\$_smarty_tpl->tpl_vars[$var]->first = \$_smarty_tpl->tpl_vars[$var]->iteration === 1;"; |
$output .= "\$_smarty_tpl->tpl_vars[$var]->last = \$_smarty_tpl->tpl_vars[$var]->iteration === \$_smarty_tpl->tpl_vars[$var]->total;"; |
} |
$output .= '?>'; |
$this->openTag($compiler, 'for', array('for', $compiler->nocache)); |
// maybe nocache because of nocache variables |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
// return compiled code |
return $output; |
} |
} |
/** |
* Smarty Internal Plugin Compile Forelse Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {forelse} tag |
* |
* @param array $args array with attributes from parser |
* @param object $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
*/ |
public function compile($args, $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
list($openTag, $nocache) = $this->closeTag($compiler, array('for')); |
$this->openTag($compiler, 'forelse', array('forelse', $nocache)); |
return "<?php }} else { ?>"; |
} |
} |
/** |
* Smarty Internal Plugin Compile Forclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/for} tag |
* |
* @param array $args array with attributes from parser |
* @param object $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
*/ |
public function compile($args, $compiler, $parameter) |
{ |
$compiler->loopNesting--; |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
list($openTag, $compiler->nocache) = $this->closeTag($compiler, array('for', 'forelse')); |
$output = "<?php }\n"; |
if ($openTag !== 'forelse') { |
$output .= "}\n"; |
} |
$output .= "?>"; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_foreach.php |
---|
0,0 → 1,343 |
<?php |
/** |
* Smarty Internal Plugin Compile Foreach |
* Compiles the {foreach} {foreachelse} {/foreach} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Foreach Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Foreach extends Smarty_Internal_Compile_Private_ForeachSection |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('from', 'item'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('name', 'key', 'properties'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('from', 'item', 'key', 'name'); |
/** |
* counter |
* |
* @var int |
*/ |
public $counter = 0; |
/** |
* Name of this tag |
* |
* @var string |
*/ |
public $tagName = 'foreach'; |
/** |
* Valid properties of $smarty.foreach.name.xxx variable |
* |
* @var array |
*/ |
public $nameProperties = array('first', 'last', 'index', 'iteration', 'show', 'total'); |
/** |
* Valid properties of $item@xxx variable |
* |
* @var array |
*/ |
public $itemProperties = array('first', 'last', 'index', 'iteration', 'show', 'total', 'key'); |
/** |
* Flag if tag had name attribute |
* |
* @var bool |
*/ |
public $isNamed = false; |
/** |
* Compiles code for the {foreach} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$compiler->loopNesting++; |
// init |
$this->isNamed = false; |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$from = $_attr[ 'from' ]; |
$item = $compiler->getId($_attr[ 'item' ]); |
if ($item === false) { |
$item = $compiler->getVariableName($_attr[ 'item' ]); |
} |
$key = $name = null; |
$attributes = array('item' => $item); |
if (isset($_attr[ 'key' ])) { |
$key = $compiler->getId($_attr[ 'key' ]); |
if ($key === false) { |
$key = $compiler->getVariableName($_attr[ 'key' ]); |
} |
$attributes[ 'key' ] = $key; |
} |
if (isset($_attr[ 'name' ])) { |
$this->isNamed = true; |
$name = $attributes[ 'name' ] = $compiler->getId($_attr[ 'name' ]); |
} |
foreach ($attributes as $a => $v) { |
if ($v === false) { |
$compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true); |
} |
} |
$fromName = $compiler->getVariableName($_attr[ 'from' ]); |
if ($fromName) { |
foreach (array('item', 'key') as $a) { |
if (isset($attributes[ $a ]) && $attributes[ $a ] === $fromName) { |
$compiler->trigger_template_error( |
"'{$a}' and 'from' may not have same variable name '{$fromName}'", |
null, |
true |
); |
} |
} |
} |
$itemVar = "\$_smarty_tpl->tpl_vars['{$item}']"; |
$local = '$__foreach_' . $attributes[ 'item' ] . '_' . $this->counter++ . '_'; |
// search for used tag attributes |
$itemAttr = array(); |
$namedAttr = array(); |
$this->scanForProperties($attributes, $compiler); |
if (!empty($this->matchResults[ 'item' ])) { |
$itemAttr = $this->matchResults[ 'item' ]; |
} |
if (!empty($this->matchResults[ 'named' ])) { |
$namedAttr = $this->matchResults[ 'named' ]; |
} |
if (isset($_attr[ 'properties' ]) && preg_match_all('/[\'](.*?)[\']/', $_attr[ 'properties' ], $match)) { |
foreach ($match[ 1 ] as $prop) { |
if (in_array($prop, $this->itemProperties)) { |
$itemAttr[ $prop ] = true; |
} else { |
$compiler->trigger_template_error("Invalid property '{$prop}'", null, true); |
} |
} |
if ($this->isNamed) { |
foreach ($match[ 1 ] as $prop) { |
if (in_array($prop, $this->nameProperties)) { |
$nameAttr[ $prop ] = true; |
} else { |
$compiler->trigger_template_error("Invalid property '{$prop}'", null, true); |
} |
} |
} |
} |
if (isset($itemAttr[ 'first' ])) { |
$itemAttr[ 'index' ] = true; |
} |
if (isset($namedAttr[ 'first' ])) { |
$namedAttr[ 'index' ] = true; |
} |
if (isset($namedAttr[ 'last' ])) { |
$namedAttr[ 'iteration' ] = true; |
$namedAttr[ 'total' ] = true; |
} |
if (isset($itemAttr[ 'last' ])) { |
$itemAttr[ 'iteration' ] = true; |
$itemAttr[ 'total' ] = true; |
} |
if (isset($namedAttr[ 'show' ])) { |
$namedAttr[ 'total' ] = true; |
} |
if (isset($itemAttr[ 'show' ])) { |
$itemAttr[ 'total' ] = true; |
} |
$keyTerm = ''; |
if (isset($attributes[ 'key' ])) { |
$keyTerm = "\$_smarty_tpl->tpl_vars['{$key}']->value => "; |
} |
if (isset($itemAttr[ 'key' ])) { |
$keyTerm = "{$itemVar}->key => "; |
} |
if ($this->isNamed) { |
$foreachVar = "\$_smarty_tpl->tpl_vars['__smarty_foreach_{$attributes['name']}']"; |
} |
$needTotal = isset($itemAttr[ 'total' ]); |
// Register tag |
$this->openTag( |
$compiler, |
'foreach', |
array('foreach', $compiler->nocache, $local, $itemVar, empty($itemAttr) ? 1 : 2) |
); |
// maybe nocache because of nocache variables |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
// generate output code |
$output = "<?php\n"; |
$output .= "\$_from = \$_smarty_tpl->smarty->ext->_foreach->init(\$_smarty_tpl, $from, " . |
var_export($item, true); |
if ($name || $needTotal || $key) { |
$output .= ', ' . var_export($needTotal, true); |
} |
if ($name || $key) { |
$output .= ', ' . var_export($key, true); |
} |
if ($name) { |
$output .= ', ' . var_export($name, true) . ', ' . var_export($namedAttr, true); |
} |
$output .= ");\n"; |
if (isset($itemAttr[ 'show' ])) { |
$output .= "{$itemVar}->show = ({$itemVar}->total > 0);\n"; |
} |
if (isset($itemAttr[ 'iteration' ])) { |
$output .= "{$itemVar}->iteration = 0;\n"; |
} |
if (isset($itemAttr[ 'index' ])) { |
$output .= "{$itemVar}->index = -1;\n"; |
} |
$output .= "{$itemVar}->do_else = true;\n"; |
$output .= "if (\$_from !== null) foreach (\$_from as {$keyTerm}{$itemVar}->value) {\n"; |
$output .= "{$itemVar}->do_else = false;\n"; |
if (isset($attributes[ 'key' ]) && isset($itemAttr[ 'key' ])) { |
$output .= "\$_smarty_tpl->tpl_vars['{$key}']->value = {$itemVar}->key;\n"; |
} |
if (isset($itemAttr[ 'iteration' ])) { |
$output .= "{$itemVar}->iteration++;\n"; |
} |
if (isset($itemAttr[ 'index' ])) { |
$output .= "{$itemVar}->index++;\n"; |
} |
if (isset($itemAttr[ 'first' ])) { |
$output .= "{$itemVar}->first = !{$itemVar}->index;\n"; |
} |
if (isset($itemAttr[ 'last' ])) { |
$output .= "{$itemVar}->last = {$itemVar}->iteration === {$itemVar}->total;\n"; |
} |
if (isset($foreachVar)) { |
if (isset($namedAttr[ 'iteration' ])) { |
$output .= "{$foreachVar}->value['iteration']++;\n"; |
} |
if (isset($namedAttr[ 'index' ])) { |
$output .= "{$foreachVar}->value['index']++;\n"; |
} |
if (isset($namedAttr[ 'first' ])) { |
$output .= "{$foreachVar}->value['first'] = !{$foreachVar}->value['index'];\n"; |
} |
if (isset($namedAttr[ 'last' ])) { |
$output .= "{$foreachVar}->value['last'] = {$foreachVar}->value['iteration'] === {$foreachVar}->value['total'];\n"; |
} |
} |
if (!empty($itemAttr)) { |
$output .= "{$local}saved = {$itemVar};\n"; |
} |
$output .= '?>'; |
return $output; |
} |
/** |
* Compiles code for to restore saved template variables |
* |
* @param int $levels number of levels to restore |
* |
* @return string compiled code |
*/ |
public function compileRestore($levels) |
{ |
return "\$_smarty_tpl->smarty->ext->_foreach->restore(\$_smarty_tpl, {$levels});"; |
} |
} |
/** |
* Smarty Internal Plugin Compile Foreachelse Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {foreachelse} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
list($openTag, $nocache, $local, $itemVar, $restore) = $this->closeTag($compiler, array('foreach')); |
$this->openTag($compiler, 'foreachelse', array('foreachelse', $nocache, $local, $itemVar, 0)); |
$output = "<?php\n"; |
if ($restore === 2) { |
$output .= "{$itemVar} = {$local}saved;\n"; |
} |
$output .= "}\nif ({$itemVar}->do_else) {\n?>"; |
return $output; |
} |
} |
/** |
* Smarty Internal Plugin Compile Foreachclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/foreach} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$compiler->loopNesting--; |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
list( |
$openTag, $compiler->nocache, $local, $itemVar, $restore |
) = $this->closeTag($compiler, array('foreach', 'foreachelse')); |
$output = "<?php\n"; |
if ($restore === 2) { |
$output .= "{$itemVar} = {$local}saved;\n"; |
} |
$output .= "}\n"; |
/* @var Smarty_Internal_Compile_Foreach $foreachCompiler */ |
$foreachCompiler = $compiler->getTagCompiler('foreach'); |
$output .= $foreachCompiler->compileRestore(1); |
$output .= "?>"; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_function.php |
---|
0,0 → 1,231 |
<?php |
/** |
* Smarty Internal Plugin Compile Function |
* Compiles the {function} {/function} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Function Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Compiles code for the {function} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return bool true |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
if ($_attr[ 'nocache' ] === true) { |
$compiler->trigger_template_error('nocache option not allowed', null, true); |
} |
unset($_attr[ 'nocache' ]); |
$_name = trim($_attr[ 'name' ], '\'"'); |
$compiler->parent_compiler->tpl_function[ $_name ] = array(); |
$save = array( |
$_attr, $compiler->parser->current_buffer, $compiler->template->compiled->has_nocache_code, |
$compiler->template->caching |
); |
$this->openTag($compiler, 'function', $save); |
// Init temporary context |
$compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); |
$compiler->template->compiled->has_nocache_code = false; |
$compiler->saveRequiredPlugins(true); |
return true; |
} |
} |
/** |
* Smarty Internal Plugin Compile Functionclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiler object |
* |
* @var object |
*/ |
private $compiler = null; |
/** |
* Compiles code for the {/function} tag |
* |
* @param array $args array with attributes from parser |
* @param object|\Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return bool true |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$this->compiler = $compiler; |
$saved_data = $this->closeTag($compiler, array('function')); |
$_attr = $saved_data[ 0 ]; |
$_name = trim($_attr[ 'name' ], '\'"'); |
$compiler->parent_compiler->tpl_function[ $_name ][ 'compiled_filepath' ] = |
$compiler->parent_compiler->template->compiled->filepath; |
$compiler->parent_compiler->tpl_function[ $_name ][ 'uid' ] = $compiler->template->source->uid; |
$_parameter = $_attr; |
unset($_parameter[ 'name' ]); |
// default parameter |
$_paramsArray = array(); |
foreach ($_parameter as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
if (!empty($_paramsArray)) { |
$_params = 'array(' . implode(',', $_paramsArray) . ')'; |
$_paramsCode = "\$params = array_merge($_params, \$params);\n"; |
} else { |
$_paramsCode = ''; |
} |
$_functionCode = $compiler->parser->current_buffer; |
// setup buffer for template function code |
$compiler->parser->current_buffer = new Smarty_Internal_ParseTree_Template(); |
$_funcName = "smarty_template_function_{$_name}_{$compiler->template->compiled->nocache_hash}"; |
$_funcNameCaching = $_funcName . '_nocache'; |
if ($compiler->template->compiled->has_nocache_code) { |
$compiler->parent_compiler->tpl_function[ $_name ][ 'call_name_caching' ] = $_funcNameCaching; |
$output = "<?php\n"; |
$output .= "/* {$_funcNameCaching} */\n"; |
$output .= "if (!function_exists('{$_funcNameCaching}')) {\n"; |
$output .= "function {$_funcNameCaching} (Smarty_Internal_Template \$_smarty_tpl,\$params) {\n"; |
$output .= "ob_start();\n"; |
$output .= $compiler->compileRequiredPlugins(); |
$output .= "\$_smarty_tpl->compiled->has_nocache_code = true;\n"; |
$output .= $_paramsCode; |
$output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n"; |
$output .= "\$params = var_export(\$params, true);\n"; |
$output .= "echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php "; |
$output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->saveTemplateVariables(\\\$_smarty_tpl, '{$_name}');\nforeach (\$params as \\\$key => \\\$value) {\n\\\$_smarty_tpl->tpl_vars[\\\$key] = new Smarty_Variable(\\\$value, \\\$_smarty_tpl->isRenderingCache);\n}\n?>"; |
$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";?>"; |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$output |
) |
); |
$compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode); |
$output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php "; |
$output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n"; |
$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>"; |
$output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash, ob_get_clean());\n"; |
$output .= "}\n}\n"; |
$output .= "/*/ {$_funcName}_nocache */\n\n"; |
$output .= "?>\n"; |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$output |
) |
); |
$_functionCode = new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
preg_replace_callback( |
"/((<\?php )?echo '\/\*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/([\S\s]*?)\/\*\/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", |
array($this, 'removeNocache'), |
$_functionCode->to_smarty_php($compiler->parser) |
) |
); |
} |
$compiler->parent_compiler->tpl_function[ $_name ][ 'call_name' ] = $_funcName; |
$output = "<?php\n"; |
$output .= "/* {$_funcName} */\n"; |
$output .= "if (!function_exists('{$_funcName}')) {\n"; |
$output .= "function {$_funcName}(Smarty_Internal_Template \$_smarty_tpl,\$params) {\n"; |
$output .= $_paramsCode; |
$output .= "foreach (\$params as \$key => \$value) {\n\$_smarty_tpl->tpl_vars[\$key] = new Smarty_Variable(\$value, \$_smarty_tpl->isRenderingCache);\n}\n"; |
$output .= $compiler->compileCheckPlugins(array_merge($compiler->required_plugins[ 'compiled' ], |
$compiler->required_plugins[ 'nocache' ])); |
$output .= "?>\n"; |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$output |
) |
); |
$compiler->parser->current_buffer->append_subtree($compiler->parser, $_functionCode); |
$output = "<?php\n}}\n"; |
$output .= "/*/ {$_funcName} */\n\n"; |
$output .= "?>\n"; |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$output |
) |
); |
$compiler->parent_compiler->blockOrFunctionCode .= $compiler->parser->current_buffer->to_smarty_php($compiler->parser); |
// restore old buffer |
$compiler->parser->current_buffer = $saved_data[ 1 ]; |
// restore old status |
$compiler->restoreRequiredPlugins(); |
$compiler->template->compiled->has_nocache_code = $saved_data[ 2 ]; |
$compiler->template->caching = $saved_data[ 3 ]; |
return true; |
} |
/** |
* Remove nocache code |
* |
* @param $match |
* |
* @return string |
*/ |
public function removeNocache($match) |
{ |
$code = |
preg_replace( |
"/((<\?php )?echo '\/\*%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/)|(\/\*\/%%SmartyNocache:{$this->compiler->template->compiled->nocache_hash}%%\*\/';(\?>\n)?)/", |
'', |
$match[ 0 ] |
); |
$code = str_replace(array('\\\'', '\\\\\''), array('\'', '\\\''), $code); |
return $code; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_if.php |
---|
0,0 → 1,207 |
<?php |
/** |
* Smarty Internal Plugin Compile If |
* Compiles the {if} {else} {elseif} {/if} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile If Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {if} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$this->openTag($compiler, 'if', array(1, $compiler->nocache)); |
// must whole block be nocache ? |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
if (!isset($parameter[ 'if condition' ])) { |
$compiler->trigger_template_error('missing if condition', null, true); |
} |
if (is_array($parameter[ 'if condition' ])) { |
if (is_array($parameter[ 'if condition' ][ 'var' ])) { |
$var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; |
} else { |
$var = $parameter[ 'if condition' ][ 'var' ]; |
} |
if ($compiler->nocache) { |
// create nocache var to make it know for further compiling |
$compiler->setNocacheInVariable($var); |
} |
$prefixVar = $compiler->getNewPrefixVariable(); |
$_output = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n"; |
$assignAttr = array(); |
$assignAttr[][ 'value' ] = $prefixVar; |
$assignCompiler = new Smarty_Internal_Compile_Assign(); |
if (is_array($parameter[ 'if condition' ][ 'var' ])) { |
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; |
$_output .= $assignCompiler->compile( |
$assignAttr, |
$compiler, |
array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) |
); |
} else { |
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; |
$_output .= $assignCompiler->compile($assignAttr, $compiler, array()); |
} |
$_output .= "<?php if ({$prefixVar}) {?>"; |
return $_output; |
} else { |
return "<?php if ({$parameter['if condition']}) {?>"; |
} |
} |
} |
/** |
* Smarty Internal Plugin Compile Else Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {else} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif')); |
$this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache)); |
return '<?php } else { ?>'; |
} |
} |
/** |
* Smarty Internal Plugin Compile ElseIf Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {elseif} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif')); |
if (!isset($parameter[ 'if condition' ])) { |
$compiler->trigger_template_error('missing elseif condition', null, true); |
} |
$assignCode = ''; |
$var = ''; |
if (is_array($parameter[ 'if condition' ])) { |
$condition_by_assign = true; |
if (is_array($parameter[ 'if condition' ][ 'var' ])) { |
$var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; |
} else { |
$var = $parameter[ 'if condition' ][ 'var' ]; |
} |
if ($compiler->nocache) { |
// create nocache var to make it know for further compiling |
$compiler->setNocacheInVariable($var); |
} |
$prefixVar = $compiler->getNewPrefixVariable(); |
$assignCode = "<?php {$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]};?>\n"; |
$assignCompiler = new Smarty_Internal_Compile_Assign(); |
$assignAttr = array(); |
$assignAttr[][ 'value' ] = $prefixVar; |
if (is_array($parameter[ 'if condition' ][ 'var' ])) { |
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; |
$assignCode .= $assignCompiler->compile( |
$assignAttr, |
$compiler, |
array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) |
); |
} else { |
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; |
$assignCode .= $assignCompiler->compile($assignAttr, $compiler, array()); |
} |
} else { |
$condition_by_assign = false; |
} |
$prefixCode = $compiler->getPrefixCode(); |
if (empty($prefixCode)) { |
if ($condition_by_assign) { |
$this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache)); |
$_output = $compiler->appendCode("<?php } else {\n?>", $assignCode); |
return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>"); |
} else { |
$this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache)); |
return "<?php } elseif ({$parameter['if condition']}) {?>"; |
} |
} else { |
$_output = $compiler->appendCode("<?php } else {\n?>", $prefixCode); |
$this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache)); |
if ($condition_by_assign) { |
$_output = $compiler->appendCode($_output, $assignCode); |
return $compiler->appendCode($_output, "<?php if ({$prefixVar}) {?>"); |
} else { |
return $compiler->appendCode($_output, "<?php if ({$parameter['if condition']}) {?>"); |
} |
} |
} |
} |
/** |
* Smarty Internal Plugin Compile Ifclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/if} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif')); |
$tmp = ''; |
for ($i = 0; $i < $nesting; $i++) { |
$tmp .= '}'; |
} |
return "<?php {$tmp}?>"; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_include.php |
---|
0,0 → 1,347 |
<?php |
/** |
* Smarty Internal Plugin Compile Include |
* Compiles the {include} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Include Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase |
{ |
/** |
* caching mode to create nocache code but no cache file |
*/ |
const CACHING_NOCACHE_CODE = 9999; |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('file'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('file'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $option_flags = array('nocache', 'inline', 'caching'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Valid scope names |
* |
* @var array |
*/ |
public $valid_scopes = array( |
'parent' => Smarty::SCOPE_PARENT, 'root' => Smarty::SCOPE_ROOT, |
'global' => Smarty::SCOPE_GLOBAL, 'tpl_root' => Smarty::SCOPE_TPL_ROOT, |
'smarty' => Smarty::SCOPE_SMARTY |
); |
/** |
* Compiles code for the {include} tag |
* |
* @param array $args array with attributes from parser |
* @param Smarty_Internal_SmartyTemplateCompiler $compiler compiler object |
* |
* @return string |
* @throws \Exception |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_SmartyTemplateCompiler $compiler) |
{ |
$uid = $t_hash = null; |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$fullResourceName = $source_resource = $_attr[ 'file' ]; |
$variable_template = false; |
$cache_tpl = false; |
// parse resource_name |
if (preg_match('/^([\'"])(([A-Za-z0-9_\-]{2,})[:])?(([^$()]+)|(.+))\1$/', $source_resource, $match)) { |
$type = !empty($match[ 3 ]) ? $match[ 3 ] : $compiler->template->smarty->default_resource_type; |
$name = !empty($match[ 5 ]) ? $match[ 5 ] : $match[ 6 ]; |
$handler = Smarty_Resource::load($compiler->smarty, $type); |
if ($handler->recompiled || $handler->uncompiled) { |
$variable_template = true; |
} |
if (!$variable_template) { |
if ($type !== 'string') { |
$fullResourceName = "{$type}:{$name}"; |
$compiled = $compiler->parent_compiler->template->compiled; |
if (isset($compiled->includes[ $fullResourceName ])) { |
$compiled->includes[ $fullResourceName ]++; |
$cache_tpl = true; |
} else { |
if ("{$compiler->template->source->type}:{$compiler->template->source->name}" == |
$fullResourceName |
) { |
// recursive call of current template |
$compiled->includes[ $fullResourceName ] = 2; |
$cache_tpl = true; |
} else { |
$compiled->includes[ $fullResourceName ] = 1; |
} |
} |
$fullResourceName = $match[ 1 ] . $fullResourceName . $match[ 1 ]; |
} |
} |
if (empty($match[ 5 ])) { |
$variable_template = true; |
} |
} else { |
$variable_template = true; |
} |
// scope setup |
$_scope = $compiler->convertScope($_attr, $this->valid_scopes); |
// set flag to cache subtemplate object when called within loop or template name is variable. |
if ($cache_tpl || $variable_template || $compiler->loopNesting > 0) { |
$_cache_tpl = 'true'; |
} else { |
$_cache_tpl = 'false'; |
} |
// assume caching is off |
$_caching = Smarty::CACHING_OFF; |
$call_nocache = $compiler->tag_nocache || $compiler->nocache; |
// caching was on and {include} is not in nocache mode |
if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) { |
$_caching = self::CACHING_NOCACHE_CODE; |
} |
// flag if included template code should be merged into caller |
$merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || $_attr[ 'inline' ] === true) && |
!$compiler->template->source->handler->recompiled; |
if ($merge_compiled_includes) { |
// variable template name ? |
if ($variable_template) { |
$merge_compiled_includes = false; |
} |
// variable compile_id? |
if (isset($_attr[ 'compile_id' ]) && $compiler->isVariable($_attr[ 'compile_id' ])) { |
$merge_compiled_includes = false; |
} |
} |
/* |
* if the {include} tag provides individual parameter for caching or compile_id |
* the subtemplate must not be included into the common cache file and is treated like |
* a call in nocache mode. |
* |
*/ |
if ($_attr[ 'nocache' ] !== true && $_attr[ 'caching' ]) { |
$_caching = $_new_caching = (int)$_attr[ 'caching' ]; |
$call_nocache = true; |
} else { |
$_new_caching = Smarty::CACHING_LIFETIME_CURRENT; |
} |
if (isset($_attr[ 'cache_lifetime' ])) { |
$_cache_lifetime = $_attr[ 'cache_lifetime' ]; |
$call_nocache = true; |
$_caching = $_new_caching; |
} else { |
$_cache_lifetime = '$_smarty_tpl->cache_lifetime'; |
} |
if (isset($_attr[ 'cache_id' ])) { |
$_cache_id = $_attr[ 'cache_id' ]; |
$call_nocache = true; |
$_caching = $_new_caching; |
} else { |
$_cache_id = '$_smarty_tpl->cache_id'; |
} |
if (isset($_attr[ 'compile_id' ])) { |
$_compile_id = $_attr[ 'compile_id' ]; |
} else { |
$_compile_id = '$_smarty_tpl->compile_id'; |
} |
// if subtemplate will be called in nocache mode do not merge |
if ($compiler->template->caching && $call_nocache) { |
$merge_compiled_includes = false; |
} |
// assign attribute |
if (isset($_attr[ 'assign' ])) { |
// output will be stored in a smarty variable instead of being displayed |
if ($_assign = $compiler->getId($_attr[ 'assign' ])) { |
$_assign = "'{$_assign}'"; |
if ($compiler->tag_nocache || $compiler->nocache || $call_nocache) { |
// create nocache var to make it know for further compiling |
$compiler->setNocacheInVariable($_attr[ 'assign' ]); |
} |
} else { |
$_assign = $_attr[ 'assign' ]; |
} |
} |
$has_compiled_template = false; |
if ($merge_compiled_includes) { |
$c_id = isset($_attr[ 'compile_id' ]) ? $_attr[ 'compile_id' ] : $compiler->template->compile_id; |
// we must observe different compile_id and caching |
$t_hash = sha1($c_id . ($_caching ? '--caching' : '--nocaching')); |
$compiler->smarty->allow_ambiguous_resources = true; |
/* @var Smarty_Internal_Template $tpl */ |
$tpl = new $compiler->smarty->template_class( |
trim($fullResourceName, '"\''), |
$compiler->smarty, |
$compiler->template, |
$compiler->template->cache_id, |
$c_id, |
$_caching |
); |
$uid = $tpl->source->type . $tpl->source->uid; |
if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) { |
$has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash); |
} else { |
$has_compiled_template = true; |
} |
unset($tpl); |
} |
// delete {include} standard attributes |
unset($_attr[ 'file' ], $_attr[ 'assign' ], $_attr[ 'cache_id' ], $_attr[ 'compile_id' ], $_attr[ 'cache_lifetime' ], $_attr[ 'nocache' ], $_attr[ 'caching' ], $_attr[ 'scope' ], $_attr[ 'inline' ]); |
// remaining attributes must be assigned as smarty variable |
$_vars = 'array()'; |
if (!empty($_attr)) { |
$_pairs = array(); |
// create variables |
foreach ($_attr as $key => $value) { |
$_pairs[] = "'$key'=>$value"; |
} |
$_vars = 'array(' . join(',', $_pairs) . ')'; |
} |
$update_compile_id = $compiler->template->caching && !$compiler->tag_nocache && !$compiler->nocache && |
$_compile_id !== '$_smarty_tpl->compile_id'; |
if ($has_compiled_template && !$call_nocache) { |
$_output = "<?php\n"; |
if ($update_compile_id) { |
$_output .= $compiler->makeNocacheCode("\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n"); |
} |
if (!empty($_attr) && $_caching === 9999 && $compiler->template->caching) { |
$_vars_nc = "foreach ($_vars as \$ik => \$iv) {\n"; |
$_vars_nc .= "\$_smarty_tpl->tpl_vars[\$ik] = new Smarty_Variable(\$iv);\n"; |
$_vars_nc .= "}\n"; |
$_output .= substr($compiler->processNocacheCode('<?php ' . $_vars_nc . "?>\n", true), 6, -3); |
} |
if (isset($_assign)) { |
$_output .= "ob_start();\n"; |
} |
$_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, {$_cache_id}, {$_compile_id}, {$_caching}, {$_cache_lifetime}, {$_vars}, {$_scope}, {$_cache_tpl}, '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid']}', '{$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['func']}');\n"; |
if (isset($_assign)) { |
$_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; |
} |
if ($update_compile_id) { |
$_output .= $compiler->makeNocacheCode("\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n"); |
} |
$_output .= "?>"; |
return $_output; |
} |
if ($call_nocache) { |
$compiler->tag_nocache = true; |
} |
$_output = "<?php "; |
if ($update_compile_id) { |
$_output .= "\$_compile_id_save[] = \$_smarty_tpl->compile_id;\n\$_smarty_tpl->compile_id = {$_compile_id};\n"; |
} |
// was there an assign attribute |
if (isset($_assign)) { |
$_output .= "ob_start();\n"; |
} |
$_output .= "\$_smarty_tpl->_subTemplateRender({$fullResourceName}, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_scope, {$_cache_tpl});\n"; |
if (isset($_assign)) { |
$_output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; |
} |
if ($update_compile_id) { |
$_output .= "\$_smarty_tpl->compile_id = array_pop(\$_compile_id_save);\n"; |
} |
$_output .= "?>"; |
return $_output; |
} |
/** |
* Compile inline sub template |
* |
* @param \Smarty_Internal_SmartyTemplateCompiler $compiler |
* @param \Smarty_Internal_Template $tpl |
* @param string $t_hash |
* |
* @return bool |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function compileInlineTemplate( |
Smarty_Internal_SmartyTemplateCompiler $compiler, |
Smarty_Internal_Template $tpl, |
$t_hash |
) { |
$uid = $tpl->source->type . $tpl->source->uid; |
if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) { |
$compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] = $tpl->source->uid; |
if (isset($compiler->template->inheritance)) { |
$tpl->inheritance = clone $compiler->template->inheritance; |
} |
$tpl->compiled = new Smarty_Template_Compiled(); |
$tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash; |
$tpl->loadCompiler(); |
// save unique function name |
$compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] = |
$tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true)); |
// make sure whole chain gets compiled |
$tpl->mustCompile = true; |
$compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] = |
$tpl->compiled->nocache_hash; |
if ($tpl->source->type === 'file') { |
$sourceInfo = $tpl->source->filepath; |
} else { |
$basename = $tpl->source->handler->getBasename($tpl->source); |
$sourceInfo = $tpl->source->type . ':' . |
($basename ? $basename : $tpl->source->name); |
} |
// get compiled code |
$compiled_code = "<?php\n\n"; |
$compiled_code .= "/* Start inline template \"{$sourceInfo}\" =============================*/\n"; |
$compiled_code .= "function {$tpl->compiled->unifunc} (Smarty_Internal_Template \$_smarty_tpl) {\n"; |
$compiled_code .= "?>\n" . $tpl->compiler->compileTemplateSource($tpl, null, $compiler->parent_compiler); |
$compiled_code .= "<?php\n"; |
$compiled_code .= "}\n?>\n"; |
$compiled_code .= $tpl->compiler->postFilter($tpl->compiler->blockOrFunctionCode); |
$compiled_code .= "<?php\n\n"; |
$compiled_code .= "/* End inline template \"{$sourceInfo}\" =============================*/\n"; |
$compiled_code .= '?>'; |
unset($tpl->compiler); |
if ($tpl->compiled->has_nocache_code) { |
// replace nocache_hash |
$compiled_code = |
str_replace( |
"{$tpl->compiled->nocache_hash}", |
$compiler->template->compiled->nocache_hash, |
$compiled_code |
); |
$compiler->template->compiled->has_nocache_code = true; |
} |
$compiler->parent_compiler->mergedSubTemplatesCode[ $tpl->compiled->unifunc ] = $compiled_code; |
return true; |
} else { |
return false; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_include_php.php |
---|
0,0 → 1,110 |
<?php |
/** |
* Smarty Internal Plugin Compile Include PHP |
* Compiles the {include_php} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Insert Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('file'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('file'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('once', 'assign'); |
/** |
* Compiles code for the {include_php} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
if (!($compiler->smarty instanceof SmartyBC)) { |
throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable"); |
} |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
/** |
* |
* |
* @var Smarty_Internal_Template $_smarty_tpl |
* used in evaluated code |
*/ |
$_smarty_tpl = $compiler->template; |
$_filepath = false; |
$_file = null; |
eval('$_file = @' . $_attr[ 'file' ] . ';'); |
if (!isset($compiler->smarty->security_policy) && file_exists($_file)) { |
$_filepath = $compiler->smarty->_realpath($_file, true); |
} else { |
if (isset($compiler->smarty->security_policy)) { |
$_dir = $compiler->smarty->security_policy->trusted_dir; |
} else { |
$_dir = $compiler->smarty->trusted_dir; |
} |
if (!empty($_dir)) { |
foreach ((array)$_dir as $_script_dir) { |
$_path = $compiler->smarty->_realpath($_script_dir . DIRECTORY_SEPARATOR . $_file, true); |
if (file_exists($_path)) { |
$_filepath = $_path; |
break; |
} |
} |
} |
} |
if ($_filepath === false) { |
$compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", null, true); |
} |
if (isset($compiler->smarty->security_policy)) { |
$compiler->smarty->security_policy->isTrustedPHPDir($_filepath); |
} |
if (isset($_attr[ 'assign' ])) { |
// output will be stored in a smarty variable instead of being displayed |
$_assign = $_attr[ 'assign' ]; |
} |
$_once = '_once'; |
if (isset($_attr[ 'once' ])) { |
if ($_attr[ 'once' ] === 'false') { |
$_once = ''; |
} |
} |
if (isset($_assign)) { |
return "<?php ob_start();\ninclude{$_once} ('{$_filepath}');\n\$_smarty_tpl->assign({$_assign},ob_get_clean());\n?>"; |
} else { |
return "<?php include{$_once} ('{$_filepath}');?>\n"; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_insert.php |
---|
0,0 → 1,157 |
<?php |
/** |
* Smarty Internal Plugin Compile Insert |
* Compiles the {insert} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Insert Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('name'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Compiles code for the {insert} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache); |
if (!$nocacheParam) { |
// do not compile as nocache code |
$compiler->suppressNocacheProcessing = true; |
} |
$compiler->tag_nocache = true; |
$_smarty_tpl = $compiler->template; |
$_name = null; |
$_script = null; |
$_output = '<?php '; |
// save possible attributes |
eval('$_name = @' . $_attr[ 'name' ] . ';'); |
if (isset($_attr[ 'assign' ])) { |
// output will be stored in a smarty variable instead of being displayed |
$_assign = $_attr[ 'assign' ]; |
// create variable to make sure that the compiler knows about its nocache status |
$var = trim($_attr[ 'assign' ], '\''); |
if (isset($compiler->template->tpl_vars[ $var ])) { |
$compiler->template->tpl_vars[ $var ]->nocache = true; |
} else { |
$compiler->template->tpl_vars[ $var ] = new Smarty_Variable(null, true); |
} |
} |
if (isset($_attr[ 'script' ])) { |
// script which must be included |
$_function = "smarty_insert_{$_name}"; |
$_smarty_tpl = $compiler->template; |
$_filepath = false; |
eval('$_script = @' . $_attr[ 'script' ] . ';'); |
if (!isset($compiler->smarty->security_policy) && file_exists($_script)) { |
$_filepath = $_script; |
} else { |
if (isset($compiler->smarty->security_policy)) { |
$_dir = $compiler->smarty->security_policy->trusted_dir; |
} else { |
$_dir = $compiler->smarty instanceof SmartyBC ? $compiler->smarty->trusted_dir : null; |
} |
if (!empty($_dir)) { |
foreach ((array)$_dir as $_script_dir) { |
$_script_dir = rtrim($_script_dir, '/\\') . DIRECTORY_SEPARATOR; |
if (file_exists($_script_dir . $_script)) { |
$_filepath = $_script_dir . $_script; |
break; |
} |
} |
} |
} |
if ($_filepath === false) { |
$compiler->trigger_template_error("{insert} missing script file '{$_script}'", null, true); |
} |
// code for script file loading |
$_output .= "require_once '{$_filepath}' ;"; |
include_once $_filepath; |
if (!is_callable($_function)) { |
$compiler->trigger_template_error( |
" {insert} function '{$_function}' is not callable in script file '{$_script}'", |
null, |
true |
); |
} |
} else { |
$_filepath = 'null'; |
$_function = "insert_{$_name}"; |
// function in PHP script ? |
if (!is_callable($_function)) { |
// try plugin |
if (!$_function = $compiler->getPlugin($_name, 'insert')) { |
$compiler->trigger_template_error( |
"{insert} no function or plugin found for '{$_name}'", |
null, |
true |
); |
} |
} |
} |
// delete {insert} standard attributes |
unset($_attr[ 'name' ], $_attr[ 'assign' ], $_attr[ 'script' ], $_attr[ 'nocache' ]); |
// convert attributes into parameter array string |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
$_paramsArray[] = "'$_key' => $_value"; |
} |
$_params = 'array(' . implode(", ", $_paramsArray) . ')'; |
// call insert |
if (isset($_assign)) { |
if ($_smarty_tpl->caching && !$nocacheParam) { |
$_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}',{$_assign});?>"; |
} else { |
$_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>"; |
} |
} else { |
if ($_smarty_tpl->caching && !$nocacheParam) { |
$_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>"; |
} else { |
$_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>"; |
} |
} |
$compiler->template->compiled->has_nocache_code = true; |
return $_output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_ldelim.php |
---|
0,0 → 1,37 |
<?php |
/** |
* Smarty Internal Plugin Compile Ldelim |
* Compiles the {ldelim} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Ldelim Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {ldelim} tag |
* This tag does output the left delimiter |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$_attr = $this->getAttributes($compiler, $args); |
if ($_attr[ 'nocache' ] === true) { |
$compiler->trigger_template_error('nocache option not allowed', null, true); |
} |
return $compiler->smarty->left_delimiter; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_make_nocache.php |
---|
0,0 → 1,62 |
<?php |
/** |
* Smarty Internal Plugin Compile Make_Nocache |
* Compiles the {make_nocache} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Make_Nocache Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Make_Nocache extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $option_flags = array(); |
/** |
* Array of names of required attribute required by tag |
* |
* @var array |
*/ |
public $required_attributes = array('var'); |
/** |
* Shorttag attribute order defined by its names |
* |
* @var array |
*/ |
public $shorttag_order = array('var'); |
/** |
* Compiles code for the {make_nocache} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
if ($compiler->template->caching) { |
$output = "<?php \$_smarty_tpl->smarty->ext->_make_nocache->save(\$_smarty_tpl, {$_attr[ 'var' ]});\n?>\n"; |
$compiler->template->compiled->has_nocache_code = true; |
$compiler->suppressNocacheProcessing = true; |
return $output; |
} else { |
return true; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_nocache.php |
---|
0,0 → 1,73 |
<?php |
/** |
* Smarty Internal Plugin Compile Nocache |
* Compiles the {nocache} {/nocache} tags. |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Nocache Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase |
{ |
/** |
* Array of names of valid option flags |
* |
* @var array |
*/ |
public $option_flags = array(); |
/** |
* Compiles code for the {nocache} tag |
* This tag does not generate compiled output. It only sets a compiler flag. |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return bool |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$_attr = $this->getAttributes($compiler, $args); |
$this->openTag($compiler, 'nocache', array($compiler->nocache)); |
// enter nocache mode |
$compiler->nocache = true; |
// this tag does not return compiled code |
$compiler->has_code = false; |
return true; |
} |
} |
/** |
* Smarty Internal Plugin Compile Nocacheclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/nocache} tag |
* This tag does not generate compiled output. It only sets a compiler flag. |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return bool |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$_attr = $this->getAttributes($compiler, $args); |
// leave nocache mode |
list($compiler->nocache) = $this->closeTag($compiler, array('nocache')); |
// this tag does not return compiled code |
$compiler->has_code = false; |
return true; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_parent.php |
---|
0,0 → 1,31 |
<?php |
/** |
* This file is part of Smarty. |
* |
* (c) 2015 Uwe Tews |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Smarty Internal Plugin Compile Parent Class |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Compile_Parent extends Smarty_Internal_Compile_Child |
{ |
/** |
* Tag name |
* |
* @var string |
*/ |
public $tag = 'parent'; |
/** |
* Block type |
* |
* @var string |
*/ |
public $blockType = 'Parent'; |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php |
---|
0,0 → 1,124 |
<?php |
/** |
* Smarty Internal Plugin Compile Block Plugin |
* Compiles code for the execution of block plugin |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Block Plugin Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* nesting level |
* |
* @var int |
*/ |
public $nesting = 0; |
/** |
* Compiles code for the execution of block plugin |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* @param string $tag name of block plugin |
* @param string $function PHP function name |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function = null) |
{ |
if (!isset($tag[ 5 ]) || substr($tag, -5) !== 'close') { |
// opening tag of block plugin |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$this->nesting++; |
unset($_attr[ 'nocache' ]); |
list($callback, $_paramsArray, $callable) = $this->setup($compiler, $_attr, $tag, $function); |
$_params = 'array(' . implode(',', $_paramsArray) . ')'; |
// compile code |
$output = "<?php "; |
if (is_array($callback)) { |
$output .= "\$_block_plugin{$this->nesting} = isset({$callback[0]}) ? {$callback[0]} : null;\n"; |
$callback = "\$_block_plugin{$this->nesting}{$callback[1]}"; |
} |
if (isset($callable)) { |
$output .= "if (!is_callable({$callable})) {\nthrow new SmartyException('block tag \'{$tag}\' not callable or registered');\n}\n"; |
} |
$output .= "\$_smarty_tpl->smarty->_cache['_tag_stack'][] = array('{$tag}', {$_params});\n"; |
$output .= "\$_block_repeat=true;\necho {$callback}({$_params}, null, \$_smarty_tpl, \$_block_repeat);\nwhile (\$_block_repeat) {\nob_start();?>"; |
$this->openTag($compiler, $tag, array($_params, $compiler->nocache, $callback)); |
// maybe nocache because of nocache variables or nocache plugin |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
} else { |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
// closing tag of block plugin, restore nocache |
list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, -5)); |
// compile code |
if (!isset($parameter[ 'modifier_list' ])) { |
$mod_pre = $mod_post = $mod_content = ''; |
$mod_content2 = 'ob_get_clean()'; |
} else { |
$mod_content2 = "\$_block_content{$this->nesting}"; |
$mod_content = "\$_block_content{$this->nesting} = ob_get_clean();\n"; |
$mod_pre = "ob_start();\n"; |
$mod_post = 'echo ' . $compiler->compileTag( |
'private_modifier', |
array(), |
array( |
'modifierlist' => $parameter[ 'modifier_list' ], |
'value' => 'ob_get_clean()' |
) |
) . ";\n"; |
} |
$output = |
"<?php {$mod_content}\$_block_repeat=false;\n{$mod_pre}echo {$callback}({$_params}, {$mod_content2}, \$_smarty_tpl, \$_block_repeat);\n{$mod_post}}\n"; |
$output .= 'array_pop($_smarty_tpl->smarty->_cache[\'_tag_stack\']);?>'; |
} |
return $output; |
} |
/** |
* Setup callback and parameter array |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param array $_attr attributes |
* @param string $tag |
* @param string $function |
* |
* @return array |
*/ |
public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function) |
{ |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
return array($function, $_paramsArray, null); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_foreachsection.php |
---|
0,0 → 1,228 |
<?php |
/** |
* Smarty Internal Plugin Compile ForeachSection |
* Shared methods for {foreach} {section} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile ForeachSection Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_ForeachSection extends Smarty_Internal_CompileBase |
{ |
/** |
* Name of this tag |
* |
* @var string |
*/ |
public $tagName = ''; |
/** |
* Valid properties of $smarty.xxx variable |
* |
* @var array |
*/ |
public $nameProperties = array(); |
/** |
* {section} tag has no item properties |
* |
* @var array |
*/ |
public $itemProperties = null; |
/** |
* {section} tag has always name attribute |
* |
* @var bool |
*/ |
public $isNamed = true; |
/** |
* @var array |
*/ |
public $matchResults = array(); |
/** |
* Preg search pattern |
* |
* @var string |
*/ |
private $propertyPreg = ''; |
/** |
* Offsets in preg match result |
* |
* @var array |
*/ |
private $resultOffsets = array(); |
/** |
* Start offset |
* |
* @var int |
*/ |
private $startOffset = 0; |
/** |
* Scan sources for used tag attributes |
* |
* @param array $attributes |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @throws \SmartyException |
*/ |
public function scanForProperties($attributes, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$this->propertyPreg = '~('; |
$this->startOffset = 1; |
$this->resultOffsets = array(); |
$this->matchResults = array('named' => array(), 'item' => array()); |
if (isset($attributes[ 'name' ])) { |
$this->buildPropertyPreg(true, $attributes); |
} |
if (isset($this->itemProperties)) { |
if ($this->isNamed) { |
$this->propertyPreg .= '|'; |
} |
$this->buildPropertyPreg(false, $attributes); |
} |
$this->propertyPreg .= ')\W~i'; |
// Template source |
$this->matchTemplateSource($compiler); |
// Parent template source |
$this->matchParentTemplateSource($compiler); |
// {block} source |
$this->matchBlockSource($compiler); |
} |
/** |
* Build property preg string |
* |
* @param bool $named |
* @param array $attributes |
*/ |
public function buildPropertyPreg($named, $attributes) |
{ |
if ($named) { |
$this->resultOffsets[ 'named' ] = $this->startOffset = $this->startOffset + 3; |
$this->propertyPreg .= "(([\$]smarty[.]{$this->tagName}[.]" . |
($this->tagName === 'section' ? "|[\[]\s*" : '') . |
"){$attributes['name']}[.]("; |
$properties = $this->nameProperties; |
} else { |
$this->resultOffsets[ 'item' ] = $this->startOffset = $this->startOffset + 2; |
$this->propertyPreg .= "([\$]{$attributes['item']}[@]("; |
$properties = $this->itemProperties; |
} |
$propName = reset($properties); |
while ($propName) { |
$this->propertyPreg .= "{$propName}"; |
$propName = next($properties); |
if ($propName) { |
$this->propertyPreg .= '|'; |
} |
} |
$this->propertyPreg .= '))'; |
} |
/** |
* Find matches in source string |
* |
* @param string $source |
*/ |
public function matchProperty($source) |
{ |
preg_match_all($this->propertyPreg, $source, $match); |
foreach ($this->resultOffsets as $key => $offset) { |
foreach ($match[ $offset ] as $m) { |
if (!empty($m)) { |
$this->matchResults[ $key ][ strtolower($m) ] = true; |
} |
} |
} |
} |
/** |
* Find matches in template source |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
*/ |
public function matchTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$this->matchProperty($compiler->parser->lex->data); |
} |
/** |
* Find matches in all parent template source |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @throws \SmartyException |
*/ |
public function matchParentTemplateSource(Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// search parent compiler template source |
$nextCompiler = $compiler; |
while ($nextCompiler !== $nextCompiler->parent_compiler) { |
$nextCompiler = $nextCompiler->parent_compiler; |
if ($compiler !== $nextCompiler) { |
// get template source |
$_content = $nextCompiler->template->source->getContent(); |
if ($_content !== '') { |
// run pre filter if required |
if ((isset($nextCompiler->smarty->autoload_filters[ 'pre' ]) || |
isset($nextCompiler->smarty->registered_filters[ 'pre' ])) |
) { |
$_content = $nextCompiler->smarty->ext->_filterHandler->runFilter( |
'pre', |
$_content, |
$nextCompiler->template |
); |
} |
$this->matchProperty($_content); |
} |
} |
} |
} |
/** |
* Find matches in {block} tag source |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
*/ |
public function matchBlockSource(Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
} |
/** |
* Compiles code for the {$smarty.foreach.xxx} or {$smarty.section.xxx}tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compileSpecialVariable($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
$tag = strtolower(trim($parameter[ 0 ], '"\'')); |
$name = isset($parameter[ 1 ]) ? $compiler->getId($parameter[ 1 ]) : false; |
if (!$name) { |
$compiler->trigger_template_error("missing or illegal \$smarty.{$tag} name attribute", null, true); |
} |
$property = isset($parameter[ 2 ]) ? strtolower($compiler->getId($parameter[ 2 ])) : false; |
if (!$property || !in_array($property, $this->nameProperties)) { |
$compiler->trigger_template_error("missing or illegal \$smarty.{$tag} property attribute", null, true); |
} |
$tagVar = "'__smarty_{$tag}_{$name}'"; |
return "(isset(\$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}']) ? \$_smarty_tpl->tpl_vars[{$tagVar}]->value['{$property}'] : null)"; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php |
---|
0,0 → 1,78 |
<?php |
/** |
* Smarty Internal Plugin Compile Function Plugin |
* Compiles code for the execution of function plugin |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Function Plugin Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array(); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Compiles code for the execution of function plugin |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* @param string $tag name of function plugin |
* @param string $function PHP function name |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
unset($_attr[ 'nocache' ]); |
// convert attributes into parameter array string |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
$_params = 'array(' . implode(',', $_paramsArray) . ')'; |
// compile code |
$output = "{$function}({$_params},\$_smarty_tpl)"; |
if (!empty($parameter[ 'modifierlist' ])) { |
$output = $compiler->compileTag( |
'private_modifier', |
array(), |
array( |
'modifierlist' => $parameter[ 'modifierlist' ], |
'value' => $output |
) |
); |
} |
$output = "<?php echo {$output};?>\n"; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_modifier.php |
---|
0,0 → 1,158 |
<?php |
/** |
* Smarty Internal Plugin Compile Modifier |
* Compiles code for modifier execution |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Modifier Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for modifier execution |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$output = $parameter[ 'value' ]; |
// loop over list of modifiers |
foreach ($parameter[ 'modifierlist' ] as $single_modifier) { |
/* @var string $modifier */ |
$modifier = $single_modifier[ 0 ]; |
$single_modifier[ 0 ] = $output; |
$params = implode(',', $single_modifier); |
// check if we know already the type of modifier |
if (isset($compiler->known_modifier_type[ $modifier ])) { |
$modifier_types = array($compiler->known_modifier_type[ $modifier ]); |
} else { |
$modifier_types = array(1, 2, 3, 4, 5, 6); |
} |
foreach ($modifier_types as $type) { |
switch ($type) { |
case 1: |
// registered modifier |
if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) { |
if (is_callable($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ])) { |
$output = |
sprintf( |
'call_user_func_array($_smarty_tpl->registered_plugins[ \'%s\' ][ %s ][ 0 ], array( %s ))', |
Smarty::PLUGIN_MODIFIER, |
var_export($modifier, true), |
$params |
); |
$compiler->known_modifier_type[ $modifier ] = $type; |
break 2; |
} |
} |
break; |
case 2: |
// registered modifier compiler |
if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) { |
$output = |
call_user_func( |
$compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ], |
$single_modifier, |
$compiler->smarty |
); |
$compiler->known_modifier_type[ $modifier ] = $type; |
break 2; |
} |
break; |
case 3: |
// modifiercompiler plugin |
if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) { |
// check if modifier allowed |
if (!is_object($compiler->smarty->security_policy) |
|| $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) |
) { |
$plugin = 'smarty_modifiercompiler_' . $modifier; |
$output = $plugin($single_modifier, $compiler); |
} |
$compiler->known_modifier_type[ $modifier ] = $type; |
break 2; |
} |
break; |
case 4: |
// modifier plugin |
if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) { |
// check if modifier allowed |
if (!is_object($compiler->smarty->security_policy) |
|| $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) |
) { |
$output = "{$function}({$params})"; |
} |
$compiler->known_modifier_type[ $modifier ] = $type; |
break 2; |
} |
break; |
case 5: |
// PHP function |
if (is_callable($modifier)) { |
// check if modifier allowed |
if (!is_object($compiler->smarty->security_policy) |
|| $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler) |
) { |
$output = "{$modifier}({$params})"; |
} |
$compiler->known_modifier_type[ $modifier ] = $type; |
break 2; |
} |
break; |
case 6: |
// default plugin handler |
if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ]) |
|| (is_callable($compiler->smarty->default_plugin_handler_func) |
&& $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER)) |
) { |
$function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ]; |
// check if modifier allowed |
if (!is_object($compiler->smarty->security_policy) |
|| $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) |
) { |
if (!is_array($function)) { |
$output = "{$function}({$params})"; |
} else { |
if (is_object($function[ 0 ])) { |
$output = $function[ 0 ] . '->' . $function[ 1 ] . '(' . $params . ')'; |
} else { |
$output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')'; |
} |
} |
} |
if (isset($compiler->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) |
|| |
isset($compiler->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) |
) { |
// was a plugin |
$compiler->known_modifier_type[ $modifier ] = 4; |
} else { |
$compiler->known_modifier_type[ $modifier ] = $type; |
} |
break 2; |
} |
} |
} |
if (!isset($compiler->known_modifier_type[ $modifier ])) { |
$compiler->trigger_template_error("unknown modifier '{$modifier}'", null, true); |
} |
} |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php |
---|
0,0 → 1,42 |
<?php |
/** |
* Smarty Internal Plugin Compile Object Block Function |
* Compiles code for registered objects as block function |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Object Block Function Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_Compile_Private_Block_Plugin |
{ |
/** |
* Setup callback and parameter array |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param array $_attr attributes |
* @param string $tag |
* @param string $method |
* |
* @return array |
*/ |
public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $method) |
{ |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
$callback = array("\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]", "->{$method}"); |
return array($callback, $_paramsArray, "array(\$_block_plugin{$this->nesting}, '{$method}')"); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_object_function.php |
---|
0,0 → 1,85 |
<?php |
/** |
* Smarty Internal Plugin Compile Object Function |
* Compiles code for registered objects as function |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Object Function Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Compiles code for the execution of function plugin |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* @param string $tag name of function |
* @param string $method name of method to call |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $method) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
unset($_attr[ 'nocache' ]); |
$_assign = null; |
if (isset($_attr[ 'assign' ])) { |
$_assign = $_attr[ 'assign' ]; |
unset($_attr[ 'assign' ]); |
} |
// method or property ? |
if (is_callable(array($compiler->smarty->registered_objects[ $tag ][ 0 ], $method))) { |
// convert attributes into parameter array string |
if ($compiler->smarty->registered_objects[ $tag ][ 2 ]) { |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
$_params = 'array(' . implode(',', $_paramsArray) . ')'; |
$output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)"; |
} else { |
$_params = implode(',', $_attr); |
$output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})"; |
} |
} else { |
// object property |
$output = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}"; |
} |
if (!empty($parameter[ 'modifierlist' ])) { |
$output = $compiler->compileTag( |
'private_modifier', |
array(), |
array('modifierlist' => $parameter[ 'modifierlist' ], 'value' => $output) |
); |
} |
if (empty($_assign)) { |
return "<?php echo {$output};?>\n"; |
} else { |
return "<?php \$_smarty_tpl->assign({$_assign},{$output});?>\n"; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_php.php |
---|
0,0 → 1,253 |
<?php |
/** |
* Smarty Internal Plugin Compile PHP Expression |
* Compiles any tag which will output an expression or variable |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile PHP Expression Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Php extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('code', 'type'); |
/** |
* Compiles code for generating output from any expression |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$compiler->has_code = false; |
if ($_attr[ 'type' ] === 'xml') { |
$compiler->tag_nocache = true; |
$output = addcslashes($_attr[ 'code' ], "'\\"); |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$compiler->processNocacheCode( |
"<?php echo '{$output}';?>\n", |
true |
) |
) |
); |
return ''; |
} |
if ($_attr[ 'type' ] !== 'tag') { |
if ($compiler->php_handling === Smarty::PHP_REMOVE) { |
return ''; |
} elseif ($compiler->php_handling === Smarty::PHP_QUOTE) { |
$output = |
preg_replace_callback( |
'#(<\?(?:php|=)?)|(<%)|(<script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*>)|(\?>)|(%>)|(<\/script>)#i', |
array($this, 'quote'), |
$_attr[ 'code' ] |
); |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Text($output) |
); |
return ''; |
} elseif ($compiler->php_handling === Smarty::PHP_PASSTHRU || $_attr[ 'type' ] === 'unmatched') { |
$compiler->tag_nocache = true; |
$output = addcslashes($_attr[ 'code' ], "'\\"); |
$compiler->parser->current_buffer->append_subtree( |
$compiler->parser, |
new Smarty_Internal_ParseTree_Tag( |
$compiler->parser, |
$compiler->processNocacheCode( |
"<?php echo '{$output}';?>\n", |
true |
) |
) |
); |
return ''; |
} elseif ($compiler->php_handling === Smarty::PHP_ALLOW) { |
if (!($compiler->smarty instanceof SmartyBC)) { |
$compiler->trigger_template_error( |
'$smarty->php_handling PHP_ALLOW not allowed. Use SmartyBC to enable it', |
null, |
true |
); |
} |
$compiler->has_code = true; |
return $_attr[ 'code' ]; |
} else { |
$compiler->trigger_template_error('Illegal $smarty->php_handling value', null, true); |
} |
} else { |
$compiler->has_code = true; |
if (!($compiler->smarty instanceof SmartyBC)) { |
$compiler->trigger_template_error( |
'{php}{/php} tags not allowed. Use SmartyBC to enable them', |
null, |
true |
); |
} |
$ldel = preg_quote($compiler->smarty->left_delimiter, '#'); |
$rdel = preg_quote($compiler->smarty->right_delimiter, '#'); |
preg_match("#^({$ldel}php\\s*)((.)*?)({$rdel})#", $_attr[ 'code' ], $match); |
if (!empty($match[ 2 ])) { |
if ('nocache' === trim($match[ 2 ])) { |
$compiler->tag_nocache = true; |
} else { |
$compiler->trigger_template_error("illegal value of option flag '{$match[2]}'", null, true); |
} |
} |
return preg_replace( |
array("#^{$ldel}\\s*php\\s*(.)*?{$rdel}#", "#{$ldel}\\s*/\\s*php\\s*{$rdel}$#"), |
array('<?php ', '?>'), |
$_attr[ 'code' ] |
); |
} |
} |
/** |
* Lexer code for PHP tags |
* |
* This code has been moved from lexer here fo easier debugging and maintenance |
* |
* @param Smarty_Internal_Templatelexer $lex |
* |
* @throws \SmartyCompilerException |
*/ |
public function parsePhp(Smarty_Internal_Templatelexer $lex) |
{ |
$lex->token = Smarty_Internal_Templateparser::TP_PHP; |
$close = 0; |
$lex->taglineno = $lex->line; |
$closeTag = '?>'; |
if (strpos($lex->value, '<?xml') === 0) { |
$lex->is_xml = true; |
$lex->phpType = 'xml'; |
return; |
} elseif (strpos($lex->value, '<?') === 0) { |
$lex->phpType = 'php'; |
} elseif (strpos($lex->value, '<%') === 0) { |
$lex->phpType = 'asp'; |
$closeTag = '%>'; |
} elseif (strpos($lex->value, '%>') === 0) { |
$lex->phpType = 'unmatched'; |
} elseif (strpos($lex->value, '?>') === 0) { |
if ($lex->is_xml) { |
$lex->is_xml = false; |
$lex->phpType = 'xml'; |
return; |
} |
$lex->phpType = 'unmatched'; |
} elseif (strpos($lex->value, '<s') === 0) { |
$lex->phpType = 'script'; |
$closeTag = '</script>'; |
} elseif (strpos($lex->value, $lex->smarty->left_delimiter) === 0) { |
if ($lex->isAutoLiteral()) { |
$lex->token = Smarty_Internal_Templateparser::TP_TEXT; |
return; |
} |
$closeTag = "{$lex->smarty->left_delimiter}/php{$lex->smarty->right_delimiter}"; |
if ($lex->value === $closeTag) { |
$lex->compiler->trigger_template_error("unexpected closing tag '{$closeTag}'"); |
} |
$lex->phpType = 'tag'; |
} |
if ($lex->phpType === 'unmatched') { |
return; |
} |
if (($lex->phpType === 'php' || $lex->phpType === 'asp') |
&& |
($lex->compiler->php_handling === Smarty::PHP_PASSTHRU || |
$lex->compiler->php_handling === Smarty::PHP_QUOTE) |
) { |
return; |
} |
$start = $lex->counter + strlen($lex->value); |
$body = true; |
if (preg_match('~' . preg_quote($closeTag, '~') . '~i', $lex->data, $match, PREG_OFFSET_CAPTURE, $start)) { |
$close = $match[ 0 ][ 1 ]; |
} else { |
$lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'"); |
} |
while ($body) { |
if (preg_match( |
'~([/][*])|([/][/][^\n]*)|(\'[^\'\\\\]*(?:\\.[^\'\\\\]*)*\')|("[^"\\\\]*(?:\\.[^"\\\\]*)*")~', |
$lex->data, |
$match, |
PREG_OFFSET_CAPTURE, |
$start |
) |
) { |
$value = $match[ 0 ][ 0 ]; |
$from = $pos = $match[ 0 ][ 1 ]; |
if ($pos > $close) { |
$body = false; |
} else { |
$start = $pos + strlen($value); |
$phpCommentStart = $value === '/*'; |
if ($phpCommentStart) { |
$phpCommentEnd = preg_match('~([*][/])~', $lex->data, $match, PREG_OFFSET_CAPTURE, $start); |
if ($phpCommentEnd) { |
$pos2 = $match[ 0 ][ 1 ]; |
$start = $pos2 + strlen($match[ 0 ][ 0 ]); |
} |
} |
while ($close > $pos && $close < $start) { |
if (preg_match( |
'~' . preg_quote($closeTag, '~') . '~i', |
$lex->data, |
$match, |
PREG_OFFSET_CAPTURE, |
$from |
) |
) { |
$close = $match[ 0 ][ 1 ]; |
$from = $close + strlen($match[ 0 ][ 0 ]); |
} else { |
$lex->compiler->trigger_template_error("missing closing tag '{$closeTag}'"); |
} |
} |
if ($phpCommentStart && (!$phpCommentEnd || $pos2 > $close)) { |
$lex->taglineno = $lex->line + substr_count(substr($lex->data, $lex->counter, $start), "\n"); |
$lex->compiler->trigger_template_error("missing PHP comment closing tag '*/'"); |
} |
} |
} else { |
$body = false; |
} |
} |
$lex->value = substr($lex->data, $lex->counter, $close + strlen($closeTag) - $lex->counter); |
} |
/* |
* Call back function for $php_handling = PHP_QUOTE |
* |
*/ |
/** |
* @param $match |
* |
* @return string |
*/ |
private function quote($match) |
{ |
return htmlspecialchars($match[ 0 ], ENT_QUOTES); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_print_expression.php |
---|
0,0 → 1,161 |
<?php |
/** |
* Smarty Internal Plugin Compile Print Expression |
* Compiles any tag which will output an expression or variable |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Print Expression Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('assign'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $option_flags = array('nocache', 'nofilter'); |
/** |
* Compiles code for generating output from any expression |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$output = $parameter[ 'value' ]; |
// tag modifier |
if (!empty($parameter[ 'modifierlist' ])) { |
$output = $compiler->compileTag( |
'private_modifier', |
array(), |
array( |
'modifierlist' => $parameter[ 'modifierlist' ], |
'value' => $output |
) |
); |
} |
if (isset($_attr[ 'assign' ])) { |
// assign output to variable |
return "<?php \$_smarty_tpl->assign({$_attr['assign']},{$output});?>"; |
} else { |
// display value |
if (!$_attr[ 'nofilter' ]) { |
// default modifier |
if (!empty($compiler->smarty->default_modifiers)) { |
if (empty($compiler->default_modifier_list)) { |
$modifierlist = array(); |
foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) { |
preg_match_all( |
'/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', |
$single_default_modifier, |
$mod_array |
); |
for ($i = 0, $count = count($mod_array[ 0 ]); $i < $count; $i++) { |
if ($mod_array[ 0 ][ $i ] !== ':') { |
$modifierlist[ $key ][] = $mod_array[ 0 ][ $i ]; |
} |
} |
} |
$compiler->default_modifier_list = $modifierlist; |
} |
$output = $compiler->compileTag( |
'private_modifier', |
array(), |
array( |
'modifierlist' => $compiler->default_modifier_list, |
'value' => $output |
) |
); |
} |
// autoescape html |
if ($compiler->template->smarty->escape_html) { |
$output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')"; |
} |
// loop over registered filters |
if (!empty($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ])) { |
foreach ($compiler->template->smarty->registered_filters[ Smarty::FILTER_VARIABLE ] as $key => |
$function) { |
if (!is_array($function)) { |
$output = "{$function}({$output},\$_smarty_tpl)"; |
} elseif (is_object($function[ 0 ])) { |
$output = |
"\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)"; |
} else { |
$output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)"; |
} |
} |
} |
// auto loaded filters |
if (isset($compiler->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ])) { |
foreach ((array)$compiler->template->smarty->autoload_filters[ Smarty::FILTER_VARIABLE ] as $name) { |
$result = $this->compile_variable_filter($compiler, $name, $output); |
if ($result !== false) { |
$output = $result; |
} else { |
// not found, throw exception |
throw new SmartyException("Unable to load variable filter '{$name}'"); |
} |
} |
} |
foreach ($compiler->variable_filters as $filter) { |
if (count($filter) === 1 |
&& ($result = $this->compile_variable_filter($compiler, $filter[ 0 ], $output)) !== false |
) { |
$output = $result; |
} else { |
$output = $compiler->compileTag( |
'private_modifier', |
array(), |
array('modifierlist' => array($filter), 'value' => $output) |
); |
} |
} |
} |
$output = "<?php echo {$output};?>\n"; |
} |
return $output; |
} |
/** |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param string $name name of variable filter |
* @param string $output embedded output |
* |
* @return string |
* @throws \SmartyException |
*/ |
private function compile_variable_filter(Smarty_Internal_TemplateCompilerBase $compiler, $name, $output) |
{ |
$function = $compiler->getPlugin($name, 'variablefilter'); |
if ($function) { |
return "{$function}({$output},\$_smarty_tpl)"; |
} else { |
// not found |
return false; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_registered_block.php |
---|
0,0 → 1,72 |
<?php |
/** |
* Smarty Internal Plugin Compile Registered Block |
* Compiles code for the execution of a registered block function |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Registered Block Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_Compile_Private_Block_Plugin |
{ |
/** |
* Setup callback, parameter array and nocache mode |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param array $_attr attributes |
* @param string $tag |
* @param null $function |
* |
* @return array |
*/ |
public function setup(Smarty_Internal_TemplateCompilerBase $compiler, $_attr, $tag, $function) |
{ |
if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ])) { |
$tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ]; |
$callback = $tag_info[ 0 ]; |
if (is_array($callback)) { |
if (is_object($callback[ 0 ])) { |
$callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')"; |
$callback = |
array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "->{$callback[1]}"); |
} else { |
$callable = "array(\$_block_plugin{$this->nesting}, '{$callback[1]}')"; |
$callback = |
array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]", "::{$callback[1]}"); |
} |
} else { |
$callable = "\$_block_plugin{$this->nesting}"; |
$callback = array("\$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0]", ''); |
} |
} else { |
$tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $tag ]; |
$callback = $tag_info[ 0 ]; |
if (is_array($callback)) { |
$callable = "array('{$callback[0]}', '{$callback[1]}')"; |
$callback = "{$callback[1]}::{$callback[1]}"; |
} else { |
$callable = null; |
} |
} |
$compiler->tag_nocache = !$tag_info[ 1 ] | $compiler->tag_nocache; |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) { |
$_value = str_replace('\'', "^#^", $_value); |
$_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
return array($callback, $_paramsArray, $callable); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_registered_function.php |
---|
0,0 → 1,91 |
<?php |
/** |
* Smarty Internal Plugin Compile Registered Function |
* Compiles code for the execution of a registered function |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Registered Function Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('_any'); |
/** |
* Compiles code for the execution of a registered function |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* @param string $tag name of function |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
unset($_attr[ 'nocache' ]); |
if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) { |
$tag_info = $compiler->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ]; |
$is_registered = true; |
} else { |
$tag_info = $compiler->default_handler_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ]; |
$is_registered = false; |
} |
// not cacheable? |
$compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[ 1 ]; |
// convert attributes into parameter array string |
$_paramsArray = array(); |
foreach ($_attr as $_key => $_value) { |
if (is_int($_key)) { |
$_paramsArray[] = "$_key=>$_value"; |
} elseif ($compiler->template->caching && in_array($_key, $tag_info[ 2 ])) { |
$_value = str_replace('\'', "^#^", $_value); |
$_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^"; |
} else { |
$_paramsArray[] = "'$_key'=>$_value"; |
} |
} |
$_params = 'array(' . implode(',', $_paramsArray) . ')'; |
// compile code |
if ($is_registered) { |
$output = |
"call_user_func_array( \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0], array( {$_params},\$_smarty_tpl ) )"; |
} else { |
$function = $tag_info[ 0 ]; |
if (!is_array($function)) { |
$output = "{$function}({$_params},\$_smarty_tpl)"; |
} else { |
$output = "{$function[0]}::{$function[1]}({$_params},\$_smarty_tpl)"; |
} |
} |
if (!empty($parameter[ 'modifierlist' ])) { |
$output = $compiler->compileTag( |
'private_modifier', |
array(), |
array( |
'modifierlist' => $parameter[ 'modifierlist' ], |
'value' => $output |
) |
); |
} |
$output = "<?php echo {$output};?>\n"; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_private_special_variable.php |
---|
0,0 → 1,126 |
<?php |
/** |
* Smarty Internal Plugin Compile Special Smarty Variable |
* Compiles the special $smarty variables |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile special Smarty Variable Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the special $smarty variables |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param $parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
$_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2)); |
$variable = strtolower($compiler->getId($_index[ 0 ])); |
if ($variable === false) { |
$compiler->trigger_template_error("special \$Smarty variable name index can not be variable", null, true); |
} |
if (!isset($compiler->smarty->security_policy) |
|| $compiler->smarty->security_policy->isTrustedSpecialSmartyVar($variable, $compiler) |
) { |
switch ($variable) { |
case 'foreach': |
case 'section': |
if (!isset(Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ])) { |
$class = 'Smarty_Internal_Compile_' . ucfirst($variable); |
Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ] = new $class; |
} |
return Smarty_Internal_TemplateCompilerBase::$_tag_objects[ $variable ]->compileSpecialVariable( |
array(), |
$compiler, |
$_index |
); |
case 'capture': |
if (class_exists('Smarty_Internal_Compile_Capture')) { |
return Smarty_Internal_Compile_Capture::compileSpecialVariable(array(), $compiler, $_index); |
} |
return ''; |
case 'now': |
return 'time()'; |
case 'cookies': |
if (isset($compiler->smarty->security_policy) |
&& !$compiler->smarty->security_policy->allow_super_globals |
) { |
$compiler->trigger_template_error("(secure mode) super globals not permitted"); |
break; |
} |
$compiled_ref = '$_COOKIE'; |
break; |
case 'get': |
case 'post': |
case 'env': |
case 'server': |
case 'session': |
case 'request': |
if (isset($compiler->smarty->security_policy) |
&& !$compiler->smarty->security_policy->allow_super_globals |
) { |
$compiler->trigger_template_error("(secure mode) super globals not permitted"); |
break; |
} |
$compiled_ref = '$_' . strtoupper($variable); |
break; |
case 'template': |
return 'basename($_smarty_tpl->source->filepath)'; |
case 'template_object': |
return '$_smarty_tpl'; |
case 'current_dir': |
return 'dirname($_smarty_tpl->source->filepath)'; |
case 'version': |
return "Smarty::SMARTY_VERSION"; |
case 'const': |
if (isset($compiler->smarty->security_policy) |
&& !$compiler->smarty->security_policy->allow_constants |
) { |
$compiler->trigger_template_error("(secure mode) constants not permitted"); |
break; |
} |
if (strpos($_index[ 1 ], '$') === false && strpos($_index[ 1 ], '\'') === false) { |
return "@constant('{$_index[1]}')"; |
} else { |
return "@constant({$_index[1]})"; |
} |
// no break |
case 'config': |
if (isset($_index[ 2 ])) { |
return "(is_array(\$tmp = \$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])) ? \$tmp[$_index[2]] : null)"; |
} else { |
return "\$_smarty_tpl->smarty->ext->configload->_getConfigVariable(\$_smarty_tpl, $_index[1])"; |
} |
// no break |
case 'ldelim': |
return "\$_smarty_tpl->smarty->left_delimiter"; |
case 'rdelim': |
return "\$_smarty_tpl->smarty->right_delimiter"; |
default: |
$compiler->trigger_template_error('$smarty.' . trim($_index[ 0 ], "'") . ' is not defined'); |
break; |
} |
if (isset($_index[ 1 ])) { |
array_shift($_index); |
foreach ($_index as $_ind) { |
$compiled_ref = $compiled_ref . "[$_ind]"; |
} |
} |
return $compiled_ref; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_rdelim.php |
---|
0,0 → 1,34 |
<?php |
/** |
* Smarty Internal Plugin Compile Rdelim |
* Compiles the {rdelim} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Rdelim Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_Compile_Ldelim |
{ |
/** |
* Compiles code for the {rdelim} tag |
* This tag does output the right delimiter. |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
parent::compile($args, $compiler); |
return $compiler->smarty->right_delimiter; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_section.php |
---|
0,0 → 1,462 |
<?php |
/** |
* Smarty Internal Plugin Compile Section |
* Compiles the {section} {sectionelse} {/section} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Section Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Section extends Smarty_Internal_Compile_Private_ForeachSection |
{ |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $required_attributes = array('name', 'loop'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $shorttag_order = array('name', 'loop'); |
/** |
* Attribute definition: Overwrites base class. |
* |
* @var array |
* @see Smarty_Internal_CompileBase |
*/ |
public $optional_attributes = array('start', 'step', 'max', 'show', 'properties'); |
/** |
* counter |
* |
* @var int |
*/ |
public $counter = 0; |
/** |
* Name of this tag |
* |
* @var string |
*/ |
public $tagName = 'section'; |
/** |
* Valid properties of $smarty.section.name.xxx variable |
* |
* @var array |
*/ |
public $nameProperties = array( |
'first', 'last', 'index', 'iteration', 'show', 'total', 'rownum', 'index_prev', |
'index_next', 'loop' |
); |
/** |
* {section} tag has no item properties |
* |
* @var array |
*/ |
public $itemProperties = null; |
/** |
* {section} tag has always name attribute |
* |
* @var bool |
*/ |
public $isNamed = true; |
/** |
* Compiles code for the {section} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
* @throws \SmartyException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$compiler->loopNesting++; |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$attributes = array('name' => $compiler->getId($_attr[ 'name' ])); |
unset($_attr[ 'name' ]); |
foreach ($attributes as $a => $v) { |
if ($v === false) { |
$compiler->trigger_template_error("'{$a}' attribute/variable has illegal value", null, true); |
} |
} |
$local = "\$__section_{$attributes['name']}_" . $this->counter++ . '_'; |
$sectionVar = "\$_smarty_tpl->tpl_vars['__smarty_section_{$attributes['name']}']"; |
$this->openTag($compiler, 'section', array('section', $compiler->nocache, $local, $sectionVar)); |
// maybe nocache because of nocache variables |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
$initLocal = array(); |
$initNamedProperty = array(); |
$initFor = array(); |
$incFor = array(); |
$cmpFor = array(); |
$propValue = array( |
'index' => "{$sectionVar}->value['index']", 'show' => 'true', 'step' => 1, |
'iteration' => "{$local}iteration", |
); |
$propType = array('index' => 2, 'iteration' => 2, 'show' => 0, 'step' => 0,); |
// search for used tag attributes |
$this->scanForProperties($attributes, $compiler); |
if (!empty($this->matchResults[ 'named' ])) { |
$namedAttr = $this->matchResults[ 'named' ]; |
} |
if (isset($_attr[ 'properties' ]) && preg_match_all("/['](.*?)[']/", $_attr[ 'properties' ], $match)) { |
foreach ($match[ 1 ] as $prop) { |
if (in_array($prop, $this->nameProperties)) { |
$namedAttr[ $prop ] = true; |
} else { |
$compiler->trigger_template_error("Invalid property '{$prop}'", null, true); |
} |
} |
} |
$namedAttr[ 'index' ] = true; |
$output = "<?php\n"; |
foreach ($_attr as $attr_name => $attr_value) { |
switch ($attr_name) { |
case 'loop': |
if (is_numeric($attr_value)) { |
$v = (int)$attr_value; |
$t = 0; |
} else { |
$v = "(is_array(@\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop))"; |
$t = 1; |
} |
if ($t === 1) { |
$initLocal[ 'loop' ] = $v; |
$v = "{$local}loop"; |
} |
break; |
case 'show': |
if (is_bool($attr_value)) { |
$v = $attr_value ? 'true' : 'false'; |
$t = 0; |
} else { |
$v = "(bool) $attr_value"; |
$t = 3; |
} |
break; |
case 'step': |
if (is_numeric($attr_value)) { |
$v = (int)$attr_value; |
$v = ($v === 0) ? 1 : $v; |
$t = 0; |
break; |
} |
$initLocal[ 'step' ] = "((int)@$attr_value) === 0 ? 1 : (int)@$attr_value"; |
$v = "{$local}step"; |
$t = 2; |
break; |
case 'max': |
case 'start': |
if (is_numeric($attr_value)) { |
$v = (int)$attr_value; |
$t = 0; |
break; |
} |
$v = "(int)@$attr_value"; |
$t = 3; |
break; |
} |
if ($t === 3 && $compiler->getId($attr_value)) { |
$t = 1; |
} |
$propValue[ $attr_name ] = $v; |
$propType[ $attr_name ] = $t; |
} |
if (isset($namedAttr[ 'step' ])) { |
$initNamedProperty[ 'step' ] = $propValue[ 'step' ]; |
} |
if (isset($namedAttr[ 'iteration' ])) { |
$propValue[ 'iteration' ] = "{$sectionVar}->value['iteration']"; |
} |
$incFor[ 'iteration' ] = "{$propValue['iteration']}++"; |
$initFor[ 'iteration' ] = "{$propValue['iteration']} = 1"; |
if ($propType[ 'step' ] === 0) { |
if ($propValue[ 'step' ] === 1) { |
$incFor[ 'index' ] = "{$sectionVar}->value['index']++"; |
} elseif ($propValue[ 'step' ] > 1) { |
$incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}"; |
} else { |
$incFor[ 'index' ] = "{$sectionVar}->value['index'] -= " . -$propValue[ 'step' ]; |
} |
} else { |
$incFor[ 'index' ] = "{$sectionVar}->value['index'] += {$propValue['step']}"; |
} |
if (!isset($propValue[ 'max' ])) { |
$propValue[ 'max' ] = $propValue[ 'loop' ]; |
$propType[ 'max' ] = $propType[ 'loop' ]; |
} elseif ($propType[ 'max' ] !== 0) { |
$propValue[ 'max' ] = "{$propValue['max']} < 0 ? {$propValue['loop']} : {$propValue['max']}"; |
$propType[ 'max' ] = 1; |
} else { |
if ($propValue[ 'max' ] < 0) { |
$propValue[ 'max' ] = $propValue[ 'loop' ]; |
$propType[ 'max' ] = $propType[ 'loop' ]; |
} |
} |
if (!isset($propValue[ 'start' ])) { |
$start_code = |
array(1 => "{$propValue['step']} > 0 ? ", 2 => '0', 3 => ' : ', 4 => $propValue[ 'loop' ], 5 => ' - 1'); |
if ($propType[ 'loop' ] === 0) { |
$start_code[ 5 ] = ''; |
$start_code[ 4 ] = $propValue[ 'loop' ] - 1; |
} |
if ($propType[ 'step' ] === 0) { |
if ($propValue[ 'step' ] > 0) { |
$start_code = array(1 => '0'); |
$propType[ 'start' ] = 0; |
} else { |
$start_code[ 1 ] = $start_code[ 2 ] = $start_code[ 3 ] = ''; |
$propType[ 'start' ] = $propType[ 'loop' ]; |
} |
} else { |
$propType[ 'start' ] = 1; |
} |
$propValue[ 'start' ] = join('', $start_code); |
} else { |
$start_code = |
array( |
1 => "{$propValue['start']} < 0 ? ", 2 => 'max(', 3 => "{$propValue['step']} > 0 ? ", 4 => '0', |
5 => ' : ', 6 => '-1', 7 => ', ', 8 => "{$propValue['start']} + {$propValue['loop']}", 10 => ')', |
11 => ' : ', 12 => 'min(', 13 => $propValue[ 'start' ], 14 => ', ', |
15 => "{$propValue['step']} > 0 ? ", 16 => $propValue[ 'loop' ], 17 => ' : ', |
18 => $propType[ 'loop' ] === 0 ? $propValue[ 'loop' ] - 1 : "{$propValue['loop']} - 1", |
19 => ')' |
); |
if ($propType[ 'step' ] === 0) { |
$start_code[ 3 ] = $start_code[ 5 ] = $start_code[ 15 ] = $start_code[ 17 ] = ''; |
if ($propValue[ 'step' ] > 0) { |
$start_code[ 6 ] = $start_code[ 18 ] = ''; |
} else { |
$start_code[ 4 ] = $start_code[ 16 ] = ''; |
} |
} |
if ($propType[ 'start' ] === 0) { |
if ($propType[ 'loop' ] === 0) { |
$start_code[ 8 ] = $propValue[ 'start' ] + $propValue[ 'loop' ]; |
} |
$propType[ 'start' ] = $propType[ 'step' ] + $propType[ 'loop' ]; |
$start_code[ 1 ] = ''; |
if ($propValue[ 'start' ] < 0) { |
for ($i = 11; $i <= 19; $i++) { |
$start_code[ $i ] = ''; |
} |
if ($propType[ 'start' ] === 0) { |
$start_code = array( |
max( |
$propValue[ 'step' ] > 0 ? 0 : -1, |
$propValue[ 'start' ] + $propValue[ 'loop' ] |
) |
); |
} |
} else { |
for ($i = 1; $i <= 11; $i++) { |
$start_code[ $i ] = ''; |
} |
if ($propType[ 'start' ] === 0) { |
$start_code = |
array( |
min( |
$propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] : $propValue[ 'loop' ] - 1, |
$propValue[ 'start' ] |
) |
); |
} |
} |
} |
$propValue[ 'start' ] = join('', $start_code); |
} |
if ($propType[ 'start' ] !== 0) { |
$initLocal[ 'start' ] = $propValue[ 'start' ]; |
$propValue[ 'start' ] = "{$local}start"; |
} |
$initFor[ 'index' ] = "{$sectionVar}->value['index'] = {$propValue['start']}"; |
if (!isset($_attr[ 'start' ]) && !isset($_attr[ 'step' ]) && !isset($_attr[ 'max' ])) { |
$propValue[ 'total' ] = $propValue[ 'loop' ]; |
$propType[ 'total' ] = $propType[ 'loop' ]; |
} else { |
$propType[ 'total' ] = |
$propType[ 'start' ] + $propType[ 'loop' ] + $propType[ 'step' ] + $propType[ 'max' ]; |
if ($propType[ 'total' ] === 0) { |
$propValue[ 'total' ] = |
min( |
ceil( |
($propValue[ 'step' ] > 0 ? $propValue[ 'loop' ] - $propValue[ 'start' ] : |
(int)$propValue[ 'start' ] + 1) / abs($propValue[ 'step' ]) |
), |
$propValue[ 'max' ] |
); |
} else { |
$total_code = array( |
1 => 'min(', 2 => 'ceil(', 3 => '(', 4 => "{$propValue['step']} > 0 ? ", |
5 => $propValue[ 'loop' ], 6 => ' - ', 7 => $propValue[ 'start' ], 8 => ' : ', |
9 => $propValue[ 'start' ], 10 => '+ 1', 11 => ')', 12 => '/ ', 13 => 'abs(', |
14 => $propValue[ 'step' ], 15 => ')', 16 => ')', 17 => ", {$propValue['max']})", |
); |
if (!isset($propValue[ 'max' ])) { |
$total_code[ 1 ] = $total_code[ 17 ] = ''; |
} |
if ($propType[ 'loop' ] + $propType[ 'start' ] === 0) { |
$total_code[ 5 ] = $propValue[ 'loop' ] - $propValue[ 'start' ]; |
$total_code[ 6 ] = $total_code[ 7 ] = ''; |
} |
if ($propType[ 'start' ] === 0) { |
$total_code[ 9 ] = (int)$propValue[ 'start' ] + 1; |
$total_code[ 10 ] = ''; |
} |
if ($propType[ 'step' ] === 0) { |
$total_code[ 13 ] = $total_code[ 15 ] = ''; |
if ($propValue[ 'step' ] === 1 || $propValue[ 'step' ] === -1) { |
$total_code[ 2 ] = $total_code[ 12 ] = $total_code[ 14 ] = $total_code[ 16 ] = ''; |
} elseif ($propValue[ 'step' ] < 0) { |
$total_code[ 14 ] = -$propValue[ 'step' ]; |
} |
$total_code[ 4 ] = ''; |
if ($propValue[ 'step' ] > 0) { |
$total_code[ 8 ] = $total_code[ 9 ] = $total_code[ 10 ] = ''; |
} else { |
$total_code[ 5 ] = $total_code[ 6 ] = $total_code[ 7 ] = $total_code[ 8 ] = ''; |
} |
} |
$propValue[ 'total' ] = join('', $total_code); |
} |
} |
if (isset($namedAttr[ 'loop' ])) { |
$initNamedProperty[ 'loop' ] = "'loop' => {$propValue['loop']}"; |
} |
if (isset($namedAttr[ 'total' ])) { |
$initNamedProperty[ 'total' ] = "'total' => {$propValue['total']}"; |
if ($propType[ 'total' ] > 0) { |
$propValue[ 'total' ] = "{$sectionVar}->value['total']"; |
} |
} elseif ($propType[ 'total' ] > 0) { |
$initLocal[ 'total' ] = $propValue[ 'total' ]; |
$propValue[ 'total' ] = "{$local}total"; |
} |
$cmpFor[ 'iteration' ] = "{$propValue['iteration']} <= {$propValue['total']}"; |
foreach ($initLocal as $key => $code) { |
$output .= "{$local}{$key} = {$code};\n"; |
} |
$_vars = 'array(' . join(', ', $initNamedProperty) . ')'; |
$output .= "{$sectionVar} = new Smarty_Variable({$_vars});\n"; |
$cond_code = "{$propValue['total']} !== 0"; |
if ($propType[ 'total' ] === 0) { |
if ($propValue[ 'total' ] === 0) { |
$cond_code = 'false'; |
} else { |
$cond_code = 'true'; |
} |
} |
if ($propType[ 'show' ] > 0) { |
$output .= "{$local}show = {$propValue['show']} ? {$cond_code} : false;\n"; |
$output .= "if ({$local}show) {\n"; |
} elseif ($propValue[ 'show' ] === 'true') { |
$output .= "if ({$cond_code}) {\n"; |
} else { |
$output .= "if (false) {\n"; |
} |
$jinit = join(', ', $initFor); |
$jcmp = join(', ', $cmpFor); |
$jinc = join(', ', $incFor); |
$output .= "for ({$jinit}; {$jcmp}; {$jinc}){\n"; |
if (isset($namedAttr[ 'rownum' ])) { |
$output .= "{$sectionVar}->value['rownum'] = {$propValue['iteration']};\n"; |
} |
if (isset($namedAttr[ 'index_prev' ])) { |
$output .= "{$sectionVar}->value['index_prev'] = {$propValue['index']} - {$propValue['step']};\n"; |
} |
if (isset($namedAttr[ 'index_next' ])) { |
$output .= "{$sectionVar}->value['index_next'] = {$propValue['index']} + {$propValue['step']};\n"; |
} |
if (isset($namedAttr[ 'first' ])) { |
$output .= "{$sectionVar}->value['first'] = ({$propValue['iteration']} === 1);\n"; |
} |
if (isset($namedAttr[ 'last' ])) { |
$output .= "{$sectionVar}->value['last'] = ({$propValue['iteration']} === {$propValue['total']});\n"; |
} |
$output .= '?>'; |
return $output; |
} |
} |
/** |
* Smarty Internal Plugin Compile Sectionelse Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {sectionelse} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
list($openTag, $nocache, $local, $sectionVar) = $this->closeTag($compiler, array('section')); |
$this->openTag($compiler, 'sectionelse', array('sectionelse', $nocache, $local, $sectionVar)); |
return "<?php }} else {\n ?>"; |
} |
} |
/** |
* Smarty Internal Plugin Compile Sectionclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/section} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$compiler->loopNesting--; |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
list($openTag, $compiler->nocache, $local, $sectionVar) = |
$this->closeTag($compiler, array('section', 'sectionelse')); |
$output = "<?php\n"; |
if ($openTag === 'sectionelse') { |
$output .= "}\n"; |
} else { |
$output .= "}\n}\n"; |
} |
$output .= '?>'; |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_setfilter.php |
---|
0,0 → 1,68 |
<?php |
/** |
* Smarty Internal Plugin Compile Setfilter |
* Compiles code for setfilter tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Setfilter Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for setfilter tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
$compiler->variable_filter_stack[] = $compiler->variable_filters; |
$compiler->variable_filters = $parameter[ 'modifier_list' ]; |
// this tag does not return compiled code |
$compiler->has_code = false; |
return true; |
} |
} |
/** |
* Smarty Internal Plugin Compile Setfilterclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/setfilter} tag |
* This tag does not generate compiled output. It resets variable filter. |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$_attr = $this->getAttributes($compiler, $args); |
// reset variable filter to previous state |
if (count($compiler->variable_filter_stack)) { |
$compiler->variable_filters = array_pop($compiler->variable_filter_stack); |
} else { |
$compiler->variable_filters = array(); |
} |
// this tag does not return compiled code |
$compiler->has_code = false; |
return true; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_shared_inheritance.php |
---|
0,0 → 1,49 |
<?php |
/** |
* Smarty Internal Plugin Compile Shared Inheritance |
* Shared methods for {extends} and {block} tags |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Shared Inheritance Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase |
{ |
/** |
* Compile inheritance initialization code as prefix |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param bool|false $initChildSequence if true force child template |
*/ |
public static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false) |
{ |
$compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " . |
var_export($initChildSequence, true) . ");\n?>\n"; |
} |
/** |
* Register post compile callback to compile inheritance initialization code |
* |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* @param bool|false $initChildSequence if true force child template |
*/ |
public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false) |
{ |
if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) { |
$compiler->registerPostCompileCallback( |
array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'), |
array($initChildSequence), |
'inheritanceInit', |
$initChildSequence |
); |
$compiler->_cache[ 'inheritanceInit' ] = true; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compile_while.php |
---|
0,0 → 1,100 |
<?php |
/** |
* Smarty Internal Plugin Compile While |
* Compiles the {while} tag |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile While Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {while} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* @param array $parameter array with compilation parameter |
* |
* @return string compiled code |
* @throws \SmartyCompilerException |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) |
{ |
$compiler->loopNesting++; |
// check and get attributes |
$_attr = $this->getAttributes($compiler, $args); |
$this->openTag($compiler, 'while', $compiler->nocache); |
if (!array_key_exists('if condition', $parameter)) { |
$compiler->trigger_template_error('missing while condition', null, true); |
} |
// maybe nocache because of nocache variables |
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache; |
if (is_array($parameter[ 'if condition' ])) { |
if ($compiler->nocache) { |
// create nocache var to make it know for further compiling |
if (is_array($parameter[ 'if condition' ][ 'var' ])) { |
$var = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; |
} else { |
$var = $parameter[ 'if condition' ][ 'var' ]; |
} |
$compiler->setNocacheInVariable($var); |
} |
$prefixVar = $compiler->getNewPrefixVariable(); |
$assignCompiler = new Smarty_Internal_Compile_Assign(); |
$assignAttr = array(); |
$assignAttr[][ 'value' ] = $prefixVar; |
if (is_array($parameter[ 'if condition' ][ 'var' ])) { |
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ][ 'var' ]; |
$_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>"; |
$_output .= $assignCompiler->compile( |
$assignAttr, |
$compiler, |
array('smarty_internal_index' => $parameter[ 'if condition' ][ 'var' ][ 'smarty_internal_index' ]) |
); |
} else { |
$assignAttr[][ 'var' ] = $parameter[ 'if condition' ][ 'var' ]; |
$_output = "<?php while ({$prefixVar} = {$parameter[ 'if condition' ][ 'value' ]}) {?>"; |
$_output .= $assignCompiler->compile($assignAttr, $compiler, array()); |
} |
return $_output; |
} else { |
return "<?php\n while ({$parameter['if condition']}) {?>"; |
} |
} |
} |
/** |
* Smarty Internal Plugin Compile Whileclose Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase |
{ |
/** |
* Compiles code for the {/while} tag |
* |
* @param array $args array with attributes from parser |
* @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object |
* |
* @return string compiled code |
*/ |
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$compiler->loopNesting--; |
// must endblock be nocache? |
if ($compiler->nocache) { |
$compiler->tag_nocache = true; |
} |
$compiler->nocache = $this->closeTag($compiler, array('while')); |
return "<?php }?>\n"; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_compilebase.php |
---|
0,0 → 1,203 |
<?php |
/** |
* Smarty Internal Plugin CompileBase |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* This class does extend all internal compile plugins |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
abstract class Smarty_Internal_CompileBase |
{ |
/** |
* Array of names of required attribute required by tag |
* |
* @var array |
*/ |
public $required_attributes = array(); |
/** |
* Array of names of optional attribute required by tag |
* use array('_any') if there is no restriction of attributes names |
* |
* @var array |
*/ |
public $optional_attributes = array(); |
/** |
* Shorttag attribute order defined by its names |
* |
* @var array |
*/ |
public $shorttag_order = array(); |
/** |
* Array of names of valid option flags |
* |
* @var array |
*/ |
public $option_flags = array('nocache'); |
/** |
* Mapping array for boolean option value |
* |
* @var array |
*/ |
public $optionMap = array(1 => true, 0 => false, 'true' => true, 'false' => false); |
/** |
* Mapping array with attributes as key |
* |
* @var array |
*/ |
public $mapCache = array(); |
/** |
* This function checks if the attributes passed are valid |
* The attributes passed for the tag to compile are checked against the list of required and |
* optional attributes. Required attributes must be present. Optional attributes are check against |
* the corresponding list. The keyword '_any' specifies that any attribute will be accepted |
* as valid |
* |
* @param object $compiler compiler object |
* @param array $attributes attributes applied to the tag |
* |
* @return array of mapped attributes for further processing |
*/ |
public function getAttributes($compiler, $attributes) |
{ |
$_indexed_attr = array(); |
if (!isset($this->mapCache[ 'option' ])) { |
$this->mapCache[ 'option' ] = array_fill_keys($this->option_flags, true); |
} |
foreach ($attributes as $key => $mixed) { |
// shorthand ? |
if (!is_array($mixed)) { |
// option flag ? |
if (isset($this->mapCache[ 'option' ][ trim($mixed, '\'"') ])) { |
$_indexed_attr[ trim($mixed, '\'"') ] = true; |
// shorthand attribute ? |
} elseif (isset($this->shorttag_order[ $key ])) { |
$_indexed_attr[ $this->shorttag_order[ $key ] ] = $mixed; |
} else { |
// too many shorthands |
$compiler->trigger_template_error('too many shorthand attributes', null, true); |
} |
// named attribute |
} else { |
foreach ($mixed as $k => $v) { |
// option flag? |
if (isset($this->mapCache[ 'option' ][ $k ])) { |
if (is_bool($v)) { |
$_indexed_attr[ $k ] = $v; |
} else { |
if (is_string($v)) { |
$v = trim($v, '\'" '); |
} |
if (isset($this->optionMap[ $v ])) { |
$_indexed_attr[ $k ] = $this->optionMap[ $v ]; |
} else { |
$compiler->trigger_template_error( |
"illegal value '" . var_export($v, true) . |
"' for option flag '{$k}'", |
null, |
true |
); |
} |
} |
// must be named attribute |
} else { |
$_indexed_attr[ $k ] = $v; |
} |
} |
} |
} |
// check if all required attributes present |
foreach ($this->required_attributes as $attr) { |
if (!isset($_indexed_attr[ $attr ])) { |
$compiler->trigger_template_error("missing '{$attr}' attribute", null, true); |
} |
} |
// check for not allowed attributes |
if ($this->optional_attributes !== array('_any')) { |
if (!isset($this->mapCache[ 'all' ])) { |
$this->mapCache[ 'all' ] = |
array_fill_keys( |
array_merge( |
$this->required_attributes, |
$this->optional_attributes, |
$this->option_flags |
), |
true |
); |
} |
foreach ($_indexed_attr as $key => $dummy) { |
if (!isset($this->mapCache[ 'all' ][ $key ]) && $key !== 0) { |
$compiler->trigger_template_error("unexpected '{$key}' attribute", null, true); |
} |
} |
} |
// default 'false' for all option flags not set |
foreach ($this->option_flags as $flag) { |
if (!isset($_indexed_attr[ $flag ])) { |
$_indexed_attr[ $flag ] = false; |
} |
} |
if (isset($_indexed_attr[ 'nocache' ]) && $_indexed_attr[ 'nocache' ]) { |
$compiler->tag_nocache = true; |
} |
return $_indexed_attr; |
} |
/** |
* Push opening tag name on stack |
* Optionally additional data can be saved on stack |
* |
* @param object $compiler compiler object |
* @param string $openTag the opening tag's name |
* @param mixed $data optional data saved |
*/ |
public function openTag($compiler, $openTag, $data = null) |
{ |
array_push($compiler->_tag_stack, array($openTag, $data)); |
} |
/** |
* Pop closing tag |
* Raise an error if this stack-top doesn't match with expected opening tags |
* |
* @param object $compiler compiler object |
* @param array|string $expectedTag the expected opening tag names |
* |
* @return mixed any type the opening tag's name or saved data |
*/ |
public function closeTag($compiler, $expectedTag) |
{ |
if (count($compiler->_tag_stack) > 0) { |
// get stacked info |
list($_openTag, $_data) = array_pop($compiler->_tag_stack); |
// open tag must match with the expected ones |
if (in_array($_openTag, (array)$expectedTag)) { |
if (is_null($_data)) { |
// return opening tag |
return $_openTag; |
} else { |
// return restored data |
return $_data; |
} |
} |
// wrong nesting of tags |
$compiler->trigger_template_error("unclosed '{$compiler->smarty->left_delimiter}{$_openTag}{$compiler->smarty->right_delimiter}' tag"); |
return; |
} |
// wrong nesting of tags |
$compiler->trigger_template_error('unexpected closing tag', null, true); |
return; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_config_file_compiler.php |
---|
0,0 → 1,209 |
<?php |
/** |
* Smarty Internal Plugin Config File Compiler |
* This is the config file compiler class. It calls the lexer and parser to |
* perform the compiling. |
* |
* @package Smarty |
* @subpackage Config |
* @author Uwe Tews |
*/ |
/** |
* Main config file compiler class |
* |
* @package Smarty |
* @subpackage Config |
*/ |
class Smarty_Internal_Config_File_Compiler |
{ |
/** |
* Lexer class name |
* |
* @var string |
*/ |
public $lexer_class; |
/** |
* Parser class name |
* |
* @var string |
*/ |
public $parser_class; |
/** |
* Lexer object |
* |
* @var object |
*/ |
public $lex; |
/** |
* Parser object |
* |
* @var object |
*/ |
public $parser; |
/** |
* Smarty object |
* |
* @var Smarty object |
*/ |
public $smarty; |
/** |
* Smarty object |
* |
* @var Smarty_Internal_Template object |
*/ |
public $template; |
/** |
* Compiled config data sections and variables |
* |
* @var array |
*/ |
public $config_data = array(); |
/** |
* compiled config data must always be written |
* |
* @var bool |
*/ |
public $write_compiled_code = true; |
/** |
* Initialize compiler |
* |
* @param string $lexer_class class name |
* @param string $parser_class class name |
* @param Smarty $smarty global instance |
*/ |
public function __construct($lexer_class, $parser_class, Smarty $smarty) |
{ |
$this->smarty = $smarty; |
// get required plugins |
$this->lexer_class = $lexer_class; |
$this->parser_class = $parser_class; |
$this->smarty = $smarty; |
$this->config_data[ 'sections' ] = array(); |
$this->config_data[ 'vars' ] = array(); |
} |
/** |
* Method to compile Smarty config source. |
* |
* @param Smarty_Internal_Template $template |
* |
* @return bool true if compiling succeeded, false if it failed |
* @throws \SmartyException |
*/ |
public function compileTemplate(Smarty_Internal_Template $template) |
{ |
$this->template = $template; |
$this->template->compiled->file_dependency[ $this->template->source->uid ] = |
array( |
$this->template->source->filepath, |
$this->template->source->getTimeStamp(), |
$this->template->source->type |
); |
if ($this->smarty->debugging) { |
if (!isset($this->smarty->_debug)) { |
$this->smarty->_debug = new Smarty_Internal_Debug(); |
} |
$this->smarty->_debug->start_compile($this->template); |
} |
// init the lexer/parser to compile the config file |
/* @var Smarty_Internal_ConfigFileLexer $this ->lex */ |
$this->lex = new $this->lexer_class( |
str_replace( |
array( |
"\r\n", |
"\r" |
), |
"\n", |
$template->source->getContent() |
) . "\n", |
$this |
); |
/* @var Smarty_Internal_ConfigFileParser $this ->parser */ |
$this->parser = new $this->parser_class($this->lex, $this); |
if (function_exists('mb_internal_encoding') |
&& function_exists('ini_get') |
&& ((int)ini_get('mbstring.func_overload')) & 2 |
) { |
$mbEncoding = mb_internal_encoding(); |
mb_internal_encoding('ASCII'); |
} else { |
$mbEncoding = null; |
} |
if ($this->smarty->_parserdebug) { |
$this->parser->PrintTrace(); |
} |
// get tokens from lexer and parse them |
while ($this->lex->yylex()) { |
if ($this->smarty->_parserdebug) { |
echo "<br>Parsing {$this->parser->yyTokenName[$this->lex->token]} Token {$this->lex->value} Line {$this->lex->line} \n"; |
} |
$this->parser->doParse($this->lex->token, $this->lex->value); |
} |
// finish parsing process |
$this->parser->doParse(0, 0); |
if ($mbEncoding) { |
mb_internal_encoding($mbEncoding); |
} |
if ($this->smarty->debugging) { |
$this->smarty->_debug->end_compile($this->template); |
} |
// template header code |
$template_header = |
"<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . |
"\n"; |
$template_header .= " compiled from '{$this->template->source->filepath}' */ ?>\n"; |
$code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' . |
var_export($this->config_data, true) . '); ?>'; |
return $template_header . $this->template->smarty->ext->_codeFrame->create($this->template, $code); |
} |
/** |
* display compiler error messages without dying |
* If parameter $args is empty it is a parser detected syntax error. |
* In this case the parser is called to obtain information about expected tokens. |
* If parameter $args contains a string this is used as error message |
* |
* @param string $args individual error message or null |
* |
* @throws SmartyCompilerException |
*/ |
public function trigger_config_file_error($args = null) |
{ |
// get config source line which has error |
$line = $this->lex->line; |
if (isset($args)) { |
// $line--; |
} |
$match = preg_split("/\n/", $this->lex->data); |
$error_text = |
"Syntax error in config file '{$this->template->source->filepath}' on line {$line} '{$match[$line - 1]}' "; |
if (isset($args)) { |
// individual error message |
$error_text .= $args; |
} else { |
// expected token from parser |
foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) { |
$exp_token = $this->parser->yyTokenName[ $token ]; |
if (isset($this->lex->smarty_token_names[ $exp_token ])) { |
// token type from lexer |
$expect[] = '"' . $this->lex->smarty_token_names[ $exp_token ] . '"'; |
} else { |
// otherwise internal token name |
$expect[] = $this->parser->yyTokenName[ $token ]; |
} |
} |
// output parser error message |
$error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect); |
} |
throw new SmartyCompilerException($error_text); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_configfilelexer.php |
---|
0,0 → 1,739 |
<?php |
/** |
* Smarty Internal Plugin Configfilelexer |
* |
* This is the lexer to break the config file source into tokens |
* |
* @package Smarty |
* @subpackage Config |
* @author Uwe Tews |
*/ |
/** |
* Smarty_Internal_Configfilelexer |
* |
* This is the config file lexer. |
* It is generated from the smarty_internal_configfilelexer.plex file |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Configfilelexer |
{ |
const START = 1; |
const VALUE = 2; |
const NAKED_STRING_VALUE = 3; |
const COMMENT = 4; |
const SECTION = 5; |
const TRIPPLE = 6; |
/** |
* Source |
* |
* @var string |
*/ |
public $data; |
/** |
* Source length |
* |
* @var int |
*/ |
public $dataLength = null; |
/** |
* byte counter |
* |
* @var int |
*/ |
public $counter; |
/** |
* token number |
* |
* @var int |
*/ |
public $token; |
/** |
* token value |
* |
* @var string |
*/ |
public $value; |
/** |
* current line |
* |
* @var int |
*/ |
public $line; |
/** |
* state number |
* |
* @var int |
*/ |
public $state = 1; |
/** |
* Smarty object |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* trace file |
* |
* @var resource |
*/ |
public $yyTraceFILE; |
/** |
* trace prompt |
* |
* @var string |
*/ |
public $yyTracePrompt; |
/** |
* state names |
* |
* @var array |
*/ |
public $state_name = array( |
1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE' |
); |
/** |
* token names |
* |
* @var array |
*/ |
public $smarty_token_names = array( // Text for parser error messages |
); |
/** |
* compiler object |
* |
* @var Smarty_Internal_Config_File_Compiler |
*/ |
private $compiler = null; |
/** |
* copy of config_booleanize |
* |
* @var bool |
*/ |
private $configBooleanize = false; |
/** |
* storage for assembled token patterns |
* |
* @var string |
*/ |
private $yy_global_pattern1 = null; |
private $yy_global_pattern2 = null; |
private $yy_global_pattern3 = null; |
private $yy_global_pattern4 = null; |
private $yy_global_pattern5 = null; |
private $yy_global_pattern6 = null; |
private $_yy_state = 1; |
private $_yy_stack = array(); |
/** |
* constructor |
* |
* @param string $data template source |
* @param Smarty_Internal_Config_File_Compiler $compiler |
*/ |
public function __construct($data, Smarty_Internal_Config_File_Compiler $compiler) |
{ |
$this->data = $data . "\n"; //now all lines are \n-terminated |
$this->dataLength = strlen($data); |
$this->counter = 0; |
if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) { |
$this->counter += strlen($match[ 0 ]); |
} |
$this->line = 1; |
$this->compiler = $compiler; |
$this->smarty = $compiler->smarty; |
$this->configBooleanize = $this->smarty->config_booleanize; |
} |
public function replace($input) |
{ |
return $input; |
} // end function |
public function PrintTrace() |
{ |
$this->yyTraceFILE = fopen('php://output', 'w'); |
$this->yyTracePrompt = '<br>'; |
} |
public function yylex() |
{ |
return $this->{'yylex' . $this->_yy_state}(); |
} |
public function yypushstate($state) |
{ |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%sState push %s\n", |
$this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state |
); |
} |
array_push($this->_yy_stack, $this->_yy_state); |
$this->_yy_state = $state; |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%snew State %s\n", |
$this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state |
); |
} |
} |
public function yypopstate() |
{ |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%sState pop %s\n", |
$this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state |
); |
} |
$this->_yy_state = array_pop($this->_yy_stack); |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%snew State %s\n", |
$this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state |
); |
} |
} |
public function yybegin($state) |
{ |
$this->_yy_state = $state; |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%sState set %s\n", |
$this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state |
); |
} |
} |
public function yylex1() |
{ |
if (!isset($this->yy_global_pattern1)) { |
$this->yy_global_pattern1 = |
$this->replace("/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr( |
$this->data, |
$this->counter, |
5 |
) . '... state START'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r1_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r1_1() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; |
$this->yypushstate(self::COMMENT); |
} |
public function yy_r1_2() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_OPENB; |
$this->yypushstate(self::SECTION); |
} |
public function yy_r1_3() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; |
} |
public function yy_r1_4() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; |
$this->yypushstate(self::VALUE); |
} // end function |
public function yy_r1_5() |
{ |
return false; |
} |
public function yy_r1_6() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; |
} |
public function yy_r1_7() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_ID; |
} |
public function yy_r1_8() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_OTHER; |
} |
public function yylex2() |
{ |
if (!isset($this->yy_global_pattern2)) { |
$this->yy_global_pattern2 = |
$this->replace("/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr( |
$this->data, |
$this->counter, |
5 |
) . '... state VALUE'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r2_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r2_1() |
{ |
return false; |
} |
public function yy_r2_2() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_FLOAT; |
$this->yypopstate(); |
} |
public function yy_r2_3() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_INT; |
$this->yypopstate(); |
} |
public function yy_r2_4() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES; |
$this->yypushstate(self::TRIPPLE); |
} |
public function yy_r2_5() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING; |
$this->yypopstate(); |
} |
public function yy_r2_6() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING; |
$this->yypopstate(); |
} // end function |
public function yy_r2_7() |
{ |
if (!$this->configBooleanize || |
!in_array(strtolower($this->value), array('true', 'false', 'on', 'off', 'yes', 'no'))) { |
$this->yypopstate(); |
$this->yypushstate(self::NAKED_STRING_VALUE); |
return true; //reprocess in new state |
} else { |
$this->token = Smarty_Internal_Configfileparser::TPC_BOOL; |
$this->yypopstate(); |
} |
} |
public function yy_r2_8() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; |
$this->yypopstate(); |
} |
public function yy_r2_9() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; |
$this->value = ''; |
$this->yypopstate(); |
} // end function |
public function yylex3() |
{ |
if (!isset($this->yy_global_pattern3)) { |
$this->yy_global_pattern3 = $this->replace("/\G([^\n]+?(?=[ \t\r]*\n))/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr( |
$this->data, |
$this->counter, |
5 |
) . '... state NAKED_STRING_VALUE'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r3_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r3_1() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; |
$this->yypopstate(); |
} |
public function yylex4() |
{ |
if (!isset($this->yy_global_pattern4)) { |
$this->yy_global_pattern4 = $this->replace("/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr( |
$this->data, |
$this->counter, |
5 |
) . '... state COMMENT'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r4_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r4_1() |
{ |
return false; |
} |
public function yy_r4_2() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; |
} // end function |
public function yy_r4_3() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; |
$this->yypopstate(); |
} |
public function yylex5() |
{ |
if (!isset($this->yy_global_pattern5)) { |
$this->yy_global_pattern5 = $this->replace("/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr( |
$this->data, |
$this->counter, |
5 |
) . '... state SECTION'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r5_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r5_1() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_DOT; |
} |
public function yy_r5_2() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_SECTION; |
$this->yypopstate(); |
} // end function |
public function yylex6() |
{ |
if (!isset($this->yy_global_pattern6)) { |
$this->yy_global_pattern6 = $this->replace("/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern6, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr( |
$this->data, |
$this->counter, |
5 |
) . '... state TRIPPLE'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r6_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r6_1() |
{ |
$this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END; |
$this->yypopstate(); |
$this->yypushstate(self::START); |
} |
public function yy_r6_2() |
{ |
$to = strlen($this->data); |
preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); |
if (isset($match[ 0 ][ 1 ])) { |
$to = $match[ 0 ][ 1 ]; |
} else { |
$this->compiler->trigger_config_file_error('missing or misspelled literal closing tag'); |
} |
$this->value = substr($this->data, $this->counter, $to - $this->counter); |
$this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_configfileparser.php |
---|
0,0 → 1,1046 |
<?php |
class TPC_yyStackEntry |
{ |
public $stateno; /* The state-number */ |
public $major; /* The major token value. This is the code |
** number for the token at this stack level */ |
public $minor; /* The user-supplied minor token value. This |
** is the value of the token */ |
} |
// line 12 "../smarty/lexer/smarty_internal_configfileparser.y" |
/** |
* Smarty Internal Plugin Configfileparse |
* |
* This is the config file parser. |
* It is generated from the smarty_internal_configfileparser.y file |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Configfileparser |
{ |
// line 25 "../smarty/lexer/smarty_internal_configfileparser.y" |
const TPC_OPENB = 1; |
const TPC_SECTION = 2; |
const TPC_CLOSEB = 3; |
const TPC_DOT = 4; |
const TPC_ID = 5; |
const TPC_EQUAL = 6; |
const TPC_FLOAT = 7; |
const TPC_INT = 8; |
const TPC_BOOL = 9; |
const TPC_SINGLE_QUOTED_STRING = 10; |
const TPC_DOUBLE_QUOTED_STRING = 11; |
const TPC_TRIPPLE_QUOTES = 12; |
const TPC_TRIPPLE_TEXT = 13; |
const TPC_TRIPPLE_QUOTES_END = 14; |
const TPC_NAKED_STRING = 15; |
const TPC_OTHER = 16; |
const TPC_NEWLINE = 17; |
const TPC_COMMENTSTART = 18; |
const YY_NO_ACTION = 60; |
const YY_ACCEPT_ACTION = 59; |
const YY_ERROR_ACTION = 58; |
const YY_SZ_ACTTAB = 38; |
const YY_SHIFT_USE_DFLT = -8; |
const YY_SHIFT_MAX = 19; |
const YY_REDUCE_USE_DFLT = -17; |
const YY_REDUCE_MAX = 10; |
const YYNOCODE = 29; |
const YYSTACKDEPTH = 100; |
const YYNSTATE = 36; |
const YYNRULE = 22; |
const YYERRORSYMBOL = 19; |
const YYERRSYMDT = 'yy0'; |
const YYFALLBACK = 0; |
public static $yy_action = array( |
32, 31, 30, 29, 35, 13, 19, 3, 24, 26, |
59, 9, 14, 1, 16, 25, 11, 28, 25, 11, |
17, 27, 34, 20, 18, 15, 23, 5, 6, 22, |
10, 8, 4, 12, 2, 33, 7, 21, |
); |
public static $yy_lookahead = array( |
7, 8, 9, 10, 11, 12, 5, 23, 15, 16, |
20, 21, 2, 23, 4, 17, 18, 14, 17, 18, |
13, 14, 25, 26, 15, 2, 17, 3, 3, 17, |
25, 25, 6, 1, 23, 27, 22, 24, |
); |
public static $yy_shift_ofst = array( |
-8, 1, 1, 1, -7, -2, -2, 32, -8, -8, |
-8, 9, 10, 7, 25, 24, 23, 3, 12, 26, |
); |
public static $yy_reduce_ofst = array( |
-10, -3, -3, -3, 8, 6, 5, 13, 11, 14, |
-16, |
); |
public static $yyExpectedTokens = array( |
array(), |
array(5, 17, 18,), |
array(5, 17, 18,), |
array(5, 17, 18,), |
array(7, 8, 9, 10, 11, 12, 15, 16,), |
array(17, 18,), |
array(17, 18,), |
array(1,), |
array(), |
array(), |
array(), |
array(15, 17,), |
array(2, 4,), |
array(13, 14,), |
array(3,), |
array(3,), |
array(2,), |
array(14,), |
array(17,), |
array(6,), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
); |
public static $yy_default = array( |
44, 37, 41, 40, 58, 58, 58, 36, 44, 39, |
44, 58, 58, 58, 58, 58, 58, 58, 58, 58, |
43, 38, 57, 56, 53, 55, 54, 52, 51, 49, |
48, 47, 46, 45, 42, 50, |
); |
public static $yyFallback = array(); |
public static $yyRuleName = array( |
'start ::= global_vars sections', |
'global_vars ::= var_list', |
'sections ::= sections section', |
'sections ::=', |
'section ::= OPENB SECTION CLOSEB newline var_list', |
'section ::= OPENB DOT SECTION CLOSEB newline var_list', |
'var_list ::= var_list newline', |
'var_list ::= var_list var', |
'var_list ::=', |
'var ::= ID EQUAL value', |
'value ::= FLOAT', |
'value ::= INT', |
'value ::= BOOL', |
'value ::= SINGLE_QUOTED_STRING', |
'value ::= DOUBLE_QUOTED_STRING', |
'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END', |
'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END', |
'value ::= NAKED_STRING', |
'value ::= OTHER', |
'newline ::= NEWLINE', |
'newline ::= COMMENTSTART NEWLINE', |
'newline ::= COMMENTSTART NAKED_STRING NEWLINE', |
); |
public static $yyRuleInfo = array( |
array(0 => 20, 1 => 2), |
array(0 => 21, 1 => 1), |
array(0 => 22, 1 => 2), |
array(0 => 22, 1 => 0), |
array(0 => 24, 1 => 5), |
array(0 => 24, 1 => 6), |
array(0 => 23, 1 => 2), |
array(0 => 23, 1 => 2), |
array(0 => 23, 1 => 0), |
array(0 => 26, 1 => 3), |
array(0 => 27, 1 => 1), |
array(0 => 27, 1 => 1), |
array(0 => 27, 1 => 1), |
array(0 => 27, 1 => 1), |
array(0 => 27, 1 => 1), |
array(0 => 27, 1 => 3), |
array(0 => 27, 1 => 2), |
array(0 => 27, 1 => 1), |
array(0 => 27, 1 => 1), |
array(0 => 25, 1 => 1), |
array(0 => 25, 1 => 2), |
array(0 => 25, 1 => 3), |
); |
public static $yyReduceMap = array( |
0 => 0, |
2 => 0, |
3 => 0, |
19 => 0, |
20 => 0, |
21 => 0, |
1 => 1, |
4 => 4, |
5 => 5, |
6 => 6, |
7 => 7, |
8 => 8, |
9 => 9, |
10 => 10, |
11 => 11, |
12 => 12, |
13 => 13, |
14 => 14, |
15 => 15, |
16 => 16, |
17 => 17, |
18 => 17, |
); |
/** |
* helper map |
* |
* @var array |
*/ |
private static $escapes_single = array( |
'\\' => '\\', |
'\'' => '\'' |
); |
/** |
* result status |
* |
* @var bool |
*/ |
public $successful = true; |
/** |
* return value |
* |
* @var mixed |
*/ |
public $retvalue = 0; |
/** |
* @var |
*/ |
public $yymajor; |
/** |
* compiler object |
* |
* @var Smarty_Internal_Config_File_Compiler |
*/ |
public $compiler = null; |
/** |
* smarty object |
* |
* @var Smarty |
*/ |
public $smarty = null; |
public $yyTraceFILE; |
public $yyTracePrompt; |
public $yyidx; |
public $yyerrcnt; |
public $yystack = array(); |
public $yyTokenName = array( |
'$', 'OPENB', 'SECTION', 'CLOSEB', |
'DOT', 'ID', 'EQUAL', 'FLOAT', |
'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', |
'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING', |
'OTHER', 'NEWLINE', 'COMMENTSTART', 'error', |
'start', 'global_vars', 'sections', 'var_list', |
'section', 'newline', 'var', 'value', |
); |
/** |
* lexer object |
* |
* @var Smarty_Internal_Configfilelexer |
*/ |
private $lex; |
/** |
* internal error flag |
* |
* @var bool |
*/ |
private $internalError = false; |
/** |
* copy of config_overwrite property |
* |
* @var bool |
*/ |
private $configOverwrite = false; |
/** |
* copy of config_read_hidden property |
* |
* @var bool |
*/ |
private $configReadHidden = false; |
private $_retvalue; |
/** |
* constructor |
* |
* @param Smarty_Internal_Configfilelexer $lex |
* @param Smarty_Internal_Config_File_Compiler $compiler |
*/ |
public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler) |
{ |
$this->lex = $lex; |
$this->smarty = $compiler->smarty; |
$this->compiler = $compiler; |
$this->configOverwrite = $this->smarty->config_overwrite; |
$this->configReadHidden = $this->smarty->config_read_hidden; |
} |
public static function yy_destructor($yymajor, $yypminor) |
{ |
switch ($yymajor) { |
default: |
break; /* If no destructor action specified: do nothing */ |
} |
} |
/** |
* parse single quoted string |
* remove outer quotes |
* unescape inner quotes |
* |
* @param string $qstr |
* |
* @return string |
*/ |
private static function parse_single_quoted_string($qstr) |
{ |
$escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes |
$ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE); |
$str = ''; |
foreach ($ss as $s) { |
if (strlen($s) === 2 && $s[ 0 ] === '\\') { |
if (isset(self::$escapes_single[ $s[ 1 ] ])) { |
$s = self::$escapes_single[ $s[ 1 ] ]; |
} |
} |
$str .= $s; |
} |
return $str; |
} /* Index of top element in stack */ |
/** |
* parse double quoted string |
* |
* @param string $qstr |
* |
* @return string |
*/ |
private static function parse_double_quoted_string($qstr) |
{ |
$inner_str = substr($qstr, 1, strlen($qstr) - 2); |
return stripcslashes($inner_str); |
} /* Shifts left before out of the error */ |
/** |
* parse triple quoted string |
* |
* @param string $qstr |
* |
* @return string |
*/ |
private static function parse_tripple_double_quoted_string($qstr) |
{ |
return stripcslashes($qstr); |
} /* The parser's stack */ |
public function Trace($TraceFILE, $zTracePrompt) |
{ |
if (!$TraceFILE) { |
$zTracePrompt = 0; |
} elseif (!$zTracePrompt) { |
$TraceFILE = 0; |
} |
$this->yyTraceFILE = $TraceFILE; |
$this->yyTracePrompt = $zTracePrompt; |
} |
public function PrintTrace() |
{ |
$this->yyTraceFILE = fopen('php://output', 'w'); |
$this->yyTracePrompt = '<br>'; |
} |
public function tokenName($tokenType) |
{ |
if ($tokenType === 0) { |
return 'End of Input'; |
} |
if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) { |
return $this->yyTokenName[ $tokenType ]; |
} else { |
return 'Unknown'; |
} |
} |
public function yy_pop_parser_stack() |
{ |
if (empty($this->yystack)) { |
return; |
} |
$yytos = array_pop($this->yystack); |
if ($this->yyTraceFILE && $this->yyidx >= 0) { |
fwrite( |
$this->yyTraceFILE, |
$this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . |
"\n" |
); |
} |
$yymajor = $yytos->major; |
self::yy_destructor($yymajor, $yytos->minor); |
$this->yyidx--; |
return $yymajor; |
} |
public function __destruct() |
{ |
while ($this->yystack !== array()) { |
$this->yy_pop_parser_stack(); |
} |
if (is_resource($this->yyTraceFILE)) { |
fclose($this->yyTraceFILE); |
} |
} |
public function yy_get_expected_tokens($token) |
{ |
static $res3 = array(); |
static $res4 = array(); |
$state = $this->yystack[ $this->yyidx ]->stateno; |
$expected = self::$yyExpectedTokens[ $state ]; |
if (isset($res3[ $state ][ $token ])) { |
if ($res3[ $state ][ $token ]) { |
return $expected; |
} |
} else { |
if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { |
return $expected; |
} |
} |
$stack = $this->yystack; |
$yyidx = $this->yyidx; |
do { |
$yyact = $this->yy_find_shift_action($token); |
if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { |
// reduce action |
$done = 0; |
do { |
if ($done++ === 100) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// too much recursion prevents proper detection |
// so give up |
return array_unique($expected); |
} |
$yyruleno = $yyact - self::YYNSTATE; |
$this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; |
$nextstate = $this->yy_find_reduce_action( |
$this->yystack[ $this->yyidx ]->stateno, |
self::$yyRuleInfo[ $yyruleno ][ 0 ] |
); |
if (isset(self::$yyExpectedTokens[ $nextstate ])) { |
$expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]); |
if (isset($res4[ $nextstate ][ $token ])) { |
if ($res4[ $nextstate ][ $token ]) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return array_unique($expected); |
} |
} else { |
if ($res4[ $nextstate ][ $token ] = |
in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return array_unique($expected); |
} |
} |
} |
if ($nextstate < self::YYNSTATE) { |
// we need to shift a non-terminal |
$this->yyidx++; |
$x = new TPC_yyStackEntry; |
$x->stateno = $nextstate; |
$x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; |
$this->yystack[ $this->yyidx ] = $x; |
continue 2; |
} elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// the last token was just ignored, we can't accept |
// by ignoring input, this is in essence ignoring a |
// syntax error! |
return array_unique($expected); |
} elseif ($nextstate === self::YY_NO_ACTION) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// input accepted, but not shifted (I guess) |
return $expected; |
} else { |
$yyact = $nextstate; |
} |
} while (true); |
} |
break; |
} while (true); |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return array_unique($expected); |
} |
public function yy_is_expected_token($token) |
{ |
static $res = array(); |
static $res2 = array(); |
if ($token === 0) { |
return true; // 0 is not part of this |
} |
$state = $this->yystack[ $this->yyidx ]->stateno; |
if (isset($res[ $state ][ $token ])) { |
if ($res[ $state ][ $token ]) { |
return true; |
} |
} else { |
if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { |
return true; |
} |
} |
$stack = $this->yystack; |
$yyidx = $this->yyidx; |
do { |
$yyact = $this->yy_find_shift_action($token); |
if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { |
// reduce action |
$done = 0; |
do { |
if ($done++ === 100) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// too much recursion prevents proper detection |
// so give up |
return true; |
} |
$yyruleno = $yyact - self::YYNSTATE; |
$this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; |
$nextstate = $this->yy_find_reduce_action( |
$this->yystack[ $this->yyidx ]->stateno, |
self::$yyRuleInfo[ $yyruleno ][ 0 ] |
); |
if (isset($res2[ $nextstate ][ $token ])) { |
if ($res2[ $nextstate ][ $token ]) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return true; |
} |
} else { |
if ($res2[ $nextstate ][ $token ] = |
(isset(self::$yyExpectedTokens[ $nextstate ]) && |
in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return true; |
} |
} |
if ($nextstate < self::YYNSTATE) { |
// we need to shift a non-terminal |
$this->yyidx++; |
$x = new TPC_yyStackEntry; |
$x->stateno = $nextstate; |
$x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; |
$this->yystack[ $this->yyidx ] = $x; |
continue 2; |
} elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
if (!$token) { |
// end of input: this is valid |
return true; |
} |
// the last token was just ignored, we can't accept |
// by ignoring input, this is in essence ignoring a |
// syntax error! |
return false; |
} elseif ($nextstate === self::YY_NO_ACTION) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// input accepted, but not shifted (I guess) |
return true; |
} else { |
$yyact = $nextstate; |
} |
} while (true); |
} |
break; |
} while (true); |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return true; |
} |
public function yy_find_shift_action($iLookAhead) |
{ |
$stateno = $this->yystack[ $this->yyidx ]->stateno; |
/* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ |
if (!isset(self::$yy_shift_ofst[ $stateno ])) { |
// no shift actions |
return self::$yy_default[ $stateno ]; |
} |
$i = self::$yy_shift_ofst[ $stateno ]; |
if ($i === self::YY_SHIFT_USE_DFLT) { |
return self::$yy_default[ $stateno ]; |
} |
if ($iLookAhead === self::YYNOCODE) { |
return self::YY_NO_ACTION; |
} |
$i += $iLookAhead; |
if ($i < 0 || $i >= self::YY_SZ_ACTTAB || |
self::$yy_lookahead[ $i ] != $iLookAhead) { |
if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) |
&& ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) { |
if ($this->yyTraceFILE) { |
fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' . |
$this->yyTokenName[ $iLookAhead ] . ' => ' . |
$this->yyTokenName[ $iFallback ] . "\n"); |
} |
return $this->yy_find_shift_action($iFallback); |
} |
return self::$yy_default[ $stateno ]; |
} else { |
return self::$yy_action[ $i ]; |
} |
} |
public function yy_find_reduce_action($stateno, $iLookAhead) |
{ |
/* $stateno = $this->yystack[$this->yyidx]->stateno; */ |
if (!isset(self::$yy_reduce_ofst[ $stateno ])) { |
return self::$yy_default[ $stateno ]; |
} |
$i = self::$yy_reduce_ofst[ $stateno ]; |
if ($i === self::YY_REDUCE_USE_DFLT) { |
return self::$yy_default[ $stateno ]; |
} |
if ($iLookAhead === self::YYNOCODE) { |
return self::YY_NO_ACTION; |
} |
$i += $iLookAhead; |
if ($i < 0 || $i >= self::YY_SZ_ACTTAB || |
self::$yy_lookahead[ $i ] != $iLookAhead) { |
return self::$yy_default[ $stateno ]; |
} else { |
return self::$yy_action[ $i ]; |
} |
} |
public function yy_shift($yyNewState, $yyMajor, $yypMinor) |
{ |
$this->yyidx++; |
if ($this->yyidx >= self::YYSTACKDEPTH) { |
$this->yyidx--; |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); |
} |
while ($this->yyidx >= 0) { |
$this->yy_pop_parser_stack(); |
} |
// line 239 "../smarty/lexer/smarty_internal_configfileparser.y" |
$this->internalError = true; |
$this->compiler->trigger_config_file_error('Stack overflow in configfile parser'); |
return; |
} |
$yytos = new TPC_yyStackEntry; |
$yytos->stateno = $yyNewState; |
$yytos->major = $yyMajor; |
$yytos->minor = $yypMinor; |
$this->yystack[] = $yytos; |
if ($this->yyTraceFILE && $this->yyidx > 0) { |
fprintf( |
$this->yyTraceFILE, |
"%sShift %d\n", |
$this->yyTracePrompt, |
$yyNewState |
); |
fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); |
for ($i = 1; $i <= $this->yyidx; $i++) { |
fprintf( |
$this->yyTraceFILE, |
" %s", |
$this->yyTokenName[ $this->yystack[ $i ]->major ] |
); |
} |
fwrite($this->yyTraceFILE, "\n"); |
} |
} |
public function yy_r0() |
{ |
$this->_retvalue = null; |
} |
public function yy_r1() |
{ |
$this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor); |
$this->_retvalue = null; |
} |
public function yy_r4() |
{ |
$this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); |
$this->_retvalue = null; |
} |
// line 245 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r5() |
{ |
if ($this->configReadHidden) { |
$this->add_section_vars( |
$this->yystack[ $this->yyidx + -3 ]->minor, |
$this->yystack[ $this->yyidx + 0 ]->minor |
); |
} |
$this->_retvalue = null; |
} |
// line 250 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r6() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; |
} |
// line 264 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r7() |
{ |
$this->_retvalue = |
array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 269 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r8() |
{ |
$this->_retvalue = array(); |
} |
// line 277 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r9() |
{ |
$this->_retvalue = |
array( |
'key' => $this->yystack[ $this->yyidx + -2 ]->minor, |
'value' => $this->yystack[ $this->yyidx + 0 ]->minor |
); |
} |
// line 281 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r10() |
{ |
$this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 285 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r11() |
{ |
$this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 291 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r12() |
{ |
$this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 296 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r13() |
{ |
$this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 300 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r14() |
{ |
$this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 304 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r15() |
{ |
$this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor); |
} |
// line 308 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r16() |
{ |
$this->_retvalue = ''; |
} |
// line 312 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_r17() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 316 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_reduce($yyruleno) |
{ |
if ($this->yyTraceFILE && $yyruleno >= 0 |
&& $yyruleno < count(self::$yyRuleName)) { |
fprintf( |
$this->yyTraceFILE, |
"%sReduce (%d) [%s].\n", |
$this->yyTracePrompt, |
$yyruleno, |
self::$yyRuleName[ $yyruleno ] |
); |
} |
$this->_retvalue = $yy_lefthand_side = null; |
if (isset(self::$yyReduceMap[ $yyruleno ])) { |
// call the action |
$this->_retvalue = null; |
$this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}(); |
$yy_lefthand_side = $this->_retvalue; |
} |
$yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ]; |
$yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ]; |
$this->yyidx -= $yysize; |
for ($i = $yysize; $i; $i--) { |
// pop all of the right-hand side parameters |
array_pop($this->yystack); |
} |
$yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto); |
if ($yyact < self::YYNSTATE) { |
if (!$this->yyTraceFILE && $yysize) { |
$this->yyidx++; |
$x = new TPC_yyStackEntry; |
$x->stateno = $yyact; |
$x->major = $yygoto; |
$x->minor = $yy_lefthand_side; |
$this->yystack[ $this->yyidx ] = $x; |
} else { |
$this->yy_shift($yyact, $yygoto, $yy_lefthand_side); |
} |
} elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) { |
$this->yy_accept(); |
} |
} |
// line 320 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_parse_failed() |
{ |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); |
} |
while ($this->yyidx >= 0) { |
$this->yy_pop_parser_stack(); |
} |
} |
// line 324 "../smarty/lexer/smarty_internal_configfileparser.y" |
public function yy_syntax_error($yymajor, $TOKEN) |
{ |
// line 232 "../smarty/lexer/smarty_internal_configfileparser.y" |
$this->internalError = true; |
$this->yymajor = $yymajor; |
$this->compiler->trigger_config_file_error(); |
} |
public function yy_accept() |
{ |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); |
} |
while ($this->yyidx >= 0) { |
$this->yy_pop_parser_stack(); |
} |
// line 225 "../smarty/lexer/smarty_internal_configfileparser.y" |
$this->successful = !$this->internalError; |
$this->internalError = false; |
$this->retvalue = $this->_retvalue; |
} |
public function doParse($yymajor, $yytokenvalue) |
{ |
$yyerrorhit = 0; /* True if yymajor has invoked an error */ |
if ($this->yyidx === null || $this->yyidx < 0) { |
$this->yyidx = 0; |
$this->yyerrcnt = -1; |
$x = new TPC_yyStackEntry; |
$x->stateno = 0; |
$x->major = 0; |
$this->yystack = array(); |
$this->yystack[] = $x; |
} |
$yyendofinput = ($yymajor == 0); |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%sInput %s\n", |
$this->yyTracePrompt, |
$this->yyTokenName[ $yymajor ] |
); |
} |
do { |
$yyact = $this->yy_find_shift_action($yymajor); |
if ($yymajor < self::YYERRORSYMBOL && |
!$this->yy_is_expected_token($yymajor)) { |
// force a syntax error |
$yyact = self::YY_ERROR_ACTION; |
} |
if ($yyact < self::YYNSTATE) { |
$this->yy_shift($yyact, $yymajor, $yytokenvalue); |
$this->yyerrcnt--; |
if ($yyendofinput && $this->yyidx >= 0) { |
$yymajor = 0; |
} else { |
$yymajor = self::YYNOCODE; |
} |
} elseif ($yyact < self::YYNSTATE + self::YYNRULE) { |
$this->yy_reduce($yyact - self::YYNSTATE); |
} elseif ($yyact === self::YY_ERROR_ACTION) { |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%sSyntax Error!\n", |
$this->yyTracePrompt |
); |
} |
if (self::YYERRORSYMBOL) { |
if ($this->yyerrcnt < 0) { |
$this->yy_syntax_error($yymajor, $yytokenvalue); |
} |
$yymx = $this->yystack[ $this->yyidx ]->major; |
if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { |
if ($this->yyTraceFILE) { |
fprintf( |
$this->yyTraceFILE, |
"%sDiscard input token %s\n", |
$this->yyTracePrompt, |
$this->yyTokenName[ $yymajor ] |
); |
} |
$this->yy_destructor($yymajor, $yytokenvalue); |
$yymajor = self::YYNOCODE; |
} else { |
while ($this->yyidx >= 0 && |
$yymx !== self::YYERRORSYMBOL && |
($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE |
) { |
$this->yy_pop_parser_stack(); |
} |
if ($this->yyidx < 0 || $yymajor == 0) { |
$this->yy_destructor($yymajor, $yytokenvalue); |
$this->yy_parse_failed(); |
$yymajor = self::YYNOCODE; |
} elseif ($yymx !== self::YYERRORSYMBOL) { |
$u2 = 0; |
$this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); |
} |
} |
$this->yyerrcnt = 3; |
$yyerrorhit = 1; |
} else { |
if ($this->yyerrcnt <= 0) { |
$this->yy_syntax_error($yymajor, $yytokenvalue); |
} |
$this->yyerrcnt = 3; |
$this->yy_destructor($yymajor, $yytokenvalue); |
if ($yyendofinput) { |
$this->yy_parse_failed(); |
} |
$yymajor = self::YYNOCODE; |
} |
} else { |
$this->yy_accept(); |
$yymajor = self::YYNOCODE; |
} |
} while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); |
} |
/** |
* parse optional boolean keywords |
* |
* @param string $str |
* |
* @return bool |
*/ |
private function parse_bool($str) |
{ |
$str = strtolower($str); |
if (in_array($str, array('on', 'yes', 'true'))) { |
$res = true; |
} else { |
$res = false; |
} |
return $res; |
} |
/** |
* set a config variable in target array |
* |
* @param array $var |
* @param array $target_array |
*/ |
private function set_var(array $var, array &$target_array) |
{ |
$key = $var[ 'key' ]; |
$value = $var[ 'value' ]; |
if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) { |
$target_array[ 'vars' ][ $key ] = $value; |
} else { |
settype($target_array[ 'vars' ][ $key ], 'array'); |
$target_array[ 'vars' ][ $key ][] = $value; |
} |
} |
/** |
* add config variable to global vars |
* |
* @param array $vars |
*/ |
private function add_global_vars(array $vars) |
{ |
if (!isset($this->compiler->config_data[ 'vars' ])) { |
$this->compiler->config_data[ 'vars' ] = array(); |
} |
foreach ($vars as $var) { |
$this->set_var($var, $this->compiler->config_data); |
} |
} |
/** |
* add config variable to section |
* |
* @param string $section_name |
* @param array $vars |
*/ |
private function add_section_vars($section_name, array $vars) |
{ |
if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) { |
$this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = array(); |
} |
foreach ($vars as $var) { |
$this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_data.php |
---|
0,0 → 1,292 |
<?php |
/** |
* Smarty Internal Plugin Data |
* This file contains the basic classes and methods for template and variable creation |
* |
* @package Smarty |
* @subpackage Template |
* @author Uwe Tews |
*/ |
/** |
* Base class with template and variable methods |
* |
* @package Smarty |
* @subpackage Template |
* |
* @property int $scope |
* @property Smarty $smarty |
* The following methods will be dynamically loaded by the extension handler when they are called. |
* They are located in a corresponding Smarty_Internal_Method_xxxx class |
* |
* @method mixed _getConfigVariable(string $varName, bool $errorEnable = true) |
* @method mixed getConfigVariable(string $varName, bool $errorEnable = true) |
* @method mixed getConfigVars(string $varName = null, bool $searchParents = true) |
* @method mixed getGlobal(string $varName = null) |
* @method mixed getStreamVariable(string $variable) |
* @method Smarty_Internal_Data clearAssign(mixed $tpl_var) |
* @method Smarty_Internal_Data clearAllAssign() |
* @method Smarty_Internal_Data clearConfig(string $varName = null) |
* @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local') |
*/ |
abstract class Smarty_Internal_Data |
{ |
/** |
* This object type (Smarty = 1, template = 2, data = 4) |
* |
* @var int |
*/ |
public $_objType = 4; |
/** |
* name of class used for templates |
* |
* @var string |
*/ |
public $template_class = 'Smarty_Internal_Template'; |
/** |
* template variables |
* |
* @var Smarty_Variable[] |
*/ |
public $tpl_vars = array(); |
/** |
* parent template (if any) |
* |
* @var Smarty|Smarty_Internal_Template|Smarty_Data |
*/ |
public $parent = null; |
/** |
* configuration settings |
* |
* @var string[] |
*/ |
public $config_vars = array(); |
/** |
* extension handler |
* |
* @var Smarty_Internal_Extension_Handler |
*/ |
public $ext = null; |
/** |
* Smarty_Internal_Data constructor. |
* |
* Install extension handler |
*/ |
public function __construct() |
{ |
$this->ext = new Smarty_Internal_Extension_Handler(); |
$this->ext->objType = $this->_objType; |
} |
/** |
* assigns a Smarty variable |
* |
* @param array|string $tpl_var the template variable name(s) |
* @param mixed $value the value to assign |
* @param boolean $nocache if true any output of this variable will be not cached |
* |
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for |
* chaining |
*/ |
public function assign($tpl_var, $value = null, $nocache = false) |
{ |
if (is_array($tpl_var)) { |
foreach ($tpl_var as $_key => $_val) { |
$this->assign($_key, $_val, $nocache); |
} |
} else { |
if ($tpl_var !== '') { |
if ($this->_objType === 2) { |
/** |
* |
* |
* @var Smarty_Internal_Template $this |
*/ |
$this->_assignInScope($tpl_var, $value, $nocache); |
} else { |
$this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache); |
} |
} |
} |
return $this; |
} |
/** |
* appends values to template variables |
* |
* @api Smarty::append() |
* @link http://www.smarty.net/docs/en/api.append.tpl |
* |
* @param array|string $tpl_var the template variable name(s) |
* @param mixed $value the value to append |
* @param bool $merge flag if array elements shall be merged |
* @param bool $nocache if true any output of this variable will |
* be not cached |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function append($tpl_var, $value = null, $merge = false, $nocache = false) |
{ |
return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache); |
} |
/** |
* assigns a global Smarty variable |
* |
* @param string $varName the global variable name |
* @param mixed $value the value to assign |
* @param boolean $nocache if true any output of this variable will be not cached |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function assignGlobal($varName, $value = null, $nocache = false) |
{ |
return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache); |
} |
/** |
* appends values to template variables by reference |
* |
* @param string $tpl_var the template variable name |
* @param mixed &$value the referenced value to append |
* @param boolean $merge flag if array elements shall be merged |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function appendByRef($tpl_var, &$value, $merge = false) |
{ |
return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge); |
} |
/** |
* assigns values to template variables by reference |
* |
* @param string $tpl_var the template variable name |
* @param $value |
* @param boolean $nocache if true any output of this variable will be not cached |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function assignByRef($tpl_var, &$value, $nocache = false) |
{ |
return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache); |
} |
/** |
* Returns a single or all template variables |
* |
* @api Smarty::getTemplateVars() |
* @link http://www.smarty.net/docs/en/api.get.template.vars.tpl |
* |
* @param string $varName variable name or null |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object |
* @param bool $searchParents include parent templates? |
* |
* @return mixed variable value or or array of variables |
*/ |
public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true) |
{ |
return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents); |
} |
/** |
* gets the object of a Smarty variable |
* |
* @param string $variable the name of the Smarty variable |
* @param Smarty_Internal_Data $_ptr optional pointer to data object |
* @param boolean $searchParents search also in parent data |
* @param bool $error_enable |
* |
* @return Smarty_Variable|Smarty_Undefined_Variable the object of the variable |
* @deprecated since 3.1.28 please use Smarty_Internal_Data::getTemplateVars() instead. |
*/ |
public function getVariable( |
$variable = null, |
Smarty_Internal_Data $_ptr = null, |
$searchParents = true, |
$error_enable = true |
) { |
return $this->ext->getTemplateVars->_getVariable($this, $variable, $_ptr, $searchParents, $error_enable); |
} |
/** |
* Follow the parent chain an merge template and config variables |
* |
* @param \Smarty_Internal_Data|null $data |
*/ |
public function _mergeVars(Smarty_Internal_Data $data = null) |
{ |
if (isset($data)) { |
if (!empty($this->tpl_vars)) { |
$data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars); |
} |
if (!empty($this->config_vars)) { |
$data->config_vars = array_merge($this->config_vars, $data->config_vars); |
} |
} else { |
$data = $this; |
} |
if (isset($this->parent)) { |
$this->parent->_mergeVars($data); |
} |
} |
/** |
* Return true if this instance is a Data obj |
* |
* @return bool |
*/ |
public function _isDataObj() |
{ |
return $this->_objType === 4; |
} |
/** |
* Return true if this instance is a template obj |
* |
* @return bool |
*/ |
public function _isTplObj() |
{ |
return $this->_objType === 2; |
} |
/** |
* Return true if this instance is a Smarty obj |
* |
* @return bool |
*/ |
public function _isSmartyObj() |
{ |
return $this->_objType === 1; |
} |
/** |
* Get Smarty object |
* |
* @return Smarty |
*/ |
public function _getSmartyObj() |
{ |
return $this->smarty; |
} |
/** |
* Handle unknown class methods |
* |
* @param string $name unknown method-name |
* @param array $args argument array |
* |
* @return mixed |
*/ |
public function __call($name, $args) |
{ |
return $this->ext->_callExternalMethod($this, $name, $args); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_debug.php |
---|
0,0 → 1,425 |
<?php |
/** |
* Smarty Internal Plugin Debug |
* Class to collect data for the Smarty Debugging Console |
* |
* @package Smarty |
* @subpackage Debug |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Debug Class |
* |
* @package Smarty |
* @subpackage Debug |
*/ |
class Smarty_Internal_Debug extends Smarty_Internal_Data |
{ |
/** |
* template data |
* |
* @var array |
*/ |
public $template_data = array(); |
/** |
* List of uid's which shall be ignored |
* |
* @var array |
*/ |
public $ignore_uid = array(); |
/** |
* Index of display() and fetch() calls |
* |
* @var int |
*/ |
public $index = 0; |
/** |
* Counter for window offset |
* |
* @var int |
*/ |
public $offset = 0; |
/** |
* Start logging template |
* |
* @param \Smarty_Internal_Template $template template |
* @param null $mode true: display false: fetch null: subtemplate |
*/ |
public function start_template(Smarty_Internal_Template $template, $mode = null) |
{ |
if (isset($mode) && !$template->_isSubTpl()) { |
$this->index++; |
$this->offset++; |
$this->template_data[ $this->index ] = null; |
} |
$key = $this->get_key($template); |
$this->template_data[ $this->index ][ $key ][ 'start_template_time' ] = microtime(true); |
} |
/** |
* End logging of cache time |
* |
* @param \Smarty_Internal_Template $template cached template |
*/ |
public function end_template(Smarty_Internal_Template $template) |
{ |
$key = $this->get_key($template); |
$this->template_data[ $this->index ][ $key ][ 'total_time' ] += |
microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_template_time' ]; |
//$this->template_data[$this->index][$key]['properties'] = $template->properties; |
} |
/** |
* Start logging of compile time |
* |
* @param \Smarty_Internal_Template $template |
*/ |
public function start_compile(Smarty_Internal_Template $template) |
{ |
static $_is_stringy = array('string' => true, 'eval' => true); |
if (!empty($template->compiler->trace_uid)) { |
$key = $template->compiler->trace_uid; |
if (!isset($this->template_data[ $this->index ][ $key ])) { |
if (isset($_is_stringy[ $template->source->type ])) { |
$this->template_data[ $this->index ][ $key ][ 'name' ] = |
'\'' . substr($template->source->name, 0, 25) . '...\''; |
} else { |
$this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath; |
} |
$this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0; |
$this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0; |
$this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0; |
} |
} else { |
if (isset($this->ignore_uid[ $template->source->uid ])) { |
return; |
} |
$key = $this->get_key($template); |
} |
$this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true); |
} |
/** |
* End logging of compile time |
* |
* @param \Smarty_Internal_Template $template |
*/ |
public function end_compile(Smarty_Internal_Template $template) |
{ |
if (!empty($template->compiler->trace_uid)) { |
$key = $template->compiler->trace_uid; |
} else { |
if (isset($this->ignore_uid[ $template->source->uid ])) { |
return; |
} |
$key = $this->get_key($template); |
} |
$this->template_data[ $this->index ][ $key ][ 'compile_time' ] += |
microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ]; |
} |
/** |
* Start logging of render time |
* |
* @param \Smarty_Internal_Template $template |
*/ |
public function start_render(Smarty_Internal_Template $template) |
{ |
$key = $this->get_key($template); |
$this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true); |
} |
/** |
* End logging of compile time |
* |
* @param \Smarty_Internal_Template $template |
*/ |
public function end_render(Smarty_Internal_Template $template) |
{ |
$key = $this->get_key($template); |
$this->template_data[ $this->index ][ $key ][ 'render_time' ] += |
microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ]; |
} |
/** |
* Start logging of cache time |
* |
* @param \Smarty_Internal_Template $template cached template |
*/ |
public function start_cache(Smarty_Internal_Template $template) |
{ |
$key = $this->get_key($template); |
$this->template_data[ $this->index ][ $key ][ 'start_time' ] = microtime(true); |
} |
/** |
* End logging of cache time |
* |
* @param \Smarty_Internal_Template $template cached template |
*/ |
public function end_cache(Smarty_Internal_Template $template) |
{ |
$key = $this->get_key($template); |
$this->template_data[ $this->index ][ $key ][ 'cache_time' ] += |
microtime(true) - $this->template_data[ $this->index ][ $key ][ 'start_time' ]; |
} |
/** |
* Register template object |
* |
* @param \Smarty_Internal_Template $template cached template |
*/ |
public function register_template(Smarty_Internal_Template $template) |
{ |
} |
/** |
* Register data object |
* |
* @param \Smarty_Data $data data object |
*/ |
public static function register_data(Smarty_Data $data) |
{ |
} |
/** |
* Opens a window for the Smarty Debugging Console and display the data |
* |
* @param Smarty_Internal_Template|Smarty $obj object to debug |
* @param bool $full |
* |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function display_debug($obj, $full = false) |
{ |
if (!$full) { |
$this->offset++; |
$savedIndex = $this->index; |
$this->index = 9999; |
} |
$smarty = $obj->_getSmartyObj(); |
// create fresh instance of smarty for displaying the debug console |
// to avoid problems if the application did overload the Smarty class |
$debObj = new Smarty(); |
// copy the working dirs from application |
$debObj->setCompileDir($smarty->getCompileDir()); |
// init properties by hand as user may have edited the original Smarty class |
$debObj->setPluginsDir(is_dir(dirname(__FILE__) . '/../plugins') ? dirname(__FILE__) . |
'/../plugins' : $smarty->getPluginsDir()); |
$debObj->force_compile = false; |
$debObj->compile_check = Smarty::COMPILECHECK_ON; |
$debObj->left_delimiter = '{'; |
$debObj->right_delimiter = '}'; |
$debObj->security_policy = null; |
$debObj->debugging = false; |
$debObj->debugging_ctrl = 'NONE'; |
$debObj->error_reporting = E_ALL & ~E_NOTICE; |
$debObj->debug_tpl = |
isset($smarty->debug_tpl) ? $smarty->debug_tpl : 'file:' . dirname(__FILE__) . '/../debug.tpl'; |
$debObj->registered_plugins = array(); |
$debObj->registered_resources = array(); |
$debObj->registered_filters = array(); |
$debObj->autoload_filters = array(); |
$debObj->default_modifiers = array(); |
$debObj->escape_html = true; |
$debObj->caching = Smarty::CACHING_OFF; |
$debObj->compile_id = null; |
$debObj->cache_id = null; |
// prepare information of assigned variables |
$ptr = $this->get_debug_vars($obj); |
$_assigned_vars = $ptr->tpl_vars; |
ksort($_assigned_vars); |
$_config_vars = $ptr->config_vars; |
ksort($_config_vars); |
$debugging = $smarty->debugging; |
$_template = new Smarty_Internal_Template($debObj->debug_tpl, $debObj); |
if ($obj->_isTplObj()) { |
$_template->assign('template_name', $obj->source->type . ':' . $obj->source->name); |
} |
if ($obj->_objType === 1 || $full) { |
$_template->assign('template_data', $this->template_data[ $this->index ]); |
} else { |
$_template->assign('template_data', null); |
} |
$_template->assign('assigned_vars', $_assigned_vars); |
$_template->assign('config_vars', $_config_vars); |
$_template->assign('execution_time', microtime(true) - $smarty->start_time); |
$_template->assign('display_mode', $debugging === 2 || !$full); |
$_template->assign('offset', $this->offset * 50); |
echo $_template->fetch(); |
if (isset($full)) { |
$this->index--; |
} |
if (!$full) { |
$this->index = $savedIndex; |
} |
} |
/** |
* Recursively gets variables from all template/data scopes |
* |
* @param Smarty_Internal_Template|Smarty_Data $obj object to debug |
* |
* @return StdClass |
*/ |
public function get_debug_vars($obj) |
{ |
$config_vars = array(); |
foreach ($obj->config_vars as $key => $var) { |
$config_vars[ $key ][ 'value' ] = $var; |
if ($obj->_isTplObj()) { |
$config_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name; |
} elseif ($obj->_isDataObj()) { |
$tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName; |
} else { |
$config_vars[ $key ][ 'scope' ] = 'Smarty object'; |
} |
} |
$tpl_vars = array(); |
foreach ($obj->tpl_vars as $key => $var) { |
foreach ($var as $varkey => $varvalue) { |
if ($varkey === 'value') { |
$tpl_vars[ $key ][ $varkey ] = $varvalue; |
} else { |
if ($varkey === 'nocache') { |
if ($varvalue === true) { |
$tpl_vars[ $key ][ $varkey ] = $varvalue; |
} |
} else { |
if ($varkey !== 'scope' || $varvalue !== 0) { |
$tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue; |
} |
} |
} |
} |
if ($obj->_isTplObj()) { |
$tpl_vars[ $key ][ 'scope' ] = $obj->source->type . ':' . $obj->source->name; |
} elseif ($obj->_isDataObj()) { |
$tpl_vars[ $key ][ 'scope' ] = $obj->dataObjectName; |
} else { |
$tpl_vars[ $key ][ 'scope' ] = 'Smarty object'; |
} |
} |
if (isset($obj->parent)) { |
$parent = $this->get_debug_vars($obj->parent); |
foreach ($parent->tpl_vars as $name => $pvar) { |
if (isset($tpl_vars[ $name ]) && $tpl_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) { |
$tpl_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ]; |
} |
} |
$tpl_vars = array_merge($parent->tpl_vars, $tpl_vars); |
foreach ($parent->config_vars as $name => $pvar) { |
if (isset($config_vars[ $name ]) && $config_vars[ $name ][ 'value' ] === $pvar[ 'value' ]) { |
$config_vars[ $name ][ 'scope' ] = $pvar[ 'scope' ]; |
} |
} |
$config_vars = array_merge($parent->config_vars, $config_vars); |
} else { |
foreach (Smarty::$global_tpl_vars as $key => $var) { |
if (!array_key_exists($key, $tpl_vars)) { |
foreach ($var as $varkey => $varvalue) { |
if ($varkey === 'value') { |
$tpl_vars[ $key ][ $varkey ] = $varvalue; |
} else { |
if ($varkey === 'nocache') { |
if ($varvalue === true) { |
$tpl_vars[ $key ][ $varkey ] = $varvalue; |
} |
} else { |
if ($varkey !== 'scope' || $varvalue !== 0) { |
$tpl_vars[ $key ][ 'attributes' ][ $varkey ] = $varvalue; |
} |
} |
} |
} |
$tpl_vars[ $key ][ 'scope' ] = 'Global'; |
} |
} |
} |
return (object)array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars); |
} |
/** |
* Return key into $template_data for template |
* |
* @param \Smarty_Internal_Template $template template object |
* |
* @return string key into $template_data |
*/ |
private function get_key(Smarty_Internal_Template $template) |
{ |
static $_is_stringy = array('string' => true, 'eval' => true); |
// calculate Uid if not already done |
if ($template->source->uid === '') { |
$template->source->filepath; |
} |
$key = $template->source->uid; |
if (isset($this->template_data[ $this->index ][ $key ])) { |
return $key; |
} else { |
if (isset($_is_stringy[ $template->source->type ])) { |
$this->template_data[ $this->index ][ $key ][ 'name' ] = |
'\'' . substr($template->source->name, 0, 25) . '...\''; |
} else { |
$this->template_data[ $this->index ][ $key ][ 'name' ] = $template->source->filepath; |
} |
$this->template_data[ $this->index ][ $key ][ 'compile_time' ] = 0; |
$this->template_data[ $this->index ][ $key ][ 'render_time' ] = 0; |
$this->template_data[ $this->index ][ $key ][ 'cache_time' ] = 0; |
$this->template_data[ $this->index ][ $key ][ 'total_time' ] = 0; |
return $key; |
} |
} |
/** |
* Ignore template |
* |
* @param \Smarty_Internal_Template $template |
*/ |
public function ignore(Smarty_Internal_Template $template) |
{ |
// calculate Uid if not already done |
if ($template->source->uid === '') { |
$template->source->filepath; |
} |
$this->ignore_uid[ $template->source->uid ] = true; |
} |
/** |
* handle 'URL' debugging mode |
* |
* @param Smarty $smarty |
*/ |
public function debugUrl(Smarty $smarty) |
{ |
if (isset($_SERVER[ 'QUERY_STRING' ])) { |
$_query_string = $_SERVER[ 'QUERY_STRING' ]; |
} else { |
$_query_string = ''; |
} |
if (false !== strpos($_query_string, $smarty->smarty_debug_id)) { |
if (false !== strpos($_query_string, $smarty->smarty_debug_id . '=on')) { |
// enable debugging for this browser session |
setcookie('SMARTY_DEBUG', true); |
$smarty->debugging = true; |
} elseif (false !== strpos($_query_string, $smarty->smarty_debug_id . '=off')) { |
// disable debugging for this browser session |
setcookie('SMARTY_DEBUG', false); |
$smarty->debugging = false; |
} else { |
// enable debugging for this page |
$smarty->debugging = true; |
} |
} else { |
if (isset($_COOKIE[ 'SMARTY_DEBUG' ])) { |
$smarty->debugging = true; |
} |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_errorhandler.php |
---|
0,0 → 1,113 |
<?php |
/** |
* Smarty error handler |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
* |
* @deprecated |
Smarty does no longer use @filemtime() |
*/ |
class Smarty_Internal_ErrorHandler |
{ |
/** |
* contains directories outside of SMARTY_DIR that are to be muted by muteExpectedErrors() |
*/ |
public static $mutedDirectories = array(); |
/** |
* error handler returned by set_error_handler() in self::muteExpectedErrors() |
*/ |
private static $previousErrorHandler = null; |
/** |
* Enable error handler to mute expected messages |
* |
*/ |
public static function muteExpectedErrors() |
{ |
/* |
error muting is done because some people implemented custom error_handlers using |
http://php.net/set_error_handler and for some reason did not understand the following paragraph: |
It is important to remember that the standard PHP error handler is completely bypassed for the |
error types specified by error_types unless the callback function returns FALSE. |
error_reporting() settings will have no effect and your error handler will be called regardless - |
however you are still able to read the current value of error_reporting and act appropriately. |
Of particular note is that this value will be 0 if the statement that caused the error was |
prepended by the @ error-control operator. |
Smarty deliberately uses @filemtime() over file_exists() and filemtime() in some places. Reasons include |
- @filemtime() is almost twice as fast as using an additional file_exists() |
- between file_exists() and filemtime() a possible race condition is opened, |
which does not exist using the simple @filemtime() approach. |
*/ |
$error_handler = array('Smarty_Internal_ErrorHandler', 'mutingErrorHandler'); |
$previous = set_error_handler($error_handler); |
// avoid dead loops |
if ($previous !== $error_handler) { |
self::$previousErrorHandler = $previous; |
} |
} |
/** |
* Error Handler to mute expected messages |
* |
* @link http://php.net/set_error_handler |
* |
* @param integer $errno Error level |
* @param $errstr |
* @param $errfile |
* @param $errline |
* @param $errcontext |
* |
* @return bool |
*/ |
public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext) |
{ |
$_is_muted_directory = false; |
// add the SMARTY_DIR to the list of muted directories |
if (!isset(self::$mutedDirectories[ SMARTY_DIR ])) { |
$smarty_dir = realpath(SMARTY_DIR); |
if ($smarty_dir !== false) { |
self::$mutedDirectories[ SMARTY_DIR ] = |
array('file' => $smarty_dir, 'length' => strlen($smarty_dir),); |
} |
} |
// walk the muted directories and test against $errfile |
foreach (self::$mutedDirectories as $key => &$dir) { |
if (!$dir) { |
// resolve directory and length for speedy comparisons |
$file = realpath($key); |
if ($file === false) { |
// this directory does not exist, remove and skip it |
unset(self::$mutedDirectories[ $key ]); |
continue; |
} |
$dir = array('file' => $file, 'length' => strlen($file),); |
} |
if (!strncmp($errfile, $dir[ 'file' ], $dir[ 'length' ])) { |
$_is_muted_directory = true; |
break; |
} |
} |
// pass to next error handler if this error did not occur inside SMARTY_DIR |
// or the error was within smarty but masked to be ignored |
if (!$_is_muted_directory || ($errno && $errno & error_reporting())) { |
if (self::$previousErrorHandler) { |
return call_user_func( |
self::$previousErrorHandler, |
$errno, |
$errstr, |
$errfile, |
$errline, |
$errcontext |
); |
} else { |
return false; |
} |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_extension_handler.php |
---|
0,0 → 1,197 |
<?php |
/** |
* Smarty Extension handler |
* |
* Load extensions dynamically |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
* |
* Runtime extensions |
* @property Smarty_Internal_Runtime_CacheModify $_cacheModify |
* @property Smarty_Internal_Runtime_CacheResourceFile $_cacheResourceFile |
* @property Smarty_Internal_Runtime_Capture $_capture |
* @property Smarty_Internal_Runtime_CodeFrame $_codeFrame |
* @property Smarty_Internal_Runtime_FilterHandler $_filterHandler |
* @property Smarty_Internal_Runtime_Foreach $_foreach |
* @property Smarty_Internal_Runtime_GetIncludePath $_getIncludePath |
* @property Smarty_Internal_Runtime_Make_Nocache $_make_nocache |
* @property Smarty_Internal_Runtime_UpdateCache $_updateCache |
* @property Smarty_Internal_Runtime_UpdateScope $_updateScope |
* @property Smarty_Internal_Runtime_TplFunction $_tplFunction |
* @property Smarty_Internal_Runtime_WriteFile $_writeFile |
* |
* Method extensions |
* @property Smarty_Internal_Method_GetTemplateVars $getTemplateVars |
* @property Smarty_Internal_Method_Append $append |
* @property Smarty_Internal_Method_AppendByRef $appendByRef |
* @property Smarty_Internal_Method_AssignGlobal $assignGlobal |
* @property Smarty_Internal_Method_AssignByRef $assignByRef |
* @property Smarty_Internal_Method_LoadFilter $loadFilter |
* @property Smarty_Internal_Method_LoadPlugin $loadPlugin |
* @property Smarty_Internal_Method_RegisterFilter $registerFilter |
* @property Smarty_Internal_Method_RegisterObject $registerObject |
* @property Smarty_Internal_Method_RegisterPlugin $registerPlugin |
* @property mixed|\Smarty_Template_Cached configLoad |
*/ |
class Smarty_Internal_Extension_Handler |
{ |
public $objType = null; |
/** |
* Cache for property information from generic getter/setter |
* Preloaded with names which should not use with generic getter/setter |
* |
* @var array |
*/ |
private $_property_info = array( |
'AutoloadFilters' => 0, 'DefaultModifiers' => 0, 'ConfigVars' => 0, |
'DebugTemplate' => 0, 'RegisteredObject' => 0, 'StreamVariable' => 0, |
'TemplateVars' => 0, 'Literals' => 'Literals', |
);// |
private $resolvedProperties = array(); |
/** |
* Call external Method |
* |
* @param \Smarty_Internal_Data $data |
* @param string $name external method names |
* @param array $args argument array |
* |
* @return mixed |
*/ |
public function _callExternalMethod(Smarty_Internal_Data $data, $name, $args) |
{ |
/* @var Smarty $data ->smarty */ |
$smarty = isset($data->smarty) ? $data->smarty : $data; |
if (!isset($smarty->ext->$name)) { |
if (preg_match('/^((set|get)|(.*?))([A-Z].*)$/', $name, $match)) { |
$basename = $this->upperCase($match[ 4 ]); |
if (!isset($smarty->ext->$basename) && isset($this->_property_info[ $basename ]) |
&& is_string($this->_property_info[ $basename ]) |
) { |
$class = 'Smarty_Internal_Method_' . $this->_property_info[ $basename ]; |
if (class_exists($class)) { |
$classObj = new $class(); |
$methodes = get_class_methods($classObj); |
foreach ($methodes as $method) { |
$smarty->ext->$method = $classObj; |
} |
} |
} |
if (!empty($match[ 2 ]) && !isset($smarty->ext->$name)) { |
$class = 'Smarty_Internal_Method_' . $this->upperCase($name); |
if (!class_exists($class)) { |
$objType = $data->_objType; |
$propertyType = false; |
if (!isset($this->resolvedProperties[ $match[ 0 ] ][ $objType ])) { |
$property = isset($this->resolvedProperties[ 'property' ][ $basename ]) ? |
$this->resolvedProperties[ 'property' ][ $basename ] : |
$property = $this->resolvedProperties[ 'property' ][ $basename ] = strtolower( |
join( |
'_', |
preg_split( |
'/([A-Z][^A-Z]*)/', |
$basename, |
-1, |
PREG_SPLIT_NO_EMPTY | |
PREG_SPLIT_DELIM_CAPTURE |
) |
) |
); |
if ($property !== false) { |
if (property_exists($data, $property)) { |
$propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 1; |
} elseif (property_exists($smarty, $property)) { |
$propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ] = 2; |
} else { |
$this->resolvedProperties[ 'property' ][ $basename ] = $property = false; |
} |
} |
} else { |
$propertyType = $this->resolvedProperties[ $match[ 0 ] ][ $objType ]; |
$property = $this->resolvedProperties[ 'property' ][ $basename ]; |
} |
if ($propertyType) { |
$obj = $propertyType === 1 ? $data : $smarty; |
if ($match[ 2 ] === 'get') { |
return $obj->$property; |
} elseif ($match[ 2 ] === 'set') { |
return $obj->$property = $args[ 0 ]; |
} |
} |
} |
} |
} |
} |
$callback = array($smarty->ext->$name, $name); |
array_unshift($args, $data); |
if (isset($callback) && $callback[ 0 ]->objMap | $data->_objType) { |
return call_user_func_array($callback, $args); |
} |
return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), $args); |
} |
/** |
* Make first character of name parts upper case |
* |
* @param string $name |
* |
* @return string |
*/ |
public function upperCase($name) |
{ |
$_name = explode('_', $name); |
$_name = array_map('ucfirst', $_name); |
return implode('_', $_name); |
} |
/** |
* get extension object |
* |
* @param string $property_name property name |
* |
* @return mixed|Smarty_Template_Cached |
*/ |
public function __get($property_name) |
{ |
// object properties of runtime template extensions will start with '_' |
if ($property_name[ 0 ] === '_') { |
$class = 'Smarty_Internal_Runtime' . $this->upperCase($property_name); |
} else { |
$class = 'Smarty_Internal_Method_' . $this->upperCase($property_name); |
} |
if (!class_exists($class)) { |
return $this->$property_name = new Smarty_Internal_Undefined($class); |
} |
return $this->$property_name = new $class(); |
} |
/** |
* set extension property |
* |
* @param string $property_name property name |
* @param mixed $value value |
* |
*/ |
public function __set($property_name, $value) |
{ |
$this->$property_name = $value; |
} |
/** |
* Call error handler for undefined method |
* |
* @param string $name unknown method-name |
* @param array $args argument array |
* |
* @return mixed |
*/ |
public function __call($name, $args) |
{ |
return call_user_func_array(array(new Smarty_Internal_Undefined(), $name), array($this)); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_addautoloadfilters.php |
---|
0,0 → 1,53 |
<?php |
/** |
* Smarty Method AddAutoloadFilters |
* |
* Smarty::addAutoloadFilters() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_AddAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters |
{ |
/** |
* Add autoload filters |
* |
* @api Smarty::setAutoloadFilters() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param array $filters filters to load automatically |
* @param string $type "pre", "output", … specify |
* the filter type to set. |
* Defaults to none treating |
* $filters' keys as the |
* appropriate types |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function addAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null) |
{ |
$smarty = $obj->_getSmartyObj(); |
if ($type !== null) { |
$this->_checkFilterType($type); |
if (!empty($smarty->autoload_filters[ $type ])) { |
$smarty->autoload_filters[ $type ] = array_merge($smarty->autoload_filters[ $type ], (array)$filters); |
} else { |
$smarty->autoload_filters[ $type ] = (array)$filters; |
} |
} else { |
foreach ((array)$filters as $type => $value) { |
$this->_checkFilterType($type); |
if (!empty($smarty->autoload_filters[ $type ])) { |
$smarty->autoload_filters[ $type ] = |
array_merge($smarty->autoload_filters[ $type ], (array)$value); |
} else { |
$smarty->autoload_filters[ $type ] = (array)$value; |
} |
} |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_adddefaultmodifiers.php |
---|
0,0 → 1,42 |
<?php |
/** |
* Smarty Method AddDefaultModifiers |
* |
* Smarty::addDefaultModifiers() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_AddDefaultModifiers |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Add default modifiers |
* |
* @api Smarty::addDefaultModifiers() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param array|string $modifiers modifier or list of modifiers |
* to add |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function addDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (is_array($modifiers)) { |
$smarty->default_modifiers = array_merge($smarty->default_modifiers, $modifiers); |
} else { |
$smarty->default_modifiers[] = $modifiers; |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_append.php |
---|
0,0 → 1,74 |
<?php |
/** |
* Smarty Method Append |
* |
* Smarty::append() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_Append |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* appends values to template variables |
* |
* @api Smarty::append() |
* @link http://www.smarty.net/docs/en/api.append.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param array|string $tpl_var the template variable name(s) |
* @param mixed $value the value to append |
* @param bool $merge flag if array elements shall be merged |
* @param bool $nocache if true any output of this variable will |
* be not cached |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function append(Smarty_Internal_Data $data, $tpl_var, $value = null, $merge = false, $nocache = false) |
{ |
if (is_array($tpl_var)) { |
// $tpl_var is an array, ignore $value |
foreach ($tpl_var as $_key => $_val) { |
if ($_key !== '') { |
$this->append($data, $_key, $_val, $merge, $nocache); |
} |
} |
} else { |
if ($tpl_var !== '' && isset($value)) { |
if (!isset($data->tpl_vars[ $tpl_var ])) { |
$tpl_var_inst = $data->ext->getTemplateVars->_getVariable($data, $tpl_var, null, true, false); |
if ($tpl_var_inst instanceof Smarty_Undefined_Variable) { |
$data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache); |
} else { |
$data->tpl_vars[ $tpl_var ] = clone $tpl_var_inst; |
} |
} |
if (!(is_array($data->tpl_vars[ $tpl_var ]->value) |
|| $data->tpl_vars[ $tpl_var ]->value instanceof ArrayAccess) |
) { |
settype($data->tpl_vars[ $tpl_var ]->value, 'array'); |
} |
if ($merge && is_array($value)) { |
foreach ($value as $_mkey => $_mval) { |
$data->tpl_vars[ $tpl_var ]->value[ $_mkey ] = $_mval; |
} |
} else { |
$data->tpl_vars[ $tpl_var ]->value[] = $value; |
} |
} |
if ($data->_isTplObj() && $data->scope) { |
$data->ext->_updateScope->_updateScope($data, $tpl_var); |
} |
} |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_appendbyref.php |
---|
0,0 → 1,49 |
<?php |
/** |
* Smarty Method AppendByRef |
* |
* Smarty::appendByRef() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_AppendByRef |
{ |
/** |
* appends values to template variables by reference |
* |
* @api Smarty::appendByRef() |
* @link http://www.smarty.net/docs/en/api.append.by.ref.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $tpl_var the template variable name |
* @param mixed &$value the referenced value to append |
* @param bool $merge flag if array elements shall be merged |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public static function appendByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $merge = false) |
{ |
if ($tpl_var !== '' && isset($value)) { |
if (!isset($data->tpl_vars[ $tpl_var ])) { |
$data->tpl_vars[ $tpl_var ] = new Smarty_Variable(); |
} |
if (!is_array($data->tpl_vars[ $tpl_var ]->value)) { |
settype($data->tpl_vars[ $tpl_var ]->value, 'array'); |
} |
if ($merge && is_array($value)) { |
foreach ($value as $_key => $_val) { |
$data->tpl_vars[ $tpl_var ]->value[ $_key ] = &$value[ $_key ]; |
} |
} else { |
$data->tpl_vars[ $tpl_var ]->value[] = &$value; |
} |
if ($data->_isTplObj() && $data->scope) { |
$data->ext->_updateScope->_updateScope($data, $tpl_var); |
} |
} |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_assignbyref.php |
---|
0,0 → 1,36 |
<?php |
/** |
* Smarty Method AssignByRef |
* |
* Smarty::assignByRef() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_AssignByRef |
{ |
/** |
* assigns values to template variables by reference |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $tpl_var the template variable name |
* @param $value |
* @param boolean $nocache if true any output of this variable will |
* be not cached |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function assignByRef(Smarty_Internal_Data $data, $tpl_var, &$value, $nocache) |
{ |
if ($tpl_var !== '') { |
$data->tpl_vars[ $tpl_var ] = new Smarty_Variable(null, $nocache); |
$data->tpl_vars[ $tpl_var ]->value = &$value; |
if ($data->_isTplObj() && $data->scope) { |
$data->ext->_updateScope->_updateScope($data, $tpl_var); |
} |
} |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_assignglobal.php |
---|
0,0 → 1,44 |
<?php |
/** |
* Smarty Method AssignGlobal |
* |
* Smarty::assignGlobal() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_AssignGlobal |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* assigns a global Smarty variable |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $varName the global variable name |
* @param mixed $value the value to assign |
* @param boolean $nocache if true any output of this variable will |
* be not cached |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function assignGlobal(Smarty_Internal_Data $data, $varName, $value = null, $nocache = false) |
{ |
if ($varName !== '') { |
Smarty::$global_tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache); |
$ptr = $data; |
while ($ptr->_isTplObj()) { |
$ptr->tpl_vars[ $varName ] = clone Smarty::$global_tpl_vars[ $varName ]; |
$ptr = $ptr->parent; |
} |
} |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_clearallassign.php |
---|
0,0 → 1,36 |
<?php |
/** |
* Smarty Method ClearAllAssign |
* |
* Smarty::clearAllAssign() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ClearAllAssign |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* clear all the assigned template variables. |
* |
* @api Smarty::clearAllAssign() |
* @link http://www.smarty.net/docs/en/api.clear.all.assign.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function clearAllAssign(Smarty_Internal_Data $data) |
{ |
$data->tpl_vars = array(); |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_clearallcache.php |
---|
0,0 → 1,41 |
<?php |
/** |
* Smarty Method ClearAllCache |
* |
* Smarty::clearAllCache() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ClearAllCache |
{ |
/** |
* Valid for Smarty object |
* |
* @var int |
*/ |
public $objMap = 1; |
/** |
* Empty cache folder |
* |
* @api Smarty::clearAllCache() |
* @link http://www.smarty.net/docs/en/api.clear.all.cache.tpl |
* |
* @param \Smarty $smarty |
* @param integer $exp_time expiration time |
* @param string $type resource type |
* |
* @return int number of cache files deleted |
* @throws \SmartyException |
*/ |
public function clearAllCache(Smarty $smarty, $exp_time = null, $type = null) |
{ |
$smarty->_clearTemplateCache(); |
// load cache resource and call clearAll |
$_cache_resource = Smarty_CacheResource::load($smarty, $type); |
return $_cache_resource->clearAll($smarty, $exp_time); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_clearassign.php |
---|
0,0 → 1,43 |
<?php |
/** |
* Smarty Method ClearAssign |
* |
* Smarty::clearAssign() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ClearAssign |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* clear the given assigned template variable(s). |
* |
* @api Smarty::clearAssign() |
* @link http://www.smarty.net/docs/en/api.clear.assign.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string|array $tpl_var the template variable(s) to clear |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function clearAssign(Smarty_Internal_Data $data, $tpl_var) |
{ |
if (is_array($tpl_var)) { |
foreach ($tpl_var as $curr_var) { |
unset($data->tpl_vars[ $curr_var ]); |
} |
} else { |
unset($data->tpl_vars[ $tpl_var ]); |
} |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_clearcache.php |
---|
0,0 → 1,50 |
<?php |
/** |
* Smarty Method ClearCache |
* |
* Smarty::clearCache() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ClearCache |
{ |
/** |
* Valid for Smarty object |
* |
* @var int |
*/ |
public $objMap = 1; |
/** |
* Empty cache for a specific template |
* |
* @api Smarty::clearCache() |
* @link http://www.smarty.net/docs/en/api.clear.cache.tpl |
* |
* @param \Smarty $smarty |
* @param string $template_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time |
* @param string $type resource type |
* |
* @return int number of cache files deleted |
* @throws \SmartyException |
*/ |
public function clearCache( |
Smarty $smarty, |
$template_name, |
$cache_id = null, |
$compile_id = null, |
$exp_time = null, |
$type = null |
) { |
$smarty->_clearTemplateCache(); |
// load cache resource and call clear |
$_cache_resource = Smarty_CacheResource::load($smarty, $type); |
return $_cache_resource->clear($smarty, $template_name, $cache_id, $compile_id, $exp_time); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_clearcompiledtemplate.php |
---|
0,0 → 1,131 |
<?php |
/** |
* Smarty Method ClearCompiledTemplate |
* |
* Smarty::clearCompiledTemplate() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ClearCompiledTemplate |
{ |
/** |
* Valid for Smarty object |
* |
* @var int |
*/ |
public $objMap = 1; |
/** |
* Delete compiled template file |
* |
* @api Smarty::clearCompiledTemplate() |
* @link http://www.smarty.net/docs/en/api.clear.compiled.template.tpl |
* |
* @param \Smarty $smarty |
* @param string $resource_name template name |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time |
* |
* @return int number of template files deleted |
* @throws \SmartyException |
*/ |
public function clearCompiledTemplate(Smarty $smarty, $resource_name = null, $compile_id = null, $exp_time = null) |
{ |
// clear template objects cache |
$smarty->_clearTemplateCache(); |
$_compile_dir = $smarty->getCompileDir(); |
if ($_compile_dir === '/') { //We should never want to delete this! |
return 0; |
} |
$_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null; |
$_dir_sep = $smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'; |
if (isset($resource_name)) { |
$_save_stat = $smarty->caching; |
$smarty->caching = Smarty::CACHING_OFF; |
/* @var Smarty_Internal_Template $tpl */ |
$tpl = $smarty->createTemplate($resource_name); |
$smarty->caching = $_save_stat; |
if (!$tpl->source->handler->uncompiled && !$tpl->source->handler->recompiled && $tpl->source->exists) { |
$_resource_part_1 = basename(str_replace('^', DIRECTORY_SEPARATOR, $tpl->compiled->filepath)); |
$_resource_part_1_length = strlen($_resource_part_1); |
} else { |
return 0; |
} |
$_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1); |
$_resource_part_2_length = strlen($_resource_part_2); |
} |
$_dir = $_compile_dir; |
if ($smarty->use_sub_dirs && isset($_compile_id)) { |
$_dir .= $_compile_id . $_dir_sep; |
} |
if (isset($_compile_id)) { |
$_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep; |
$_compile_id_part_length = strlen($_compile_id_part); |
} |
$_count = 0; |
try { |
$_compileDirs = new RecursiveDirectoryIterator($_dir); |
// NOTE: UnexpectedValueException thrown for PHP >= 5.3 |
} catch (Exception $e) { |
return 0; |
} |
$_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST); |
foreach ($_compile as $_file) { |
if (substr(basename($_file->getPathname()), 0, 1) === '.') { |
continue; |
} |
$_filepath = (string)$_file; |
if ($_file->isDir()) { |
if (!$_compile->isDot()) { |
// delete folder if empty |
@rmdir($_file->getPathname()); |
} |
} else { |
// delete only php files |
if (substr($_filepath, -4) !== '.php') { |
continue; |
} |
$unlink = false; |
if ((!isset($_compile_id) || |
(isset($_filepath[ $_compile_id_part_length ]) && |
$a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length))) |
&& (!isset($resource_name) || (isset($_filepath[ $_resource_part_1_length ]) |
&& substr_compare( |
$_filepath, |
$_resource_part_1, |
-$_resource_part_1_length, |
$_resource_part_1_length |
) === 0) || (isset($_filepath[ $_resource_part_2_length ]) |
&& substr_compare( |
$_filepath, |
$_resource_part_2, |
-$_resource_part_2_length, |
$_resource_part_2_length |
) === 0)) |
) { |
if (isset($exp_time)) { |
if (is_file($_filepath) && time() - filemtime($_filepath) >= $exp_time) { |
$unlink = true; |
} |
} else { |
$unlink = true; |
} |
} |
if ($unlink && is_file($_filepath) && @unlink($_filepath)) { |
$_count++; |
if (function_exists('opcache_invalidate') |
&& (!function_exists('ini_get') || strlen(ini_get('opcache.restrict_api')) < 1) |
) { |
opcache_invalidate($_filepath, true); |
} elseif (function_exists('apc_delete_file')) { |
apc_delete_file($_filepath); |
} |
} |
} |
} |
return $_count; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_clearconfig.php |
---|
0,0 → 1,41 |
<?php |
/** |
* Smarty Method ClearConfig |
* |
* Smarty::clearConfig() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ClearConfig |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* clear a single or all config variables |
* |
* @api Smarty::clearConfig() |
* @link http://www.smarty.net/docs/en/api.clear.config.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string|null $name variable name or null |
* |
* @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty |
*/ |
public function clearConfig(Smarty_Internal_Data $data, $name = null) |
{ |
if (isset($name)) { |
unset($data->config_vars[ $name ]); |
} else { |
$data->config_vars = array(); |
} |
return $data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_compileallconfig.php |
---|
0,0 → 1,36 |
<?php |
/** |
* Smarty Method CompileAllConfig |
* |
* Smarty::compileAllConfig() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_CompileAllConfig extends Smarty_Internal_Method_CompileAllTemplates |
{ |
/** |
* Compile all config files |
* |
* @api Smarty::compileAllConfig() |
* |
* @param \Smarty $smarty passed smarty object |
* @param string $extension file extension |
* @param bool $force_compile force all to recompile |
* @param int $time_limit |
* @param int $max_errors |
* |
* @return int number of template files recompiled |
*/ |
public function compileAllConfig( |
Smarty $smarty, |
$extension = '.conf', |
$force_compile = false, |
$time_limit = 0, |
$max_errors = null |
) { |
return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors, true); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_compilealltemplates.php |
---|
0,0 → 1,130 |
<?php |
/** |
* Smarty Method CompileAllTemplates |
* |
* Smarty::compileAllTemplates() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_CompileAllTemplates |
{ |
/** |
* Valid for Smarty object |
* |
* @var int |
*/ |
public $objMap = 1; |
/** |
* Compile all template files |
* |
* @api Smarty::compileAllTemplates() |
* |
* @param \Smarty $smarty passed smarty object |
* @param string $extension file extension |
* @param bool $force_compile force all to recompile |
* @param int $time_limit |
* @param int $max_errors |
* |
* @return integer number of template files recompiled |
*/ |
public function compileAllTemplates( |
Smarty $smarty, |
$extension = '.tpl', |
$force_compile = false, |
$time_limit = 0, |
$max_errors = null |
) { |
return $this->compileAll($smarty, $extension, $force_compile, $time_limit, $max_errors); |
} |
/** |
* Compile all template or config files |
* |
* @param \Smarty $smarty |
* @param string $extension template file name extension |
* @param bool $force_compile force all to recompile |
* @param int $time_limit set maximum execution time |
* @param int $max_errors set maximum allowed errors |
* @param bool $isConfig flag true if called for config files |
* |
* @return int number of template files compiled |
*/ |
protected function compileAll( |
Smarty $smarty, |
$extension, |
$force_compile, |
$time_limit, |
$max_errors, |
$isConfig = false |
) { |
// switch off time limit |
if (function_exists('set_time_limit')) { |
@set_time_limit($time_limit); |
} |
$_count = 0; |
$_error_count = 0; |
$sourceDir = $isConfig ? $smarty->getConfigDir() : $smarty->getTemplateDir(); |
// loop over array of source directories |
foreach ($sourceDir as $_dir) { |
$_dir_1 = new RecursiveDirectoryIterator( |
$_dir, |
defined('FilesystemIterator::FOLLOW_SYMLINKS') ? |
FilesystemIterator::FOLLOW_SYMLINKS : 0 |
); |
$_dir_2 = new RecursiveIteratorIterator($_dir_1); |
foreach ($_dir_2 as $_fileinfo) { |
$_file = $_fileinfo->getFilename(); |
if (substr(basename($_fileinfo->getPathname()), 0, 1) === '.' || strpos($_file, '.svn') !== false) { |
continue; |
} |
if (substr_compare($_file, $extension, -strlen($extension)) !== 0) { |
continue; |
} |
if ($_fileinfo->getPath() !== substr($_dir, 0, -1)) { |
$_file = substr($_fileinfo->getPath(), strlen($_dir)) . DIRECTORY_SEPARATOR . $_file; |
} |
echo "\n<br>", $_dir, '---', $_file; |
flush(); |
$_start_time = microtime(true); |
$_smarty = clone $smarty; |
// |
$_smarty->_cache = array(); |
$_smarty->ext = new Smarty_Internal_Extension_Handler(); |
$_smarty->ext->objType = $_smarty->_objType; |
$_smarty->force_compile = $force_compile; |
try { |
/* @var Smarty_Internal_Template $_tpl */ |
$_tpl = new $smarty->template_class($_file, $_smarty); |
$_tpl->caching = Smarty::CACHING_OFF; |
$_tpl->source = |
$isConfig ? Smarty_Template_Config::load($_tpl) : Smarty_Template_Source::load($_tpl); |
if ($_tpl->mustCompile()) { |
$_tpl->compileTemplateSource(); |
$_count++; |
echo ' compiled in ', microtime(true) - $_start_time, ' seconds'; |
flush(); |
} else { |
echo ' is up to date'; |
flush(); |
} |
} catch (Exception $e) { |
echo "\n<br> ------>Error: ", $e->getMessage(), "<br><br>\n"; |
$_error_count++; |
} |
// free memory |
unset($_tpl); |
$_smarty->_clearTemplateCache(); |
if ($max_errors !== null && $_error_count === $max_errors) { |
echo "\n<br><br>too many errors\n"; |
exit(1); |
} |
} |
} |
echo "\n<br>"; |
return $_count; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_configload.php |
---|
0,0 → 1,182 |
<?php |
/** |
* Smarty Method ConfigLoad |
* |
* Smarty::configLoad() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_ConfigLoad |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* load a config file, optionally load just selected sections |
* |
* @api Smarty::configLoad() |
* @link http://www.smarty.net/docs/en/api.config.load.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $config_file filename |
* @param mixed $sections array of section names, single |
* section or null |
* |
* @return \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template |
* @throws \Exception |
*/ |
public function configLoad(Smarty_Internal_Data $data, $config_file, $sections = null) |
{ |
$this->_loadConfigFile($data, $config_file, $sections, null); |
return $data; |
} |
/** |
* load a config file, optionally load just selected sections |
* |
* @api Smarty::configLoad() |
* @link http://www.smarty.net/docs/en/api.config.load.tpl |
* |
* @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data |
* @param string $config_file filename |
* @param mixed $sections array of section names, single |
* section or null |
* @param int $scope scope into which config variables |
* shall be loaded |
* |
* @throws \Exception |
*/ |
public function _loadConfigFile(Smarty_Internal_Data $data, $config_file, $sections = null, $scope = 0) |
{ |
/* @var \Smarty $smarty */ |
$smarty = $data->_getSmartyObj(); |
/* @var \Smarty_Internal_Template $confObj */ |
$confObj = new Smarty_Internal_Template($config_file, $smarty, $data, null, null, null, null, true); |
$confObj->caching = Smarty::CACHING_OFF; |
$confObj->source->config_sections = $sections; |
$confObj->source->scope = $scope; |
$confObj->compiled = Smarty_Template_Compiled::load($confObj); |
$confObj->compiled->render($confObj); |
if ($data->_isTplObj()) { |
$data->compiled->file_dependency[ $confObj->source->uid ] = |
array($confObj->source->filepath, $confObj->source->getTimeStamp(), $confObj->source->type); |
} |
} |
/** |
* load config variables into template object |
* |
* @param \Smarty_Internal_Template $tpl |
* @param array $new_config_vars |
*/ |
public function _loadConfigVars(Smarty_Internal_Template $tpl, $new_config_vars) |
{ |
$this->_assignConfigVars($tpl->parent->config_vars, $tpl, $new_config_vars); |
$tagScope = $tpl->source->scope; |
if ($tagScope >= 0) { |
if ($tagScope === Smarty::SCOPE_LOCAL) { |
$this->_updateVarStack($tpl, $new_config_vars); |
$tagScope = 0; |
if (!$tpl->scope) { |
return; |
} |
} |
if ($tpl->parent->_isTplObj() && ($tagScope || $tpl->parent->scope)) { |
$mergedScope = $tagScope | $tpl->scope; |
if ($mergedScope) { |
// update scopes |
/* @var \Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $ptr */ |
foreach ($tpl->smarty->ext->_updateScope->_getAffectedScopes($tpl->parent, $mergedScope) as $ptr) { |
$this->_assignConfigVars($ptr->config_vars, $tpl, $new_config_vars); |
if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) { |
$this->_updateVarStack($tpl, $new_config_vars); |
} |
} |
} |
} |
} |
} |
/** |
* Assign all config variables in given scope |
* |
* @param array $config_vars config variables in scope |
* @param \Smarty_Internal_Template $tpl |
* @param array $new_config_vars loaded config variables |
*/ |
public function _assignConfigVars(&$config_vars, Smarty_Internal_Template $tpl, $new_config_vars) |
{ |
// copy global config vars |
foreach ($new_config_vars[ 'vars' ] as $variable => $value) { |
if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) { |
$config_vars[ $variable ] = $value; |
} else { |
$config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value); |
} |
} |
// scan sections |
$sections = $tpl->source->config_sections; |
if (!empty($sections)) { |
foreach ((array)$sections as $tpl_section) { |
if (isset($new_config_vars[ 'sections' ][ $tpl_section ])) { |
foreach ($new_config_vars[ 'sections' ][ $tpl_section ][ 'vars' ] as $variable => $value) { |
if ($tpl->smarty->config_overwrite || !isset($config_vars[ $variable ])) { |
$config_vars[ $variable ] = $value; |
} else { |
$config_vars[ $variable ] = array_merge((array)$config_vars[ $variable ], (array)$value); |
} |
} |
} |
} |
} |
} |
/** |
* Update config variables in template local variable stack |
* |
* @param \Smarty_Internal_Template $tpl |
* @param array $config_vars |
*/ |
public function _updateVarStack(Smarty_Internal_Template $tpl, $config_vars) |
{ |
$i = 0; |
while (isset($tpl->_cache[ 'varStack' ][ $i ])) { |
$this->_assignConfigVars($tpl->_cache[ 'varStack' ][ $i ][ 'config' ], $tpl, $config_vars); |
$i++; |
} |
} |
/** |
* gets a config variable value |
* |
* @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data |
* @param string $varName the name of the config variable |
* @param bool $errorEnable |
* |
* @return null|string the value of the config variable |
*/ |
public function _getConfigVariable(Smarty_Internal_Data $data, $varName, $errorEnable = true) |
{ |
$_ptr = $data; |
while ($_ptr !== null) { |
if (isset($_ptr->config_vars[ $varName ])) { |
// found it, return it |
return $_ptr->config_vars[ $varName ]; |
} |
// not found, try at parent |
$_ptr = $_ptr->parent; |
} |
if ($data->smarty->error_unassigned && $errorEnable) { |
// force a notice |
$x = $$varName; |
} |
return null; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_createdata.php |
---|
0,0 → 1,44 |
<?php |
/** |
* Smarty Method CreateData |
* |
* Smarty::createData() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_CreateData |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* creates a data object |
* |
* @api Smarty::createData() |
* @link http://www.smarty.net/docs/en/api.create.data.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param \Smarty_Internal_Template|\Smarty_Internal_Data|\Smarty_Data|\Smarty $parent next higher level of Smarty |
* variables |
* @param string $name optional data block name |
* |
* @return \Smarty_Data data object |
*/ |
public function createData(Smarty_Internal_TemplateBase $obj, Smarty_Internal_Data $parent = null, $name = null) |
{ |
/* @var Smarty $smarty */ |
$smarty = $obj->_getSmartyObj(); |
$dataObj = new Smarty_Data($parent, $smarty, $name); |
if ($smarty->debugging) { |
Smarty_Internal_Debug::register_data($dataObj); |
} |
return $dataObj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getautoloadfilters.php |
---|
0,0 → 1,37 |
<?php |
/** |
* Smarty Method GetAutoloadFilters |
* |
* Smarty::getAutoloadFilters() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetAutoloadFilters extends Smarty_Internal_Method_SetAutoloadFilters |
{ |
/** |
* Get autoload filters |
* |
* @api Smarty::getAutoloadFilters() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type type of filter to get auto loads |
* for. Defaults to all autoload |
* filters |
* |
* @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type |
* was specified |
* @throws \SmartyException |
*/ |
public function getAutoloadFilters(Smarty_Internal_TemplateBase $obj, $type = null) |
{ |
$smarty = $obj->_getSmartyObj(); |
if ($type !== null) { |
$this->_checkFilterType($type); |
return isset($smarty->autoload_filters[ $type ]) ? $smarty->autoload_filters[ $type ] : array(); |
} |
return $smarty->autoload_filters; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getconfigvariable.php |
---|
0,0 → 1,34 |
<?php |
/** |
* Smarty Method GetConfigVariable |
* |
* Smarty::getConfigVariable() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetConfigVariable |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* gets a config variable value |
* |
* @param \Smarty|\Smarty_Internal_Data|\Smarty_Internal_Template $data |
* @param string $varName the name of the config variable |
* @param bool $errorEnable |
* |
* @return null|string the value of the config variable |
*/ |
public function getConfigVariable(Smarty_Internal_Data $data, $varName = null, $errorEnable = true) |
{ |
return $data->ext->configLoad->_getConfigVariable($data, $varName, $errorEnable); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getconfigvars.php |
---|
0,0 → 1,58 |
<?php |
/** |
* Smarty Method GetConfigVars |
* |
* Smarty::getConfigVars() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetConfigVars |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* Returns a single or all config variables |
* |
* @api Smarty::getConfigVars() |
* @link http://www.smarty.net/docs/en/api.get.config.vars.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $varname variable name or null |
* @param bool $search_parents include parent templates? |
* |
* @return mixed variable value or or array of variables |
*/ |
public function getConfigVars(Smarty_Internal_Data $data, $varname = null, $search_parents = true) |
{ |
$_ptr = $data; |
$var_array = array(); |
while ($_ptr !== null) { |
if (isset($varname)) { |
if (isset($_ptr->config_vars[ $varname ])) { |
return $_ptr->config_vars[ $varname ]; |
} |
} else { |
$var_array = array_merge($_ptr->config_vars, $var_array); |
} |
// not found, try at parent |
if ($search_parents) { |
$_ptr = $_ptr->parent; |
} else { |
$_ptr = null; |
} |
} |
if (isset($varname)) { |
return ''; |
} else { |
return $var_array; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getdebugtemplate.php |
---|
0,0 → 1,35 |
<?php |
/** |
* Smarty Method GetDebugTemplate |
* |
* Smarty::getDebugTemplate() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetDebugTemplate |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* return name of debugging template |
* |
* @api Smarty::getDebugTemplate() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* |
* @return string |
*/ |
public function getDebugTemplate(Smarty_Internal_TemplateBase $obj) |
{ |
$smarty = $obj->_getSmartyObj(); |
return $smarty->debug_tpl; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getdefaultmodifiers.php |
---|
0,0 → 1,35 |
<?php |
/** |
* Smarty Method GetDefaultModifiers |
* |
* Smarty::getDefaultModifiers() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetDefaultModifiers |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Get default modifiers |
* |
* @api Smarty::getDefaultModifiers() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* |
* @return array list of default modifiers |
*/ |
public function getDefaultModifiers(Smarty_Internal_TemplateBase $obj) |
{ |
$smarty = $obj->_getSmartyObj(); |
return $smarty->default_modifiers; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getglobal.php |
---|
0,0 → 1,47 |
<?php |
/** |
* Smarty Method GetGlobal |
* |
* Smarty::getGlobal() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetGlobal |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* Returns a single or all global variables |
* |
* @api Smarty::getGlobal() |
* |
* @param \Smarty_Internal_Data $data |
* @param string $varName variable name or null |
* |
* @return string|array variable value or or array of variables |
*/ |
public function getGlobal(Smarty_Internal_Data $data, $varName = null) |
{ |
if (isset($varName)) { |
if (isset(Smarty::$global_tpl_vars[ $varName ])) { |
return Smarty::$global_tpl_vars[ $varName ]->value; |
} else { |
return ''; |
} |
} else { |
$_result = array(); |
foreach (Smarty::$global_tpl_vars as $key => $var) { |
$_result[ $key ] = $var->value; |
} |
return $_result; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getregisteredobject.php |
---|
0,0 → 1,44 |
<?php |
/** |
* Smarty Method GetRegisteredObject |
* |
* Smarty::getRegisteredObject() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetRegisteredObject |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* return a reference to a registered object |
* |
* @api Smarty::getRegisteredObject() |
* @link http://www.smarty.net/docs/en/api.get.registered.object.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $object_name object name |
* |
* @return object |
* @throws \SmartyException if no such object is found |
*/ |
public function getRegisteredObject(Smarty_Internal_TemplateBase $obj, $object_name) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (!isset($smarty->registered_objects[ $object_name ])) { |
throw new SmartyException("'$object_name' is not a registered object"); |
} |
if (!is_object($smarty->registered_objects[ $object_name ][ 0 ])) { |
throw new SmartyException("registered '$object_name' is not an object"); |
} |
return $smarty->registered_objects[ $object_name ][ 0 ]; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_getstreamvariable.php |
---|
0,0 → 1,50 |
<?php |
/** |
* Smarty Method GetStreamVariable |
* |
* Smarty::getStreamVariable() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetStreamVariable |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* gets a stream variable |
* |
* @api Smarty::getStreamVariable() |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $variable the stream of the variable |
* |
* @return mixed |
* @throws \SmartyException |
*/ |
public function getStreamVariable(Smarty_Internal_Data $data, $variable) |
{ |
$_result = ''; |
$fp = fopen($variable, 'r+'); |
if ($fp) { |
while (!feof($fp) && ($current_line = fgets($fp)) !== false) { |
$_result .= $current_line; |
} |
fclose($fp); |
return $_result; |
} |
$smarty = isset($data->smarty) ? $data->smarty : $data; |
if ($smarty->error_unassigned) { |
throw new SmartyException('Undefined stream variable "' . $variable . '"'); |
} else { |
return null; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_gettags.php |
---|
0,0 → 1,63 |
<?php |
/** |
* Smarty Method GetTags |
* |
* Smarty::getTags() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetTags |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Return array of tag/attributes of all tags used by an template |
* |
* @api Smarty::getTags() |
* @link http://www.smarty.net/docs/en/api.get.tags.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param null|string|Smarty_Internal_Template $template |
* |
* @return array of tag/attributes |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function getTags(Smarty_Internal_TemplateBase $obj, $template = null) |
{ |
/* @var Smarty $smarty */ |
$smarty = $obj->_getSmartyObj(); |
if ($obj->_isTplObj() && !isset($template)) { |
$tpl = clone $obj; |
} elseif (isset($template) && $template->_isTplObj()) { |
$tpl = clone $template; |
} elseif (isset($template) && is_string($template)) { |
/* @var Smarty_Internal_Template $tpl */ |
$tpl = new $smarty->template_class($template, $smarty); |
// checks if template exists |
if (!$tpl->source->exists) { |
throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'"); |
} |
} |
if (isset($tpl)) { |
$tpl->smarty = clone $tpl->smarty; |
$tpl->smarty->_cache[ 'get_used_tags' ] = true; |
$tpl->_cache[ 'used_tags' ] = array(); |
$tpl->smarty->merge_compiled_includes = false; |
$tpl->smarty->disableSecurity(); |
$tpl->caching = Smarty::CACHING_OFF; |
$tpl->loadCompiler(); |
$tpl->compiler->compileTemplate($tpl); |
return $tpl->_cache[ 'used_tags' ]; |
} |
throw new SmartyException('Missing template specification'); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_gettemplatevars.php |
---|
0,0 → 1,119 |
<?php |
/** |
* Smarty Method GetTemplateVars |
* |
* Smarty::getTemplateVars() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_GetTemplateVars |
{ |
/** |
* Valid for all objects |
* |
* @var int |
*/ |
public $objMap = 7; |
/** |
* Returns a single or all template variables |
* |
* @api Smarty::getTemplateVars() |
* @link http://www.smarty.net/docs/en/api.get.template.vars.tpl |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $varName variable name or null |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object |
* @param bool $searchParents include parent templates? |
* |
* @return mixed variable value or or array of variables |
*/ |
public function getTemplateVars( |
Smarty_Internal_Data $data, |
$varName = null, |
Smarty_Internal_Data $_ptr = null, |
$searchParents = true |
) { |
if (isset($varName)) { |
$_var = $this->_getVariable($data, $varName, $_ptr, $searchParents, false); |
if (is_object($_var)) { |
return $_var->value; |
} else { |
return null; |
} |
} else { |
$_result = array(); |
if ($_ptr === null) { |
$_ptr = $data; |
} |
while ($_ptr !== null) { |
foreach ($_ptr->tpl_vars as $key => $var) { |
if (!array_key_exists($key, $_result)) { |
$_result[ $key ] = $var->value; |
} |
} |
// not found, try at parent |
if ($searchParents && isset($_ptr->parent)) { |
$_ptr = $_ptr->parent; |
} else { |
$_ptr = null; |
} |
} |
if ($searchParents && isset(Smarty::$global_tpl_vars)) { |
foreach (Smarty::$global_tpl_vars as $key => $var) { |
if (!array_key_exists($key, $_result)) { |
$_result[ $key ] = $var->value; |
} |
} |
} |
return $_result; |
} |
} |
/** |
* gets the object of a Smarty variable |
* |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $data |
* @param string $varName the name of the Smarty variable |
* @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr optional pointer to data object |
* @param bool $searchParents search also in parent data |
* @param bool $errorEnable |
* |
* @return \Smarty_Variable |
*/ |
public function _getVariable( |
Smarty_Internal_Data $data, |
$varName, |
Smarty_Internal_Data $_ptr = null, |
$searchParents = true, |
$errorEnable = true |
) { |
if ($_ptr === null) { |
$_ptr = $data; |
} |
while ($_ptr !== null) { |
if (isset($_ptr->tpl_vars[ $varName ])) { |
// found it, return it |
return $_ptr->tpl_vars[ $varName ]; |
} |
// not found, try at parent |
if ($searchParents && isset($_ptr->parent)) { |
$_ptr = $_ptr->parent; |
} else { |
$_ptr = null; |
} |
} |
if (isset(Smarty::$global_tpl_vars[ $varName ])) { |
// found it, return it |
return Smarty::$global_tpl_vars[ $varName ]; |
} |
if ($errorEnable && $data->_getSmartyObj()->error_unassigned) { |
// force a notice |
$x = $$varName; |
} |
return new Smarty_Undefined_Variable; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_literals.php |
---|
0,0 → 1,100 |
<?php |
/** |
* Smarty Method GetLiterals |
* |
* Smarty::getLiterals() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_Literals |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Get literals |
* |
* @api Smarty::getLiterals() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* |
* @return array list of literals |
*/ |
public function getLiterals(Smarty_Internal_TemplateBase $obj) |
{ |
$smarty = $obj->_getSmartyObj(); |
return (array)$smarty->literals; |
} |
/** |
* Add literals |
* |
* @api Smarty::addLiterals() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param array|string $literals literal or list of literals |
* to addto add |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function addLiterals(Smarty_Internal_TemplateBase $obj, $literals = null) |
{ |
if (isset($literals)) { |
$this->set($obj->_getSmartyObj(), (array)$literals); |
} |
return $obj; |
} |
/** |
* Set literals |
* |
* @api Smarty::setLiterals() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param array|string $literals literal or list of literals |
* to setto set |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function setLiterals(Smarty_Internal_TemplateBase $obj, $literals = null) |
{ |
$smarty = $obj->_getSmartyObj(); |
$smarty->literals = array(); |
if (!empty($literals)) { |
$this->set($smarty, (array)$literals); |
} |
return $obj; |
} |
/** |
* common setter for literals for easier handling of duplicates the |
* Smarty::$literals array gets filled with identical key values |
* |
* @param \Smarty $smarty |
* @param array $literals |
* |
* @throws \SmartyException |
*/ |
private function set(Smarty $smarty, $literals) |
{ |
$literals = array_combine($literals, $literals); |
$error = isset($literals[ $smarty->left_delimiter ]) ? array($smarty->left_delimiter) : array(); |
$error = isset($literals[ $smarty->right_delimiter ]) ? $error[] = $smarty->right_delimiter : $error; |
if (!empty($error)) { |
throw new SmartyException( |
'User defined literal(s) "' . $error . |
'" may not be identical with left or right delimiter' |
); |
} |
$smarty->literals = array_merge((array)$smarty->literals, (array)$literals); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_loadfilter.php |
---|
0,0 → 1,77 |
<?php |
/** |
* Smarty Method LoadFilter |
* |
* Smarty::loadFilter() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_LoadFilter |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Valid filter types |
* |
* @var array |
*/ |
private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true); |
/** |
* load a filter of specified type and name |
* |
* @api Smarty::loadFilter() |
* |
* @link http://www.smarty.net/docs/en/api.load.filter.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type filter type |
* @param string $name filter name |
* |
* @return bool |
* @throws SmartyException if filter could not be loaded |
*/ |
public function loadFilter(Smarty_Internal_TemplateBase $obj, $type, $name) |
{ |
$smarty = $obj->_getSmartyObj(); |
$this->_checkFilterType($type); |
$_plugin = "smarty_{$type}filter_{$name}"; |
$_filter_name = $_plugin; |
if (is_callable($_plugin)) { |
$smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin; |
return true; |
} |
if ($smarty->loadPlugin($_plugin)) { |
if (class_exists($_plugin, false)) { |
$_plugin = array($_plugin, 'execute'); |
} |
if (is_callable($_plugin)) { |
$smarty->registered_filters[ $type ][ $_filter_name ] = $_plugin; |
return true; |
} |
} |
throw new SmartyException("{$type}filter '{$name}' not found or callable"); |
} |
/** |
* Check if filter type is valid |
* |
* @param string $type |
* |
* @throws \SmartyException |
*/ |
public function _checkFilterType($type) |
{ |
if (!isset($this->filterTypes[ $type ])) { |
throw new SmartyException("Illegal filter type '{$type}'"); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_loadplugin.php |
---|
0,0 → 1,111 |
<?php |
/** |
* Smarty Extension Loadplugin |
* |
* $smarty->loadPlugin() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_LoadPlugin |
{ |
/** |
* Cache of searched plugin files |
* |
* @var array |
*/ |
public $plugin_files = array(); |
/** |
* Takes unknown classes and loads plugin files for them |
* class name format: Smarty_PluginType_PluginName |
* plugin filename format: plugintype.pluginname.php |
* |
* @param \Smarty $smarty |
* @param string $plugin_name class plugin name to load |
* @param bool $check check if already loaded |
* |
* @return bool|string |
* @throws \SmartyException |
*/ |
public function loadPlugin(Smarty $smarty, $plugin_name, $check) |
{ |
// if function or class exists, exit silently (already loaded) |
if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false))) { |
return true; |
} |
if (!preg_match('#^smarty_((internal)|([^_]+))_(.+)$#i', $plugin_name, $match)) { |
throw new SmartyException("plugin {$plugin_name} is not a valid name format"); |
} |
if (!empty($match[ 2 ])) { |
$file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php'; |
if (isset($this->plugin_files[ $file ])) { |
if ($this->plugin_files[ $file ] !== false) { |
return $this->plugin_files[ $file ]; |
} else { |
return false; |
} |
} else { |
if (is_file($file)) { |
$this->plugin_files[ $file ] = $file; |
include_once $file; |
return $file; |
} else { |
$this->plugin_files[ $file ] = false; |
return false; |
} |
} |
} |
// plugin filename is expected to be: [type].[name].php |
$_plugin_filename = "{$match[1]}.{$match[4]}.php"; |
$_lower_filename = strtolower($_plugin_filename); |
if (isset($this->plugin_files)) { |
if (isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) { |
if (!$smarty->use_include_path || $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] !== false) { |
return $this->plugin_files[ 'plugins_dir' ][ $_lower_filename ]; |
} |
} |
if (!$smarty->use_include_path || $smarty->ext->_getIncludePath->isNewIncludePath($smarty)) { |
unset($this->plugin_files[ 'include_path' ]); |
} else { |
if (isset($this->plugin_files[ 'include_path' ][ $_lower_filename ])) { |
return $this->plugin_files[ 'include_path' ][ $_lower_filename ]; |
} |
} |
} |
$_file_names = array($_plugin_filename); |
if ($_lower_filename !== $_plugin_filename) { |
$_file_names[] = $_lower_filename; |
} |
$_p_dirs = $smarty->getPluginsDir(); |
if (!isset($this->plugin_files[ 'plugins_dir' ][ $_lower_filename ])) { |
// loop through plugin dirs and find the plugin |
foreach ($_p_dirs as $_plugin_dir) { |
foreach ($_file_names as $name) { |
$file = $_plugin_dir . $name; |
if (is_file($file)) { |
$this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = $file; |
include_once $file; |
return $file; |
} |
$this->plugin_files[ 'plugins_dir' ][ $_lower_filename ] = false; |
} |
} |
} |
if ($smarty->use_include_path) { |
foreach ($_file_names as $_file_name) { |
// try PHP include_path |
$file = $smarty->ext->_getIncludePath->getIncludePath($_p_dirs, $_file_name, $smarty); |
$this->plugin_files[ 'include_path' ][ $_lower_filename ] = $file; |
if ($file !== false) { |
include_once $file; |
return $file; |
} |
} |
} |
// no plugin loaded |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_mustcompile.php |
---|
0,0 → 1,50 |
<?php |
/** |
* Smarty Method MustCompile |
* |
* Smarty_Internal_Template::mustCompile() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_MustCompile |
{ |
/** |
* Valid for template object |
* |
* @var int |
*/ |
public $objMap = 2; |
/** |
* Returns if the current template must be compiled by the Smarty compiler |
* It does compare the timestamps of template source and the compiled templates and checks the force compile |
* configuration |
* |
* @param \Smarty_Internal_Template $_template |
* |
* @return bool |
* @throws \SmartyException |
*/ |
public function mustCompile(Smarty_Internal_Template $_template) |
{ |
if (!$_template->source->exists) { |
if ($_template->_isSubTpl()) { |
$parent_resource = " in '$_template->parent->template_resource}'"; |
} else { |
$parent_resource = ''; |
} |
throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}"); |
} |
if ($_template->mustCompile === null) { |
$_template->mustCompile = (!$_template->source->handler->uncompiled && |
($_template->smarty->force_compile || $_template->source->handler->recompiled || |
!$_template->compiled->exists || ($_template->compile_check && |
$_template->compiled->getTimeStamp() < |
$_template->source->getTimeStamp()))); |
} |
return $_template->mustCompile; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registercacheresource.php |
---|
0,0 → 1,42 |
<?php |
/** |
* Smarty Method RegisterCacheResource |
* |
* Smarty::registerCacheResource() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterCacheResource |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers a resource to fetch a template |
* |
* @api Smarty::registerCacheResource() |
* @link http://www.smarty.net/docs/en/api.register.cacheresource.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $name name of resource type |
* @param \Smarty_CacheResource $resource_handler |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function registerCacheResource( |
Smarty_Internal_TemplateBase $obj, |
$name, |
Smarty_CacheResource $resource_handler |
) { |
$smarty = $obj->_getSmartyObj(); |
$smarty->registered_cache_resources[ $name ] = $resource_handler; |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerclass.php |
---|
0,0 → 1,46 |
<?php |
/** |
* Smarty Method RegisterClass |
* |
* Smarty::registerClass() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterClass |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers static classes to be used in templates |
* |
* @api Smarty::registerClass() |
* @link http://www.smarty.net/docs/en/api.register.class.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $class_name |
* @param string $class_impl the referenced PHP class to |
* register |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function registerClass(Smarty_Internal_TemplateBase $obj, $class_name, $class_impl) |
{ |
$smarty = $obj->_getSmartyObj(); |
// test if exists |
if (!class_exists($class_impl)) { |
throw new SmartyException("Undefined class '$class_impl' in register template class"); |
} |
// register the class |
$smarty->registered_classes[ $class_name ] = $class_impl; |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerdefaultconfighandler.php |
---|
0,0 → 1,42 |
<?php |
/** |
* Smarty Method RegisterDefaultConfigHandler |
* |
* Smarty::registerDefaultConfigHandler() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterDefaultConfigHandler |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Register config default handler |
* |
* @api Smarty::registerDefaultConfigHandler() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param callable $callback class/method name |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws SmartyException if $callback is not callable |
*/ |
public function registerDefaultConfigHandler(Smarty_Internal_TemplateBase $obj, $callback) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (is_callable($callback)) { |
$smarty->default_config_handler_func = $callback; |
} else { |
throw new SmartyException('Default config handler not callable'); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php |
---|
0,0 → 1,43 |
<?php |
/** |
* Smarty Method RegisterDefaultPluginHandler |
* |
* Smarty::registerDefaultPluginHandler() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterDefaultPluginHandler |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers a default plugin handler |
* |
* @api Smarty::registerDefaultPluginHandler() |
* @link http://www.smarty.net/docs/en/api.register.default.plugin.handler.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param callable $callback class/method name |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws SmartyException if $callback is not callable |
*/ |
public function registerDefaultPluginHandler(Smarty_Internal_TemplateBase $obj, $callback) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (is_callable($callback)) { |
$smarty->default_plugin_handler_func = $callback; |
} else { |
throw new SmartyException("Default plugin handler '$callback' not callable"); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php |
---|
0,0 → 1,88 |
<?php |
/** |
* Smarty Method RegisterDefaultTemplateHandler |
* |
* Smarty::registerDefaultTemplateHandler() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterDefaultTemplateHandler |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Register template default handler |
* |
* @api Smarty::registerDefaultTemplateHandler() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param callable $callback class/method name |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws SmartyException if $callback is not callable |
*/ |
public function registerDefaultTemplateHandler(Smarty_Internal_TemplateBase $obj, $callback) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (is_callable($callback)) { |
$smarty->default_template_handler_func = $callback; |
} else { |
throw new SmartyException('Default template handler not callable'); |
} |
return $obj; |
} |
/** |
* get default content from template or config resource handler |
* |
* @param Smarty_Template_Source $source |
* |
* @throws \SmartyException |
*/ |
public static function _getDefaultTemplate(Smarty_Template_Source $source) |
{ |
if ($source->isConfig) { |
$default_handler = $source->smarty->default_config_handler_func; |
} else { |
$default_handler = $source->smarty->default_template_handler_func; |
} |
$_content = $_timestamp = null; |
$_return = call_user_func_array( |
$default_handler, |
array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty) |
); |
if (is_string($_return)) { |
$source->exists = is_file($_return); |
if ($source->exists) { |
$source->timestamp = filemtime($_return); |
} else { |
throw new SmartyException( |
'Default handler: Unable to load ' . |
($source->isConfig ? 'config' : 'template') . |
" default file '{$_return}' for '{$source->type}:{$source->name}'" |
); |
} |
$source->name = $source->filepath = $_return; |
$source->uid = sha1($source->filepath); |
} elseif ($_return === true) { |
$source->content = $_content; |
$source->exists = true; |
$source->uid = $source->name = sha1($_content); |
$source->handler = Smarty_Resource::load($source->smarty, 'eval'); |
} else { |
$source->exists = false; |
throw new SmartyException( |
'Default handler: No ' . ($source->isConfig ? 'config' : 'template') . |
" default content for '{$source->type}:{$source->name}'" |
); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerfilter.php |
---|
0,0 → 1,87 |
<?php |
/** |
* Smarty Method RegisterFilter |
* |
* Smarty::registerFilter() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterFilter |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Valid filter types |
* |
* @var array |
*/ |
private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true); |
/** |
* Registers a filter function |
* |
* @api Smarty::registerFilter() |
* |
* @link http://www.smarty.net/docs/en/api.register.filter.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type filter type |
* @param callback $callback |
* @param string|null $name optional filter name |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function registerFilter(Smarty_Internal_TemplateBase $obj, $type, $callback, $name = null) |
{ |
$smarty = $obj->_getSmartyObj(); |
$this->_checkFilterType($type); |
$name = isset($name) ? $name : $this->_getFilterName($callback); |
if (!is_callable($callback)) { |
throw new SmartyException("{$type}filter '{$name}' not callable"); |
} |
$smarty->registered_filters[ $type ][ $name ] = $callback; |
return $obj; |
} |
/** |
* Return internal filter name |
* |
* @param callback $function_name |
* |
* @return string internal filter name |
*/ |
public function _getFilterName($function_name) |
{ |
if (is_array($function_name)) { |
$_class_name = (is_object($function_name[ 0 ]) ? get_class($function_name[ 0 ]) : $function_name[ 0 ]); |
return $_class_name . '_' . $function_name[ 1 ]; |
} elseif (is_string($function_name)) { |
return $function_name; |
} else { |
return 'closure'; |
} |
} |
/** |
* Check if filter type is valid |
* |
* @param string $type |
* |
* @throws \SmartyException |
*/ |
public function _checkFilterType($type) |
{ |
if (!isset($this->filterTypes[ $type ])) { |
throw new SmartyException("Illegal filter type '{$type}'"); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerobject.php |
---|
0,0 → 1,84 |
<?php |
/** |
* Smarty Method RegisterObject |
* |
* Smarty::registerObject() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterObject |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers object to be used in templates |
* |
* @api Smarty::registerObject() |
* @link http://www.smarty.net/docs/en/api.register.object.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $object_name |
* @param object $object the |
* referenced |
* PHP |
* object |
* to |
* register |
* |
* @param array $allowed_methods_properties list of |
* allowed |
* methods |
* (empty |
* = all) |
* |
* @param bool $format smarty |
* argument |
* format, |
* else |
* traditional |
* |
* @param array $block_methods list of |
* block-methods |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function registerObject( |
Smarty_Internal_TemplateBase $obj, |
$object_name, |
$object, |
$allowed_methods_properties = array(), |
$format = true, |
$block_methods = array() |
) { |
$smarty = $obj->_getSmartyObj(); |
// test if allowed methods callable |
if (!empty($allowed_methods_properties)) { |
foreach ((array)$allowed_methods_properties as $method) { |
if (!is_callable(array($object, $method)) && !property_exists($object, $method)) { |
throw new SmartyException("Undefined method or property '$method' in registered object"); |
} |
} |
} |
// test if block methods callable |
if (!empty($block_methods)) { |
foreach ((array)$block_methods as $method) { |
if (!is_callable(array($object, $method))) { |
throw new SmartyException("Undefined method '$method' in registered object"); |
} |
} |
} |
// register the object |
$smarty->registered_objects[ $object_name ] = |
array($object, (array)$allowed_methods_properties, (boolean)$format, (array)$block_methods); |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerplugin.php |
---|
0,0 → 1,56 |
<?php |
/** |
* Smarty Method RegisterPlugin |
* |
* Smarty::registerPlugin() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterPlugin |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers plugin to be used in templates |
* |
* @api Smarty::registerPlugin() |
* @link http://www.smarty.net/docs/en/api.register.plugin.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type plugin type |
* @param string $name name of template tag |
* @param callback $callback PHP callback to register |
* @param bool $cacheable if true (default) this |
* function is cache able |
* @param mixed $cache_attr caching attributes if any |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws SmartyException when the plugin tag is invalid |
*/ |
public function registerPlugin( |
Smarty_Internal_TemplateBase $obj, |
$type, |
$name, |
$callback, |
$cacheable = true, |
$cache_attr = null |
) { |
$smarty = $obj->_getSmartyObj(); |
if (isset($smarty->registered_plugins[ $type ][ $name ])) { |
throw new SmartyException("Plugin tag '{$name}' already registered"); |
} elseif (!is_callable($callback)) { |
throw new SmartyException("Plugin '{$name}' not callable"); |
} else { |
$smarty->registered_plugins[ $type ][ $name ] = array($callback, (bool)$cacheable, (array)$cache_attr); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_registerresource.php |
---|
0,0 → 1,46 |
<?php |
/** |
* Smarty Method RegisterResource |
* |
* Smarty::registerResource() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_RegisterResource |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers a resource to fetch a template |
* |
* @api Smarty::registerResource() |
* @link http://www.smarty.net/docs/en/api.register.resource.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $name name of resource type |
* @param Smarty_Resource|array $resource_handler or instance of |
* Smarty_Resource, |
* or array of |
* callbacks to |
* handle |
* resource |
* (deprecated) |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function registerResource(Smarty_Internal_TemplateBase $obj, $name, $resource_handler) |
{ |
$smarty = $obj->_getSmartyObj(); |
$smarty->registered_resources[ $name ] = |
$resource_handler instanceof Smarty_Resource ? $resource_handler : array($resource_handler, false); |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_setautoloadfilters.php |
---|
0,0 → 1,72 |
<?php |
/** |
* Smarty Method SetAutoloadFilters |
* |
* Smarty::setAutoloadFilters() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_SetAutoloadFilters |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Valid filter types |
* |
* @var array |
*/ |
private $filterTypes = array('pre' => true, 'post' => true, 'output' => true, 'variable' => true); |
/** |
* Set autoload filters |
* |
* @api Smarty::setAutoloadFilters() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param array $filters filters to load automatically |
* @param string $type "pre", "output", … specify |
* the filter type to set. |
* Defaults to none treating |
* $filters' keys as the |
* appropriate types |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function setAutoloadFilters(Smarty_Internal_TemplateBase $obj, $filters, $type = null) |
{ |
$smarty = $obj->_getSmartyObj(); |
if ($type !== null) { |
$this->_checkFilterType($type); |
$smarty->autoload_filters[ $type ] = (array)$filters; |
} else { |
foreach ((array)$filters as $type => $value) { |
$this->_checkFilterType($type); |
} |
$smarty->autoload_filters = (array)$filters; |
} |
return $obj; |
} |
/** |
* Check if filter type is valid |
* |
* @param string $type |
* |
* @throws \SmartyException |
*/ |
public function _checkFilterType($type) |
{ |
if (!isset($this->filterTypes[ $type ])) { |
throw new SmartyException("Illegal filter type '{$type}'"); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_setdebugtemplate.php |
---|
0,0 → 1,41 |
<?php |
/** |
* Smarty Method SetDebugTemplate |
* |
* Smarty::setDebugTemplate() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_SetDebugTemplate |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* set the debug template |
* |
* @api Smarty::setDebugTemplate() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $tpl_name |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws SmartyException if file is not readable |
*/ |
public function setDebugTemplate(Smarty_Internal_TemplateBase $obj, $tpl_name) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (!is_readable($tpl_name)) { |
throw new SmartyException("Unknown file '{$tpl_name}'"); |
} |
$smarty->debug_tpl = $tpl_name; |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_setdefaultmodifiers.php |
---|
0,0 → 1,38 |
<?php |
/** |
* Smarty Method SetDefaultModifiers |
* |
* Smarty::setDefaultModifiers() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_SetDefaultModifiers |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Set default modifiers |
* |
* @api Smarty::setDefaultModifiers() |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param array|string $modifiers modifier or list of modifiers |
* to set |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function setDefaultModifiers(Smarty_Internal_TemplateBase $obj, $modifiers) |
{ |
$smarty = $obj->_getSmartyObj(); |
$smarty->default_modifiers = (array)$modifiers; |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_unloadfilter.php |
---|
0,0 → 1,43 |
<?php |
/** |
* Smarty Method UnloadFilter |
* |
* Smarty::unloadFilter() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_UnloadFilter extends Smarty_Internal_Method_LoadFilter |
{ |
/** |
* load a filter of specified type and name |
* |
* @api Smarty::unloadFilter() |
* |
* @link http://www.smarty.net/docs/en/api.unload.filter.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type filter type |
* @param string $name filter name |
* |
* @return Smarty_Internal_TemplateBase |
* @throws \SmartyException |
*/ |
public function unloadFilter(Smarty_Internal_TemplateBase $obj, $type, $name) |
{ |
$smarty = $obj->_getSmartyObj(); |
$this->_checkFilterType($type); |
if (isset($smarty->registered_filters[ $type ])) { |
$_filter_name = "smarty_{$type}filter_{$name}"; |
if (isset($smarty->registered_filters[ $type ][ $_filter_name ])) { |
unset($smarty->registered_filters[ $type ][ $_filter_name ]); |
if (empty($smarty->registered_filters[ $type ])) { |
unset($smarty->registered_filters[ $type ]); |
} |
} |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_unregistercacheresource.php |
---|
0,0 → 1,40 |
<?php |
/** |
* Smarty Method UnregisterCacheResource |
* |
* Smarty::unregisterCacheResource() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_UnregisterCacheResource |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers a resource to fetch a template |
* |
* @api Smarty::unregisterCacheResource() |
* @link http://www.smarty.net/docs/en/api.unregister.cacheresource.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param $name |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function unregisterCacheResource(Smarty_Internal_TemplateBase $obj, $name) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (isset($smarty->registered_cache_resources[ $name ])) { |
unset($smarty->registered_cache_resources[ $name ]); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_unregisterfilter.php |
---|
0,0 → 1,43 |
<?php |
/** |
* Smarty Method UnregisterFilter |
* |
* Smarty::unregisterFilter() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_UnregisterFilter extends Smarty_Internal_Method_RegisterFilter |
{ |
/** |
* Unregisters a filter function |
* |
* @api Smarty::unregisterFilter() |
* |
* @link http://www.smarty.net/docs/en/api.unregister.filter.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type filter type |
* @param callback|string $callback |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function unregisterFilter(Smarty_Internal_TemplateBase $obj, $type, $callback) |
{ |
$smarty = $obj->_getSmartyObj(); |
$this->_checkFilterType($type); |
if (isset($smarty->registered_filters[ $type ])) { |
$name = is_string($callback) ? $callback : $this->_getFilterName($callback); |
if (isset($smarty->registered_filters[ $type ][ $name ])) { |
unset($smarty->registered_filters[ $type ][ $name ]); |
if (empty($smarty->registered_filters[ $type ])) { |
unset($smarty->registered_filters[ $type ]); |
} |
} |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_unregisterobject.php |
---|
0,0 → 1,40 |
<?php |
/** |
* Smarty Method UnregisterObject |
* |
* Smarty::unregisterObject() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_UnregisterObject |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers plugin to be used in templates |
* |
* @api Smarty::unregisterObject() |
* @link http://www.smarty.net/docs/en/api.unregister.object.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $object_name name of object |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function unregisterObject(Smarty_Internal_TemplateBase $obj, $object_name) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (isset($smarty->registered_objects[ $object_name ])) { |
unset($smarty->registered_objects[ $object_name ]); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_unregisterplugin.php |
---|
0,0 → 1,41 |
<?php |
/** |
* Smarty Method UnregisterPlugin |
* |
* Smarty::unregisterPlugin() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_UnregisterPlugin |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers plugin to be used in templates |
* |
* @api Smarty::unregisterPlugin() |
* @link http://www.smarty.net/docs/en/api.unregister.plugin.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type plugin type |
* @param string $name name of template tag |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function unregisterPlugin(Smarty_Internal_TemplateBase $obj, $type, $name) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (isset($smarty->registered_plugins[ $type ][ $name ])) { |
unset($smarty->registered_plugins[ $type ][ $name ]); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_method_unregisterresource.php |
---|
0,0 → 1,40 |
<?php |
/** |
* Smarty Method UnregisterResource |
* |
* Smarty::unregisterResource() method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Method_UnregisterResource |
{ |
/** |
* Valid for Smarty and template object |
* |
* @var int |
*/ |
public $objMap = 3; |
/** |
* Registers a resource to fetch a template |
* |
* @api Smarty::unregisterResource() |
* @link http://www.smarty.net/docs/en/api.unregister.resource.tpl |
* |
* @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj |
* @param string $type name of resource type |
* |
* @return \Smarty|\Smarty_Internal_Template |
*/ |
public function unregisterResource(Smarty_Internal_TemplateBase $obj, $type) |
{ |
$smarty = $obj->_getSmartyObj(); |
if (isset($smarty->registered_resources[ $type ])) { |
unset($smarty->registered_resources[ $type ]); |
} |
return $obj; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_nocache_insert.php |
---|
0,0 → 1,51 |
<?php |
/** |
* Smarty Internal Plugin Nocache Insert |
* Compiles the {insert} tag into the cache file |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Plugin Compile Insert Class |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_Nocache_Insert |
{ |
/** |
* Compiles code for the {insert} tag into cache file |
* |
* @param string $_function insert function name |
* @param array $_attr array with parameter |
* @param Smarty_Internal_Template $_template template object |
* @param string $_script script name to load or 'null' |
* @param string $_assign optional variable name |
* |
* @return string compiled code |
*/ |
public static function compile($_function, $_attr, $_template, $_script, $_assign = null) |
{ |
$_output = '<?php '; |
if ($_script !== 'null') { |
// script which must be included |
// code for script file loading |
$_output .= "require_once '{$_script}';"; |
} |
// call insert |
if (isset($_assign)) { |
$_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . |
',\$_smarty_tpl), true);?>'; |
} else { |
$_output .= "echo {$_function}(" . var_export($_attr, true) . ',$_smarty_tpl);?>'; |
} |
$_tpl = $_template; |
while ($_tpl->_isSubTpl()) { |
$_tpl = $_tpl->parent; |
} |
return "/*%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$_tpl->compiled->nocache_hash}%%*/"; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree.php |
---|
0,0 → 1,50 |
<?php |
/** |
* Smarty Internal Plugin Templateparser Parsetree |
* These are classes to build parsetree in the template parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Thue Kristensen |
* @author Uwe Tews |
*/ |
/** |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
abstract class Smarty_Internal_ParseTree |
{ |
/** |
* Buffer content |
* |
* @var mixed |
*/ |
public $data; |
/** |
* Subtree array |
* |
* @var array |
*/ |
public $subtrees = array(); |
/** |
* Return buffer |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string buffer content |
*/ |
abstract public function to_smarty_php(Smarty_Internal_Templateparser $parser); |
/** |
* Template data object destructor |
*/ |
public function __destruct() |
{ |
$this->data = null; |
$this->subtrees = null; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree_code.php |
---|
0,0 → 1,42 |
<?php |
/** |
* Smarty Internal Plugin Templateparser Parse Tree |
* These are classes to build parse trees in the template parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Thue Kristensen |
* @author Uwe Tews |
*/ |
/** |
* Code fragment inside a tag . |
* |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
class Smarty_Internal_ParseTree_Code extends Smarty_Internal_ParseTree |
{ |
/** |
* Create parse tree buffer for code fragment |
* |
* @param string $data content |
*/ |
public function __construct($data) |
{ |
$this->data = $data; |
} |
/** |
* Return buffer content in parentheses |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string content |
*/ |
public function to_smarty_php(Smarty_Internal_Templateparser $parser) |
{ |
return sprintf('(%s)', $this->data); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree_dq.php |
---|
0,0 → 1,95 |
<?php |
/** |
* Double quoted string inside a tag. |
* |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
/** |
* Double quoted string inside a tag. |
* |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree |
{ |
/** |
* Create parse tree buffer for double quoted string subtrees |
* |
* @param object $parser parser object |
* @param Smarty_Internal_ParseTree $subtree parse tree buffer |
*/ |
public function __construct($parser, Smarty_Internal_ParseTree $subtree) |
{ |
$this->subtrees[] = $subtree; |
if ($subtree instanceof Smarty_Internal_ParseTree_Tag) { |
$parser->block_nesting_level = count($parser->compiler->_tag_stack); |
} |
} |
/** |
* Append buffer to subtree |
* |
* @param \Smarty_Internal_Templateparser $parser |
* @param Smarty_Internal_ParseTree $subtree parse tree buffer |
*/ |
public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree) |
{ |
$last_subtree = count($this->subtrees) - 1; |
if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag |
&& $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level |
) { |
if ($subtree instanceof Smarty_Internal_ParseTree_Code) { |
$this->subtrees[ $last_subtree ]->data = |
$parser->compiler->appendCode( |
$this->subtrees[ $last_subtree ]->data, |
'<?php echo ' . $subtree->data . ';?>' |
); |
} elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) { |
$this->subtrees[ $last_subtree ]->data = |
$parser->compiler->appendCode( |
$this->subtrees[ $last_subtree ]->data, |
'<?php echo "' . $subtree->data . '";?>' |
); |
} else { |
$this->subtrees[ $last_subtree ]->data = |
$parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data); |
} |
} else { |
$this->subtrees[] = $subtree; |
} |
if ($subtree instanceof Smarty_Internal_ParseTree_Tag) { |
$parser->block_nesting_level = count($parser->compiler->_tag_stack); |
} |
} |
/** |
* Merge subtree buffer content together |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string compiled template code |
*/ |
public function to_smarty_php(Smarty_Internal_Templateparser $parser) |
{ |
$code = ''; |
foreach ($this->subtrees as $subtree) { |
if ($code !== '') { |
$code .= '.'; |
} |
if ($subtree instanceof Smarty_Internal_ParseTree_Tag) { |
$more_php = $subtree->assign_to_var($parser); |
} else { |
$more_php = $subtree->to_smarty_php($parser); |
} |
$code .= $more_php; |
if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) { |
$parser->compiler->has_variable_string = true; |
} |
} |
return $code; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree_dqcontent.php |
---|
0,0 → 1,42 |
<?php |
/** |
* Smarty Internal Plugin Templateparser Parse Tree |
* These are classes to build parse tree in the template parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Thue Kristensen |
* @author Uwe Tews |
*/ |
/** |
* Raw chars as part of a double quoted string. |
* |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
class Smarty_Internal_ParseTree_DqContent extends Smarty_Internal_ParseTree |
{ |
/** |
* Create parse tree buffer with string content |
* |
* @param string $data string section |
*/ |
public function __construct($data) |
{ |
$this->data = $data; |
} |
/** |
* Return content as double quoted string |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string doubled quoted string |
*/ |
public function to_smarty_php(Smarty_Internal_Templateparser $parser) |
{ |
return '"' . $this->data . '"'; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree_tag.php |
---|
0,0 → 1,67 |
<?php |
/** |
* Smarty Internal Plugin Templateparser Parse Tree |
* These are classes to build parse tree in the template parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Thue Kristensen |
* @author Uwe Tews |
*/ |
/** |
* A complete smarty tag. |
* |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
class Smarty_Internal_ParseTree_Tag extends Smarty_Internal_ParseTree |
{ |
/** |
* Saved block nesting level |
* |
* @var int |
*/ |
public $saved_block_nesting; |
/** |
* Create parse tree buffer for Smarty tag |
* |
* @param \Smarty_Internal_Templateparser $parser parser object |
* @param string $data content |
*/ |
public function __construct(Smarty_Internal_Templateparser $parser, $data) |
{ |
$this->data = $data; |
$this->saved_block_nesting = $parser->block_nesting_level; |
} |
/** |
* Return buffer content |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string content |
*/ |
public function to_smarty_php(Smarty_Internal_Templateparser $parser) |
{ |
return $this->data; |
} |
/** |
* Return complied code that loads the evaluated output of buffer content into a temporary variable |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string template code |
*/ |
public function assign_to_var(Smarty_Internal_Templateparser $parser) |
{ |
$var = $parser->compiler->getNewPrefixVariable(); |
$tmp = $parser->compiler->appendCode('<?php ob_start();?>', $this->data); |
$tmp = $parser->compiler->appendCode($tmp, "<?php {$var}=ob_get_clean();?>"); |
$parser->compiler->prefix_code[] = sprintf('%s', $tmp); |
return $var; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree_template.php |
---|
0,0 → 1,129 |
<?php |
/** |
* Smarty Internal Plugin Templateparser Parse Tree |
* These are classes to build parse tree in the template parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Thue Kristensen |
* @author Uwe Tews |
*/ |
/** |
* Template element |
* |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
class Smarty_Internal_ParseTree_Template extends Smarty_Internal_ParseTree |
{ |
/** |
* Array of template elements |
* |
* @var array |
*/ |
public $subtrees = array(); |
/** |
* Create root of parse tree for template elements |
*/ |
public function __construct() |
{ |
} |
/** |
* Append buffer to subtree |
* |
* @param \Smarty_Internal_Templateparser $parser |
* @param Smarty_Internal_ParseTree $subtree |
*/ |
public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree) |
{ |
if (!empty($subtree->subtrees)) { |
$this->subtrees = array_merge($this->subtrees, $subtree->subtrees); |
} else { |
if ($subtree->data !== '') { |
$this->subtrees[] = $subtree; |
} |
} |
} |
/** |
* Append array to subtree |
* |
* @param \Smarty_Internal_Templateparser $parser |
* @param \Smarty_Internal_ParseTree[] $array |
*/ |
public function append_array(Smarty_Internal_Templateparser $parser, $array = array()) |
{ |
if (!empty($array)) { |
$this->subtrees = array_merge($this->subtrees, (array)$array); |
} |
} |
/** |
* Prepend array to subtree |
* |
* @param \Smarty_Internal_Templateparser $parser |
* @param \Smarty_Internal_ParseTree[] $array |
*/ |
public function prepend_array(Smarty_Internal_Templateparser $parser, $array = array()) |
{ |
if (!empty($array)) { |
$this->subtrees = array_merge((array)$array, $this->subtrees); |
} |
} |
/** |
* Sanitize and merge subtree buffers together |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string template code content |
*/ |
public function to_smarty_php(Smarty_Internal_Templateparser $parser) |
{ |
$code = ''; |
for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) { |
if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Text) { |
$subtree = $this->subtrees[ $key ]->to_smarty_php($parser); |
while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Text || |
$this->subtrees[ $key + 1 ]->data === '')) { |
$key++; |
if ($this->subtrees[ $key ]->data === '') { |
continue; |
} |
$subtree .= $this->subtrees[ $key ]->to_smarty_php($parser); |
} |
if ($subtree === '') { |
continue; |
} |
$code .= preg_replace( |
'/((<%)|(%>)|(<\?php)|(<\?)|(\?>)|(<\/?script))/', |
"<?php echo '\$1'; ?>\n", |
$subtree |
); |
continue; |
} |
if ($this->subtrees[ $key ] instanceof Smarty_Internal_ParseTree_Tag) { |
$subtree = $this->subtrees[ $key ]->to_smarty_php($parser); |
while ($key + 1 < $cnt && ($this->subtrees[ $key + 1 ] instanceof Smarty_Internal_ParseTree_Tag || |
$this->subtrees[ $key + 1 ]->data === '')) { |
$key++; |
if ($this->subtrees[ $key ]->data === '') { |
continue; |
} |
$subtree = $parser->compiler->appendCode($subtree, $this->subtrees[ $key ]->to_smarty_php($parser)); |
} |
if ($subtree === '') { |
continue; |
} |
$code .= $subtree; |
continue; |
} |
$code .= $this->subtrees[ $key ]->to_smarty_php($parser); |
} |
return $code; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_parsetree_text.php |
---|
0,0 → 1,40 |
<?php |
/** |
* Smarty Internal Plugin Templateparser Parse Tree |
* These are classes to build parse tree in the template parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Thue Kristensen |
* @author Uwe Tews |
* * |
* template text |
* @package Smarty |
* @subpackage Compiler |
* @ignore |
*/ |
class Smarty_Internal_ParseTree_Text extends Smarty_Internal_ParseTree |
{ |
/** |
* Create template text buffer |
* |
* @param string $data text |
*/ |
public function __construct($data) |
{ |
$this->data = $data; |
} |
/** |
* Return buffer content |
* |
* @param \Smarty_Internal_Templateparser $parser |
* |
* @return string text |
*/ |
public function to_smarty_php(Smarty_Internal_Templateparser $parser) |
{ |
return $this->data; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_eval.php |
---|
0,0 → 1,94 |
<?php |
/** |
* Smarty Internal Plugin Resource Eval |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Internal Plugin Resource Eval |
* Implements the strings as resource for Smarty template |
* {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}} |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled |
{ |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$source->uid = $source->filepath = sha1($source->name); |
$source->timestamp = $source->exists = true; |
} |
/** |
* Load template's source from $resource_name into current template object |
* |
* @uses decode() to decode base64 and urlencoded template_resources |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
return $this->decode($source->name); |
} |
/** |
* decode base64 and urlencode |
* |
* @param string $string template_resource to decode |
* |
* @return string decoded template_resource |
*/ |
protected function decode($string) |
{ |
// decode if specified |
if (($pos = strpos($string, ':')) !== false) { |
if (!strncmp($string, 'base64', 6)) { |
return base64_decode(substr($string, 7)); |
} elseif (!strncmp($string, 'urlencode', 9)) { |
return urldecode(substr($string, 10)); |
} |
} |
return $string; |
} |
/** |
* modify resource_name according to resource handlers specifications |
* |
* @param Smarty $smarty Smarty instance |
* @param string $resource_name resource_name to make unique |
* @param boolean $isConfig flag for config resource |
* |
* @return string unique resource name |
*/ |
public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) |
{ |
return get_class($this) . '#' . $this->decode($resource_name); |
} |
/** |
* Determine basename for compiled filename |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return ''; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_extends.php |
---|
0,0 → 1,126 |
<?php |
/** |
* Smarty Internal Plugin Resource Extends |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Internal Plugin Resource Extends |
* Implements the file system as resource for Smarty which {extend}s a chain of template files templates |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
class Smarty_Internal_Resource_Extends extends Smarty_Resource |
{ |
/** |
* mbstring.overload flag |
* |
* @var int |
*/ |
public $mbstring_overload = 0; |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @throws SmartyException |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$uid = ''; |
$sources = array(); |
$components = explode('|', $source->name); |
$smarty = &$source->smarty; |
$exists = true; |
foreach ($components as $component) { |
/* @var \Smarty_Template_Source $_s */ |
$_s = Smarty_Template_Source::load(null, $smarty, $component); |
if ($_s->type === 'php') { |
throw new SmartyException("Resource type {$_s->type} cannot be used with the extends resource type"); |
} |
$sources[ $_s->uid ] = $_s; |
$uid .= $_s->filepath; |
if ($_template) { |
$exists = $exists && $_s->exists; |
} |
} |
$source->components = $sources; |
$source->filepath = $_s->filepath; |
$source->uid = sha1($uid . $source->smarty->_joined_template_dir); |
$source->exists = $exists; |
if ($_template) { |
$source->timestamp = $_s->timestamp; |
} |
} |
/** |
* populate Source Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Source $source source object |
*/ |
public function populateTimestamp(Smarty_Template_Source $source) |
{ |
$source->exists = true; |
/* @var \Smarty_Template_Source $_s */ |
foreach ($source->components as $_s) { |
$source->exists = $source->exists && $_s->exists; |
} |
$source->timestamp = $source->exists ? $_s->getTimeStamp() : false; |
} |
/** |
* Load template's source from files into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
* @throws SmartyException if source cannot be loaded |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
if (!$source->exists) { |
throw new SmartyException("Unable to load template '{$source->type}:{$source->name}'"); |
} |
$_components = array_reverse($source->components); |
$_content = ''; |
/* @var \Smarty_Template_Source $_s */ |
foreach ($_components as $_s) { |
// read content |
$_content .= $_s->getContent(); |
} |
return $_content; |
} |
/** |
* Determine basename for compiled filename |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return str_replace(':', '.', basename($source->filepath)); |
} |
/* |
* Disable timestamp checks for extends resource. |
* The individual source components will be checked. |
* |
* @return bool |
*/ |
/** |
* @return bool |
*/ |
public function checkTimestamps() |
{ |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_file.php |
---|
0,0 → 1,180 |
<?php |
/** |
* Smarty Internal Plugin Resource File |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Internal Plugin Resource File |
* Implements the file system as resource for Smarty templates |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
class Smarty_Internal_Resource_File extends Smarty_Resource |
{ |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @throws \SmartyException |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$source->filepath = $this->buildFilepath($source, $_template); |
if ($source->filepath !== false) { |
if (isset($source->smarty->security_policy) && is_object($source->smarty->security_policy)) { |
$source->smarty->security_policy->isTrustedResourceDir($source->filepath, $source->isConfig); |
} |
$source->exists = true; |
$source->uid = sha1( |
$source->filepath . ($source->isConfig ? $source->smarty->_joined_config_dir : |
$source->smarty->_joined_template_dir) |
); |
$source->timestamp = filemtime($source->filepath); |
} else { |
$source->timestamp = $source->exists = false; |
} |
} |
/** |
* populate Source Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Source $source source object |
*/ |
public function populateTimestamp(Smarty_Template_Source $source) |
{ |
if (!$source->exists) { |
$source->timestamp = $source->exists = is_file($source->filepath); |
} |
if ($source->exists) { |
$source->timestamp = filemtime($source->filepath); |
} |
} |
/** |
* Load template's source from file into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
* @throws SmartyException if source cannot be loaded |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
if ($source->exists) { |
return file_get_contents($source->filepath); |
} |
throw new SmartyException( |
'Unable to read ' . ($source->isConfig ? 'config' : 'template') . |
" {$source->type} '{$source->name}'" |
); |
} |
/** |
* Determine basename for compiled filename |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return basename($source->filepath); |
} |
/** |
* build template filepath by traversing the template_dir array |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string fully qualified filepath |
* @throws SmartyException |
*/ |
protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$file = $source->name; |
// absolute file ? |
if ($file[ 0 ] === '/' || $file[ 1 ] === ':') { |
$file = $source->smarty->_realpath($file, true); |
return is_file($file) ? $file : false; |
} |
// go relative to a given template? |
if ($file[ 0 ] === '.' && $_template && $_template->_isSubTpl() |
&& preg_match('#^[.]{1,2}[\\\/]#', $file) |
) { |
if ($_template->parent->source->type !== 'file' && $_template->parent->source->type !== 'extends' |
&& !isset($_template->parent->_cache[ 'allow_relative_path' ]) |
) { |
throw new SmartyException("Template '{$file}' cannot be relative to template of resource type '{$_template->parent->source->type}'"); |
} |
// normalize path |
$path = |
$source->smarty->_realpath(dirname($_template->parent->source->filepath) . DIRECTORY_SEPARATOR . $file); |
// files relative to a template only get one shot |
return is_file($path) ? $path : false; |
} |
// normalize DIRECTORY_SEPARATOR |
if (strpos($file, DIRECTORY_SEPARATOR === '/' ? '\\' : '/') !== false) { |
$file = str_replace(DIRECTORY_SEPARATOR === '/' ? '\\' : '/', DIRECTORY_SEPARATOR, $file); |
} |
$_directories = $source->smarty->getTemplateDir(null, $source->isConfig); |
// template_dir index? |
if ($file[ 0 ] === '[' && preg_match('#^\[([^\]]+)\](.+)$#', $file, $fileMatch)) { |
$file = $fileMatch[ 2 ]; |
$_indices = explode(',', $fileMatch[ 1 ]); |
$_index_dirs = array(); |
foreach ($_indices as $index) { |
$index = trim($index); |
// try string indexes |
if (isset($_directories[ $index ])) { |
$_index_dirs[] = $_directories[ $index ]; |
} elseif (is_numeric($index)) { |
// try numeric index |
$index = (int)$index; |
if (isset($_directories[ $index ])) { |
$_index_dirs[] = $_directories[ $index ]; |
} else { |
// try at location index |
$keys = array_keys($_directories); |
if (isset($_directories[ $keys[ $index ] ])) { |
$_index_dirs[] = $_directories[ $keys[ $index ] ]; |
} |
} |
} |
} |
if (empty($_index_dirs)) { |
// index not found |
return false; |
} else { |
$_directories = $_index_dirs; |
} |
} |
// relative file name? |
foreach ($_directories as $_directory) { |
$path = $_directory . $file; |
if (is_file($path)) { |
return (strpos($path, '.' . DIRECTORY_SEPARATOR) !== false) ? $source->smarty->_realpath($path) : $path; |
} |
} |
if (!isset($_index_dirs)) { |
// Could be relative to cwd |
$path = $source->smarty->_realpath($file, true); |
if (is_file($path)) { |
return $path; |
} |
} |
// Use include path ? |
if ($source->smarty->use_include_path) { |
return $source->smarty->ext->_getIncludePath->getIncludePath($_directories, $file, $source->smarty); |
} |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_php.php |
---|
0,0 → 1,116 |
<?php |
/** |
* Smarty Internal Plugin Resource PHP |
* Implements the file system as resource for PHP templates |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
class Smarty_Internal_Resource_Php extends Smarty_Internal_Resource_File |
{ |
/** |
* Flag that it's an uncompiled resource |
* |
* @var bool |
*/ |
public $uncompiled = true; |
/** |
* Resource does implement populateCompiledFilepath() method |
* |
* @var bool |
*/ |
public $hasCompiledHandler = true; |
/** |
* container for short_open_tag directive's value before executing PHP templates |
* |
* @var string |
*/ |
protected $short_open_tag; |
/** |
* Create a new PHP Resource |
*/ |
public function __construct() |
{ |
$this->short_open_tag = function_exists('ini_get') ? ini_get('short_open_tag') : 1; |
} |
/** |
* Load template's source from file into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
* @throws SmartyException if source cannot be loaded |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
if ($source->exists) { |
return ''; |
} |
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); |
} |
/** |
* populate compiled object with compiled filepath |
* |
* @param Smarty_Template_Compiled $compiled compiled object |
* @param Smarty_Internal_Template $_template template object (is ignored) |
*/ |
public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) |
{ |
$compiled->filepath = $_template->source->filepath; |
$compiled->timestamp = $_template->source->timestamp; |
$compiled->exists = $_template->source->exists; |
$compiled->file_dependency[ $_template->source->uid ] = |
array( |
$compiled->filepath, |
$compiled->timestamp, |
$_template->source->type, |
); |
} |
/** |
* Render and output the template (without using the compiler) |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
* @throws SmartyException if template cannot be loaded or allow_php_templates is disabled |
*/ |
public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template) |
{ |
if (!$source->smarty->allow_php_templates) { |
throw new SmartyException('PHP templates are disabled'); |
} |
if (!$source->exists) { |
throw new SmartyException( |
"Unable to load template '{$source->type}:{$source->name}'" . |
($_template->_isSubTpl() ? " in '{$_template->parent->template_resource}'" : '') |
); |
} |
// prepare variables |
extract($_template->getTemplateVars()); |
// include PHP template with short open tags enabled |
if (function_exists('ini_set')) { |
ini_set('short_open_tag', '1'); |
} |
/** |
* |
* |
* @var Smarty_Internal_Template $_smarty_template |
* used in included file |
*/ |
$_smarty_template = $_template; |
include $source->filepath; |
if (function_exists('ini_set')) { |
ini_set('short_open_tag', $this->short_open_tag); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_registered.php |
---|
0,0 → 1,101 |
<?php |
/** |
* Smarty Internal Plugin Resource Registered |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Internal Plugin Resource Registered |
* Implements the registered resource for Smarty template |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @deprecated |
*/ |
class Smarty_Internal_Resource_Registered extends Smarty_Resource |
{ |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$source->filepath = $source->type . ':' . $source->name; |
$source->uid = sha1($source->filepath . $source->smarty->_joined_template_dir); |
$source->timestamp = $this->getTemplateTimestamp($source); |
$source->exists = !!$source->timestamp; |
} |
/** |
* populate Source Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return void |
*/ |
public function populateTimestamp(Smarty_Template_Source $source) |
{ |
$source->timestamp = $this->getTemplateTimestamp($source); |
$source->exists = !!$source->timestamp; |
} |
/** |
* Get timestamp (epoch) the template source was modified |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp |
*/ |
public function getTemplateTimestamp(Smarty_Template_Source $source) |
{ |
// return timestamp |
$time_stamp = false; |
call_user_func_array( |
$source->smarty->registered_resources[ $source->type ][ 0 ][ 1 ], |
array($source->name, &$time_stamp, $source->smarty) |
); |
return is_numeric($time_stamp) ? (int)$time_stamp : $time_stamp; |
} |
/** |
* Load template's source by invoking the registered callback into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
* @throws SmartyException if source cannot be loaded |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
// return template string |
$content = null; |
$t = call_user_func_array( |
$source->smarty->registered_resources[ $source->type ][ 0 ][ 0 ], |
array($source->name, &$content, $source->smarty) |
); |
if (is_bool($t) && !$t) { |
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); |
} |
return $content; |
} |
/** |
* Determine basename for compiled filename |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return basename($source->name); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_stream.php |
---|
0,0 → 1,78 |
<?php |
/** |
* Smarty Internal Plugin Resource Stream |
* Implements the streams as resource for Smarty template |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Internal Plugin Resource Stream |
* Implements the streams as resource for Smarty template |
* |
* @link http://php.net/streams |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled |
{ |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
if (strpos($source->resource, '://') !== false) { |
$source->filepath = $source->resource; |
} else { |
$source->filepath = str_replace(':', '://', $source->resource); |
} |
$source->uid = false; |
$source->content = $this->getContent($source); |
$source->timestamp = $source->exists = !!$source->content; |
} |
/** |
* Load template's source from stream into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
$t = ''; |
// the availability of the stream has already been checked in Smarty_Resource::fetch() |
$fp = fopen($source->filepath, 'r+'); |
if ($fp) { |
while (!feof($fp) && ($current_line = fgets($fp)) !== false) { |
$t .= $current_line; |
} |
fclose($fp); |
return $t; |
} else { |
return false; |
} |
} |
/** |
* modify resource_name according to resource handlers specifications |
* |
* @param Smarty $smarty Smarty instance |
* @param string $resource_name resource_name to make unique |
* @param boolean $isConfig flag for config resource |
* |
* @return string unique resource name |
*/ |
public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) |
{ |
return get_class($this) . '#' . $resource_name; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_resource_string.php |
---|
0,0 → 1,108 |
<?php |
/** |
* Smarty Internal Plugin Resource String |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Internal Plugin Resource String |
* Implements the strings as resource for Smarty template |
* {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}} |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
class Smarty_Internal_Resource_String extends Smarty_Resource |
{ |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$source->uid = $source->filepath = sha1($source->name . $source->smarty->_joined_template_dir); |
$source->timestamp = $source->exists = true; |
} |
/** |
* Load template's source from $resource_name into current template object |
* |
* @uses decode() to decode base64 and urlencoded template_resources |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
return $this->decode($source->name); |
} |
/** |
* decode base64 and urlencode |
* |
* @param string $string template_resource to decode |
* |
* @return string decoded template_resource |
*/ |
protected function decode($string) |
{ |
// decode if specified |
if (($pos = strpos($string, ':')) !== false) { |
if (!strncmp($string, 'base64', 6)) { |
return base64_decode(substr($string, 7)); |
} elseif (!strncmp($string, 'urlencode', 9)) { |
return urldecode(substr($string, 10)); |
} |
} |
return $string; |
} |
/** |
* modify resource_name according to resource handlers specifications |
* |
* @param Smarty $smarty Smarty instance |
* @param string $resource_name resource_name to make unique |
* @param boolean $isConfig flag for config resource |
* |
* @return string unique resource name |
*/ |
public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) |
{ |
return get_class($this) . '#' . $this->decode($resource_name); |
} |
/** |
* Determine basename for compiled filename |
* Always returns an empty string. |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return ''; |
} |
/* |
* Disable timestamp checks for string resource. |
* |
* @return bool |
*/ |
/** |
* @return bool |
*/ |
public function checkTimestamps() |
{ |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_cachemodify.php |
---|
0,0 → 1,68 |
<?php |
/** |
* Inline Runtime Methods render, setSourceByUid, setupSubTemplate |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
**/ |
class Smarty_Internal_Runtime_CacheModify |
{ |
/** |
* check client side cache |
* |
* @param \Smarty_Template_Cached $cached |
* @param \Smarty_Internal_Template $_template |
* @param string $content |
* |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content) |
{ |
$_isCached = $_template->isCached() && !$_template->compiled->has_nocache_code; |
$_last_modified_date = |
@substr($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 0, strpos($_SERVER[ 'HTTP_IF_MODIFIED_SINCE' ], 'GMT') + 3); |
if ($_isCached && $cached->timestamp <= strtotime($_last_modified_date)) { |
switch (PHP_SAPI) { |
case 'cgi': // php-cgi < 5.3 |
case 'cgi-fcgi': // php-cgi >= 5.3 |
case 'fpm-fcgi': // php-fpm >= 5.3.3 |
header('Status: 304 Not Modified'); |
break; |
case 'cli': |
if (/* ^phpunit */ |
!empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ |
) { |
$_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified'; |
} |
break; |
default: |
if (/* ^phpunit */ |
!empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ |
) { |
$_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = '304 Not Modified'; |
} else { |
header($_SERVER[ 'SERVER_PROTOCOL' ] . ' 304 Not Modified'); |
} |
break; |
} |
} else { |
switch (PHP_SAPI) { |
case 'cli': |
if (/* ^phpunit */ |
!empty($_SERVER[ 'SMARTY_PHPUNIT_DISABLE_HEADERS' ]) /* phpunit$ */ |
) { |
$_SERVER[ 'SMARTY_PHPUNIT_HEADERS' ][] = |
'Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT'; |
} |
break; |
default: |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $cached->timestamp) . ' GMT'); |
break; |
} |
echo $content; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_cacheresourcefile.php |
---|
0,0 → 1,139 |
<?php |
/** |
* Smarty cache resource file clear method |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
/** |
* Smarty Internal Runtime Cache Resource File Class |
* |
* @package Smarty |
* @subpackage PluginsInternal |
*/ |
class Smarty_Internal_Runtime_CacheResourceFile |
{ |
/** |
* Empty cache for a specific template |
* |
* @param Smarty $smarty |
* @param string $resource_name template name |
* @param string $cache_id cache id |
* @param string $compile_id compile id |
* @param integer $exp_time expiration time (number of seconds, not timestamp) |
* |
* @return integer number of cache files deleted |
*/ |
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time) |
{ |
$_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null; |
$_compile_id = isset($compile_id) ? preg_replace('![^\w]+!', '_', $compile_id) : null; |
$_dir_sep = $smarty->use_sub_dirs ? '/' : '^'; |
$_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0; |
$_dir = $smarty->getCacheDir(); |
if ($_dir === '/') { //We should never want to delete this! |
return 0; |
} |
$_dir_length = strlen($_dir); |
if (isset($_cache_id)) { |
$_cache_id_parts = explode('|', $_cache_id); |
$_cache_id_parts_count = count($_cache_id_parts); |
if ($smarty->use_sub_dirs) { |
foreach ($_cache_id_parts as $id_part) { |
$_dir .= $id_part . '/'; |
} |
} |
} |
if (isset($resource_name)) { |
$_save_stat = $smarty->caching; |
$smarty->caching = Smarty::CACHING_LIFETIME_CURRENT; |
$tpl = new $smarty->template_class($resource_name, $smarty); |
$smarty->caching = $_save_stat; |
// remove from template cache |
$tpl->source; // have the template registered before unset() |
if ($tpl->source->exists) { |
$_resourcename_parts = basename(str_replace('^', '/', $tpl->cached->filepath)); |
} else { |
return 0; |
} |
} |
$_count = 0; |
$_time = time(); |
if (file_exists($_dir)) { |
$_cacheDirs = new RecursiveDirectoryIterator($_dir); |
$_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST); |
foreach ($_cache as $_file) { |
if (substr(basename($_file->getPathname()), 0, 1) === '.') { |
continue; |
} |
$_filepath = (string)$_file; |
// directory ? |
if ($_file->isDir()) { |
if (!$_cache->isDot()) { |
// delete folder if empty |
@rmdir($_file->getPathname()); |
} |
} else { |
// delete only php files |
if (substr($_filepath, -4) !== '.php') { |
continue; |
} |
$_parts = explode($_dir_sep, str_replace('\\', '/', substr($_filepath, $_dir_length))); |
$_parts_count = count($_parts); |
// check name |
if (isset($resource_name)) { |
if ($_parts[ $_parts_count - 1 ] !== $_resourcename_parts) { |
continue; |
} |
} |
// check compile id |
if (isset($_compile_id) && (!isset($_parts[ $_parts_count - 2 - $_compile_id_offset ]) |
|| $_parts[ $_parts_count - 2 - $_compile_id_offset ] !== $_compile_id) |
) { |
continue; |
} |
// check cache id |
if (isset($_cache_id)) { |
// count of cache id parts |
$_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset : |
$_parts_count - 1 - $_compile_id_offset; |
if ($_parts_count < $_cache_id_parts_count) { |
continue; |
} |
for ($i = 0; $i < $_cache_id_parts_count; $i++) { |
if ($_parts[ $i ] !== $_cache_id_parts[ $i ]) { |
continue 2; |
} |
} |
} |
if (is_file($_filepath)) { |
// expired ? |
if (isset($exp_time)) { |
if ($exp_time < 0) { |
preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_filepath), $match); |
if ($_time < (filemtime($_filepath) + $match[ 1 ])) { |
continue; |
} |
} else { |
if ($_time - filemtime($_filepath) < $exp_time) { |
continue; |
} |
} |
} |
$_count += @unlink($_filepath) ? 1 : 0; |
if (function_exists('opcache_invalidate') |
&& (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1) |
) { |
opcache_invalidate($_filepath, true); |
} elseif (function_exists('apc_delete_file')) { |
apc_delete_file($_filepath); |
} |
} |
} |
} |
} |
return $_count; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_capture.php |
---|
0,0 → 1,174 |
<?php |
/** |
* Runtime Extension Capture |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Runtime_Capture |
{ |
/** |
* Flag that this instance will not be cached |
* |
* @var bool |
*/ |
public $isPrivateExtension = true; |
/** |
* Stack of capture parameter |
* |
* @var array |
*/ |
private $captureStack = array(); |
/** |
* Current open capture sections |
* |
* @var int |
*/ |
private $captureCount = 0; |
/** |
* Count stack |
* |
* @var int[] |
*/ |
private $countStack = array(); |
/** |
* Named buffer |
* |
* @var string[] |
*/ |
private $namedBuffer = array(); |
/** |
* Flag if callbacks are registered |
* |
* @var bool |
*/ |
private $isRegistered = false; |
/** |
* Open capture section |
* |
* @param \Smarty_Internal_Template $_template |
* @param string $buffer capture name |
* @param string $assign variable name |
* @param string $append variable name |
*/ |
public function open(Smarty_Internal_Template $_template, $buffer, $assign, $append) |
{ |
if (!$this->isRegistered) { |
$this->register($_template); |
} |
$this->captureStack[] = array( |
$buffer, |
$assign, |
$append |
); |
$this->captureCount++; |
ob_start(); |
} |
/** |
* Register callbacks in template class |
* |
* @param \Smarty_Internal_Template $_template |
*/ |
private function register(Smarty_Internal_Template $_template) |
{ |
$_template->startRenderCallbacks[] = array( |
$this, |
'startRender' |
); |
$_template->endRenderCallbacks[] = array( |
$this, |
'endRender' |
); |
$this->startRender($_template); |
$this->isRegistered = true; |
} |
/** |
* Start render callback |
* |
* @param \Smarty_Internal_Template $_template |
*/ |
public function startRender(Smarty_Internal_Template $_template) |
{ |
$this->countStack[] = $this->captureCount; |
$this->captureCount = 0; |
} |
/** |
* Close capture section |
* |
* @param \Smarty_Internal_Template $_template |
* |
* @throws \SmartyException |
*/ |
public function close(Smarty_Internal_Template $_template) |
{ |
if ($this->captureCount) { |
list($buffer, $assign, $append) = array_pop($this->captureStack); |
$this->captureCount--; |
if (isset($assign)) { |
$_template->assign($assign, ob_get_contents()); |
} |
if (isset($append)) { |
$_template->append($append, ob_get_contents()); |
} |
$this->namedBuffer[ $buffer ] = ob_get_clean(); |
} else { |
$this->error($_template); |
} |
} |
/** |
* Error exception on not matching {capture}{/capture} |
* |
* @param \Smarty_Internal_Template $_template |
* |
* @throws \SmartyException |
*/ |
public function error(Smarty_Internal_Template $_template) |
{ |
throw new SmartyException("Not matching {capture}{/capture} in '{$_template->template_resource}'"); |
} |
/** |
* Return content of named capture buffer by key or as array |
* |
* @param \Smarty_Internal_Template $_template |
* @param string|null $name |
* |
* @return string|string[]|null |
*/ |
public function getBuffer(Smarty_Internal_Template $_template, $name = null) |
{ |
if (isset($name)) { |
return isset($this->namedBuffer[ $name ]) ? $this->namedBuffer[ $name ] : null; |
} else { |
return $this->namedBuffer; |
} |
} |
/** |
* End render callback |
* |
* @param \Smarty_Internal_Template $_template |
* |
* @throws \SmartyException |
*/ |
public function endRender(Smarty_Internal_Template $_template) |
{ |
if ($this->captureCount) { |
$this->error($_template); |
} else { |
$this->captureCount = array_pop($this->countStack); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_codeframe.php |
---|
0,0 → 1,100 |
<?php |
/** |
* Smarty Internal Extension |
* This file contains the Smarty template extension to create a code frame |
* |
* @package Smarty |
* @subpackage Template |
* @author Uwe Tews |
*/ |
/** |
* Class Smarty_Internal_Extension_CodeFrame |
* Create code frame for compiled and cached templates |
*/ |
class Smarty_Internal_Runtime_CodeFrame |
{ |
/** |
* Create code frame for compiled and cached templates |
* |
* @param Smarty_Internal_Template $_template |
* @param string $content optional template content |
* @param string $functions compiled template function and block code |
* @param bool $cache flag for cache file |
* @param \Smarty_Internal_TemplateCompilerBase $compiler |
* |
* @return string |
*/ |
public function create( |
Smarty_Internal_Template $_template, |
$content = '', |
$functions = '', |
$cache = false, |
Smarty_Internal_TemplateCompilerBase $compiler = null |
) { |
// build property code |
$properties[ 'version' ] = Smarty::SMARTY_VERSION; |
$properties[ 'unifunc' ] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true)); |
if (!$cache) { |
$properties[ 'has_nocache_code' ] = $_template->compiled->has_nocache_code; |
$properties[ 'file_dependency' ] = $_template->compiled->file_dependency; |
$properties[ 'includes' ] = $_template->compiled->includes; |
} else { |
$properties[ 'has_nocache_code' ] = $_template->cached->has_nocache_code; |
$properties[ 'file_dependency' ] = $_template->cached->file_dependency; |
$properties[ 'cache_lifetime' ] = $_template->cache_lifetime; |
} |
$output = "<?php\n"; |
$output .= "/* Smarty version {$properties[ 'version' ]}, created on " . strftime("%Y-%m-%d %H:%M:%S") . |
"\n from '" . str_replace('*/', '* /', $_template->source->filepath) . "' */\n\n"; |
$output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n"; |
$dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' . |
($cache ? 'true' : 'false') . ')'; |
$output .= "if ({$dec}) {\n"; |
$output .= "function {$properties['unifunc']} (Smarty_Internal_Template \$_smarty_tpl) {\n"; |
if (!$cache && !empty($compiler->tpl_function)) { |
$output .= '$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions($_smarty_tpl, '; |
$output .= var_export($compiler->tpl_function, true); |
$output .= ");\n"; |
} |
if ($cache && isset($_template->smarty->ext->_tplFunction)) { |
$output .= "\$_smarty_tpl->smarty->ext->_tplFunction->registerTplFunctions(\$_smarty_tpl, " . |
var_export($_template->smarty->ext->_tplFunction->getTplFunction($_template), true) . ");\n"; |
} |
$output .= "?>"; |
$output .= $content; |
$output .= "<?php }\n?>"; |
$output .= $functions; |
$output .= "<?php }\n"; |
// remove unneeded PHP tags |
if (preg_match('/\s*\?>[\n]?<\?php\s*/', $output)) { |
$curr_split = preg_split( |
'/\s*\?>[\n]?<\?php\s*/', |
$output |
); |
preg_match_all( |
'/\s*\?>[\n]?<\?php\s*/', |
$output, |
$curr_parts |
); |
$output = ''; |
foreach ($curr_split as $idx => $curr_output) { |
$output .= $curr_output; |
if (isset($curr_parts[ 0 ][ $idx ])) { |
$output .= "\n"; |
} |
} |
} |
if (preg_match('/\?>\s*$/', $output)) { |
$curr_split = preg_split( |
'/\?>\s*$/', |
$output |
); |
$output = ''; |
foreach ($curr_split as $idx => $curr_output) { |
$output .= $curr_output; |
} |
} |
return $output; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_filterhandler.php |
---|
0,0 → 1,69 |
<?php |
/** |
* Smarty Internal Plugin Filter Handler |
* Smarty filter handler class |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
/** |
* Class for filter processing |
* |
* @package Smarty |
* @subpackage PluginsInternal |
*/ |
class Smarty_Internal_Runtime_FilterHandler |
{ |
/** |
* Run filters over content |
* The filters will be lazy loaded if required |
* class name format: Smarty_FilterType_FilterName |
* plugin filename format: filtertype.filtername.php |
* Smarty2 filter plugins could be used |
* |
* @param string $type the type of filter ('pre','post','output') which shall run |
* @param string $content the content which shall be processed by the filters |
* @param Smarty_Internal_Template $template template object |
* |
* @throws SmartyException |
* @return string the filtered content |
*/ |
public function runFilter($type, $content, Smarty_Internal_Template $template) |
{ |
// loop over autoload filters of specified type |
if (!empty($template->smarty->autoload_filters[ $type ])) { |
foreach ((array)$template->smarty->autoload_filters[ $type ] as $name) { |
$plugin_name = "Smarty_{$type}filter_{$name}"; |
if (function_exists($plugin_name)) { |
$callback = $plugin_name; |
} elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) { |
$callback = array($plugin_name, 'execute'); |
} elseif ($template->smarty->loadPlugin($plugin_name, false)) { |
if (function_exists($plugin_name)) { |
// use loaded Smarty2 style plugin |
$callback = $plugin_name; |
} elseif (class_exists($plugin_name, false) && is_callable(array($plugin_name, 'execute'))) { |
// loaded class of filter plugin |
$callback = array($plugin_name, 'execute'); |
} else { |
throw new SmartyException("Auto load {$type}-filter plugin method '{$plugin_name}::execute' not callable"); |
} |
} else { |
// nothing found, throw exception |
throw new SmartyException("Unable to auto load {$type}-filter plugin '{$plugin_name}'"); |
} |
$content = call_user_func($callback, $content, $template); |
} |
} |
// loop over registered filters of specified type |
if (!empty($template->smarty->registered_filters[ $type ])) { |
foreach ($template->smarty->registered_filters[ $type ] as $key => $name) { |
$content = call_user_func($template->smarty->registered_filters[ $type ][ $key ], $content, $template); |
} |
} |
// return filtered output |
return $content; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_foreach.php |
---|
0,0 → 1,162 |
<?php |
/** |
* Foreach Runtime Methods count(), init(), restore() |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Runtime_Foreach |
{ |
/** |
* Stack of saved variables |
* |
* @var array |
*/ |
private $stack = array(); |
/** |
* Init foreach loop |
* - save item and key variables, named foreach property data if defined |
* - init item and key variables, named foreach property data if required |
* - count total if required |
* |
* @param \Smarty_Internal_Template $tpl |
* @param mixed $from values to loop over |
* @param string $item variable name |
* @param bool $needTotal flag if we need to count values |
* @param null|string $key variable name |
* @param null|string $name of named foreach |
* @param array $properties of named foreach |
* |
* @return mixed $from |
*/ |
public function init( |
Smarty_Internal_Template $tpl, |
$from, |
$item, |
$needTotal = false, |
$key = null, |
$name = null, |
$properties = array() |
) { |
$needTotal = $needTotal || isset($properties[ 'total' ]); |
$saveVars = array(); |
$total = null; |
if (!is_array($from)) { |
if (is_object($from)) { |
if ($needTotal) { |
$total = $this->count($from); |
} |
} else { |
settype($from, 'array'); |
} |
} |
if (!isset($total)) { |
$total = empty($from) ? 0 : ($needTotal ? count($from) : 1); |
} |
if (isset($tpl->tpl_vars[ $item ])) { |
$saveVars[ 'item' ] = array( |
$item, |
$tpl->tpl_vars[ $item ] |
); |
} |
$tpl->tpl_vars[ $item ] = new Smarty_Variable(null, $tpl->isRenderingCache); |
if ($total === 0) { |
$from = null; |
} else { |
if ($key) { |
if (isset($tpl->tpl_vars[ $key ])) { |
$saveVars[ 'key' ] = array( |
$key, |
$tpl->tpl_vars[ $key ] |
); |
} |
$tpl->tpl_vars[ $key ] = new Smarty_Variable(null, $tpl->isRenderingCache); |
} |
} |
if ($needTotal) { |
$tpl->tpl_vars[ $item ]->total = $total; |
} |
if ($name) { |
$namedVar = "__smarty_foreach_{$name}"; |
if (isset($tpl->tpl_vars[ $namedVar ])) { |
$saveVars[ 'named' ] = array( |
$namedVar, |
$tpl->tpl_vars[ $namedVar ] |
); |
} |
$namedProp = array(); |
if (isset($properties[ 'total' ])) { |
$namedProp[ 'total' ] = $total; |
} |
if (isset($properties[ 'iteration' ])) { |
$namedProp[ 'iteration' ] = 0; |
} |
if (isset($properties[ 'index' ])) { |
$namedProp[ 'index' ] = -1; |
} |
if (isset($properties[ 'show' ])) { |
$namedProp[ 'show' ] = ($total > 0); |
} |
$tpl->tpl_vars[ $namedVar ] = new Smarty_Variable($namedProp); |
} |
$this->stack[] = $saveVars; |
return $from; |
} |
/** |
* [util function] counts an array, arrayAccess/traversable or PDOStatement object |
* |
* @param mixed $value |
* |
* @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0 |
* for empty elements |
*/ |
public function count($value) |
{ |
if ($value instanceof IteratorAggregate) { |
// Note: getIterator() returns a Traversable, not an Iterator |
// thus rewind() and valid() methods may not be present |
return iterator_count($value->getIterator()); |
} elseif ($value instanceof Iterator) { |
return $value instanceof Generator ? 1 : iterator_count($value); |
} elseif ($value instanceof Countable) { |
return count($value); |
} elseif ($value instanceof PDOStatement) { |
return $value->rowCount(); |
} elseif ($value instanceof Traversable) { |
return iterator_count($value); |
} |
return count((array)$value); |
} |
/** |
* Restore saved variables |
* |
* will be called by {break n} or {continue n} for the required number of levels |
* |
* @param \Smarty_Internal_Template $tpl |
* @param int $levels number of levels |
*/ |
public function restore(Smarty_Internal_Template $tpl, $levels = 1) |
{ |
while ($levels) { |
$saveVars = array_pop($this->stack); |
if (!empty($saveVars)) { |
if (isset($saveVars[ 'item' ])) { |
$item = &$saveVars[ 'item' ]; |
$tpl->tpl_vars[ $item[ 0 ] ]->value = $item[ 1 ]->value; |
} |
if (isset($saveVars[ 'key' ])) { |
$tpl->tpl_vars[ $saveVars[ 'key' ][ 0 ] ] = $saveVars[ 'key' ][ 1 ]; |
} |
if (isset($saveVars[ 'named' ])) { |
$tpl->tpl_vars[ $saveVars[ 'named' ][ 0 ] ] = $saveVars[ 'named' ][ 1 ]; |
} |
} |
$levels--; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_getincludepath.php |
---|
0,0 → 1,181 |
<?php |
/** |
* Smarty read include path plugin |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Monte Ohrt |
*/ |
/** |
* Smarty Internal Read Include Path Class |
* |
* @package Smarty |
* @subpackage PluginsInternal |
*/ |
class Smarty_Internal_Runtime_GetIncludePath |
{ |
/** |
* include path cache |
* |
* @var string |
*/ |
public $_include_path = ''; |
/** |
* include path directory cache |
* |
* @var array |
*/ |
public $_include_dirs = array(); |
/** |
* include path directory cache |
* |
* @var array |
*/ |
public $_user_dirs = array(); |
/** |
* stream cache |
* |
* @var string[][] |
*/ |
public $isFile = array(); |
/** |
* stream cache |
* |
* @var string[] |
*/ |
public $isPath = array(); |
/** |
* stream cache |
* |
* @var int[] |
*/ |
public $number = array(); |
/** |
* status cache |
* |
* @var bool |
*/ |
public $_has_stream_include = null; |
/** |
* Number for array index |
* |
* @var int |
*/ |
public $counter = 0; |
/** |
* Check if include path was updated |
* |
* @param \Smarty $smarty |
* |
* @return bool |
*/ |
public function isNewIncludePath(Smarty $smarty) |
{ |
$_i_path = get_include_path(); |
if ($this->_include_path !== $_i_path) { |
$this->_include_dirs = array(); |
$this->_include_path = $_i_path; |
$_dirs = (array)explode(PATH_SEPARATOR, $_i_path); |
foreach ($_dirs as $_path) { |
if (is_dir($_path)) { |
$this->_include_dirs[] = $smarty->_realpath($_path . DIRECTORY_SEPARATOR, true); |
} |
} |
return true; |
} |
return false; |
} |
/** |
* return array with include path directories |
* |
* @param \Smarty $smarty |
* |
* @return array |
*/ |
public function getIncludePathDirs(Smarty $smarty) |
{ |
$this->isNewIncludePath($smarty); |
return $this->_include_dirs; |
} |
/** |
* Return full file path from PHP include_path |
* |
* @param string[] $dirs |
* @param string $file |
* @param \Smarty $smarty |
* |
* @return bool|string full filepath or false |
*/ |
public function getIncludePath($dirs, $file, Smarty $smarty) |
{ |
//if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : $this->_has_stream_include = false)) { |
if (!(isset($this->_has_stream_include) ? $this->_has_stream_include : |
$this->_has_stream_include = function_exists('stream_resolve_include_path')) |
) { |
$this->isNewIncludePath($smarty); |
} |
// try PHP include_path |
foreach ($dirs as $dir) { |
$dir_n = isset($this->number[ $dir ]) ? $this->number[ $dir ] : $this->number[ $dir ] = $this->counter++; |
if (isset($this->isFile[ $dir_n ][ $file ])) { |
if ($this->isFile[ $dir_n ][ $file ]) { |
return $this->isFile[ $dir_n ][ $file ]; |
} else { |
continue; |
} |
} |
if (isset($this->_user_dirs[ $dir_n ])) { |
if (false === $this->_user_dirs[ $dir_n ]) { |
continue; |
} else { |
$dir = $this->_user_dirs[ $dir_n ]; |
} |
} else { |
if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') { |
$dir = str_ireplace(getcwd(), '.', $dir); |
if ($dir[ 0 ] === '/' || $dir[ 1 ] === ':') { |
$this->_user_dirs[ $dir_n ] = false; |
continue; |
} |
} |
$dir = substr($dir, 2); |
$this->_user_dirs[ $dir_n ] = $dir; |
} |
if ($this->_has_stream_include) { |
$path = stream_resolve_include_path($dir . (isset($file) ? $file : '')); |
if ($path) { |
return $this->isFile[ $dir_n ][ $file ] = $path; |
} |
} else { |
foreach ($this->_include_dirs as $key => $_i_path) { |
$path = isset($this->isPath[ $key ][ $dir_n ]) ? $this->isPath[ $key ][ $dir_n ] : |
$this->isPath[ $key ][ $dir_n ] = is_dir($_dir_path = $_i_path . $dir) ? $_dir_path : false; |
if ($path === false) { |
continue; |
} |
if (isset($file)) { |
$_file = $this->isFile[ $dir_n ][ $file ] = (is_file($path . $file)) ? $path . $file : false; |
if ($_file) { |
return $_file; |
} |
} else { |
// no file was given return directory path |
return $path; |
} |
} |
} |
} |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_inheritance.php |
---|
0,0 → 1,251 |
<?php |
/** |
* Inheritance Runtime Methods processBlock, endChild, init |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
**/ |
class Smarty_Internal_Runtime_Inheritance |
{ |
/** |
* State machine |
* - 0 idle next extends will create a new inheritance tree |
* - 1 processing child template |
* - 2 wait for next inheritance template |
* - 3 assume parent template, if child will loaded goto state 1 |
* a call to a sub template resets the state to 0 |
* |
* @var int |
*/ |
public $state = 0; |
/** |
* Array of root child {block} objects |
* |
* @var Smarty_Internal_Block[] |
*/ |
public $childRoot = array(); |
/** |
* inheritance template nesting level |
* |
* @var int |
*/ |
public $inheritanceLevel = 0; |
/** |
* inheritance template index |
* |
* @var int |
*/ |
public $tplIndex = -1; |
/** |
* Array of template source objects |
* |
* @var Smarty_Template_Source[] |
*/ |
public $sources = array(); |
/** |
* Stack of source objects while executing block code |
* |
* @var Smarty_Template_Source[] |
*/ |
public $sourceStack = array(); |
/** |
* Initialize inheritance |
* |
* @param \Smarty_Internal_Template $tpl template object of caller |
* @param bool $initChild if true init for child template |
* @param array $blockNames outer level block name |
*/ |
public function init(Smarty_Internal_Template $tpl, $initChild, $blockNames = array()) |
{ |
// if called while executing parent template it must be a sub-template with new inheritance root |
if ($initChild && $this->state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) { |
$tpl->inheritance = new Smarty_Internal_Runtime_Inheritance(); |
$tpl->inheritance->init($tpl, $initChild, $blockNames); |
return; |
} |
++$this->tplIndex; |
$this->sources[ $this->tplIndex ] = $tpl->source; |
// start of child sub template(s) |
if ($initChild) { |
$this->state = 1; |
if (!$this->inheritanceLevel) { |
//grab any output of child templates |
ob_start(); |
} |
++$this->inheritanceLevel; |
// $tpl->startRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateStart'); |
// $tpl->endRenderCallbacks[ 'inheritance' ] = array($this, 'subTemplateEnd'); |
} |
// if state was waiting for parent change state to parent |
if ($this->state === 2) { |
$this->state = 3; |
} |
} |
/** |
* End of child template(s) |
* - if outer level is reached flush output buffer and switch to wait for parent template state |
* |
* @param \Smarty_Internal_Template $tpl |
* @param null|string $template optional name of inheritance parent template |
* @param null|string $uid uid of inline template |
* @param null|string $func function call name of inline template |
* |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function endChild(Smarty_Internal_Template $tpl, $template = null, $uid = null, $func = null) |
{ |
--$this->inheritanceLevel; |
if (!$this->inheritanceLevel) { |
ob_end_clean(); |
$this->state = 2; |
} |
if (isset($template) && (($tpl->parent->_isTplObj() && $tpl->parent->source->type !== 'extends') |
|| $tpl->smarty->extends_recursion) |
) { |
$tpl->_subTemplateRender( |
$template, |
$tpl->cache_id, |
$tpl->compile_id, |
$tpl->caching ? 9999 : 0, |
$tpl->cache_lifetime, |
array(), |
2, |
false, |
$uid, |
$func |
); |
} |
} |
/** |
* Smarty_Internal_Block constructor. |
* - if outer level {block} of child template ($state === 1) save it as child root block |
* - otherwise process inheritance and render |
* |
* @param \Smarty_Internal_Template $tpl |
* @param $className |
* @param string $name |
* @param int|null $tplIndex index of outer level {block} if nested |
* |
* @throws \SmartyException |
*/ |
public function instanceBlock(Smarty_Internal_Template $tpl, $className, $name, $tplIndex = null) |
{ |
$block = new $className($name, isset($tplIndex) ? $tplIndex : $this->tplIndex); |
if (isset($this->childRoot[ $name ])) { |
$block->child = $this->childRoot[ $name ]; |
} |
if ($this->state === 1) { |
$this->childRoot[ $name ] = $block; |
return; |
} |
// make sure we got child block of child template of current block |
while ($block->child && $block->child->child && $block->tplIndex <= $block->child->tplIndex) { |
$block->child = $block->child->child; |
} |
$this->process($tpl, $block); |
} |
/** |
* Goto child block or render this |
* |
* @param \Smarty_Internal_Template $tpl |
* @param \Smarty_Internal_Block $block |
* @param \Smarty_Internal_Block|null $parent |
* |
* @throws \SmartyException |
*/ |
public function process( |
Smarty_Internal_Template $tpl, |
Smarty_Internal_Block $block, |
Smarty_Internal_Block $parent = null |
) { |
if ($block->hide && !isset($block->child)) { |
return; |
} |
if (isset($block->child) && $block->child->hide && !isset($block->child->child)) { |
$block->child = null; |
} |
$block->parent = $parent; |
if ($block->append && !$block->prepend && isset($parent)) { |
$this->callParent($tpl, $block, '\'{block append}\''); |
} |
if ($block->callsChild || !isset($block->child) || ($block->child->hide && !isset($block->child->child))) { |
$this->callBlock($block, $tpl); |
} else { |
$this->process($tpl, $block->child, $block); |
} |
if ($block->prepend && isset($parent)) { |
$this->callParent($tpl, $block, '{block prepend}'); |
if ($block->append) { |
if ($block->callsChild || !isset($block->child) |
|| ($block->child->hide && !isset($block->child->child)) |
) { |
$this->callBlock($block, $tpl); |
} else { |
$this->process($tpl, $block->child, $block); |
} |
} |
} |
$block->parent = null; |
} |
/** |
* Render child on \$smarty.block.child |
* |
* @param \Smarty_Internal_Template $tpl |
* @param \Smarty_Internal_Block $block |
* |
* @return null|string block content |
* @throws \SmartyException |
*/ |
public function callChild(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block) |
{ |
if (isset($block->child)) { |
$this->process($tpl, $block->child, $block); |
} |
} |
/** |
* Render parent block on \$smarty.block.parent or {block append/prepend} |
* |
* @param \Smarty_Internal_Template $tpl |
* @param \Smarty_Internal_Block $block |
* @param string $tag |
* |
* @return null|string block content |
* @throws \SmartyException |
*/ |
public function callParent(Smarty_Internal_Template $tpl, Smarty_Internal_Block $block, $tag) |
{ |
if (isset($block->parent)) { |
$this->callBlock($block->parent, $tpl); |
} else { |
throw new SmartyException("inheritance: illegal '{$tag}' used in child template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'"); |
} |
} |
/** |
* render block |
* |
* @param \Smarty_Internal_Block $block |
* @param \Smarty_Internal_Template $tpl |
*/ |
public function callBlock(Smarty_Internal_Block $block, Smarty_Internal_Template $tpl) |
{ |
$this->sourceStack[] = $tpl->source; |
$tpl->source = $this->sources[ $block->tplIndex ]; |
$block->callBlock($tpl); |
$tpl->source = array_pop($this->sourceStack); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_make_nocache.php |
---|
0,0 → 1,54 |
<?php |
/** |
* {make_nocache} Runtime Methods save(), store() |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Runtime_Make_Nocache |
{ |
/** |
* Save current variable value while rendering compiled template and inject nocache code to |
* assign variable value in cahed template |
* |
* @param \Smarty_Internal_Template $tpl |
* @param string $var variable name |
* |
* @throws \SmartyException |
*/ |
public function save(Smarty_Internal_Template $tpl, $var) |
{ |
if (isset($tpl->tpl_vars[ $var ])) { |
$export = |
preg_replace('/^Smarty_Variable::__set_state[(]|[)]$/', '', var_export($tpl->tpl_vars[ $var ], true)); |
if (preg_match('/(\w+)::__set_state/', $export, $match)) { |
throw new SmartyException("{make_nocache \${$var}} in template '{$tpl->source->name}': variable does contain object '{$match[1]}' not implementing method '__set_state'"); |
} |
echo "/*%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/<?php " . |
addcslashes("\$_smarty_tpl->smarty->ext->_make_nocache->store(\$_smarty_tpl, '{$var}', ", '\\') . |
$export . ");?>\n/*/%%SmartyNocache:{$tpl->compiled->nocache_hash}%%*/"; |
} |
} |
/** |
* Store variable value saved while rendering compiled template in cached template context |
* |
* @param \Smarty_Internal_Template $tpl |
* @param string $var variable name |
* @param array $properties |
*/ |
public function store(Smarty_Internal_Template $tpl, $var, $properties) |
{ |
// do not overwrite existing nocache variables |
if (!isset($tpl->tpl_vars[ $var ]) || !$tpl->tpl_vars[ $var ]->nocache) { |
$newVar = new Smarty_Variable(); |
unset($properties[ 'nocache' ]); |
foreach ($properties as $k => $v) { |
$newVar->$k = $v; |
} |
$tpl->tpl_vars[ $var ] = $newVar; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_tplfunction.php |
---|
0,0 → 1,177 |
<?php |
/** |
* TplFunction Runtime Methods callTemplateFunction |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
**/ |
class Smarty_Internal_Runtime_TplFunction |
{ |
/** |
* Call template function |
* |
* @param \Smarty_Internal_Template $tpl template object |
* @param string $name template function name |
* @param array $params parameter array |
* @param bool $nocache true if called nocache |
* |
* @throws \SmartyException |
*/ |
public function callTemplateFunction(Smarty_Internal_Template $tpl, $name, $params, $nocache) |
{ |
$funcParam = isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] : |
(isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : null); |
if (isset($funcParam)) { |
if (!$tpl->caching || ($tpl->caching && $nocache)) { |
$function = $funcParam[ 'call_name' ]; |
} else { |
if (isset($funcParam[ 'call_name_caching' ])) { |
$function = $funcParam[ 'call_name_caching' ]; |
} else { |
$function = $funcParam[ 'call_name' ]; |
} |
} |
if (function_exists($function)) { |
$this->saveTemplateVariables($tpl, $name); |
$function($tpl, $params); |
$this->restoreTemplateVariables($tpl, $name); |
return; |
} |
// try to load template function dynamically |
if ($this->addTplFuncToCache($tpl, $name, $function)) { |
$this->saveTemplateVariables($tpl, $name); |
$function($tpl, $params); |
$this->restoreTemplateVariables($tpl, $name); |
return; |
} |
} |
throw new SmartyException("Unable to find template function '{$name}'"); |
} |
/** |
* Register template functions defined by template |
* |
* @param \Smarty|\Smarty_Internal_Template|\Smarty_Internal_TemplateBase $obj |
* @param array $tplFunctions source information array of |
* template functions defined |
* in template |
* @param bool $override if true replace existing |
* functions with same name |
*/ |
public function registerTplFunctions(Smarty_Internal_TemplateBase $obj, $tplFunctions, $override = true) |
{ |
$obj->tplFunctions = |
$override ? array_merge($obj->tplFunctions, $tplFunctions) : array_merge($tplFunctions, $obj->tplFunctions); |
// make sure that the template functions are known in parent templates |
if ($obj->_isSubTpl()) { |
$obj->smarty->ext->_tplFunction->registerTplFunctions($obj->parent, $tplFunctions, false); |
} else { |
$obj->smarty->tplFunctions = $override ? array_merge($obj->smarty->tplFunctions, $tplFunctions) : |
array_merge($tplFunctions, $obj->smarty->tplFunctions); |
} |
} |
/** |
* Return source parameter array for single or all template functions |
* |
* @param \Smarty_Internal_Template $tpl template object |
* @param null|string $name template function name |
* |
* @return array|bool|mixed |
*/ |
public function getTplFunction(Smarty_Internal_Template $tpl, $name = null) |
{ |
if (isset($name)) { |
return isset($tpl->tplFunctions[ $name ]) ? $tpl->tplFunctions[ $name ] : |
(isset($tpl->smarty->tplFunctions[ $name ]) ? $tpl->smarty->tplFunctions[ $name ] : false); |
} else { |
return empty($tpl->tplFunctions) ? $tpl->smarty->tplFunctions : $tpl->tplFunctions; |
} |
} |
/** |
* Add template function to cache file for nocache calls |
* |
* @param Smarty_Internal_Template $tpl |
* @param string $_name template function name |
* @param string $_function PHP function name |
* |
* @return bool |
*/ |
public function addTplFuncToCache(Smarty_Internal_Template $tpl, $_name, $_function) |
{ |
$funcParam = $tpl->tplFunctions[ $_name ]; |
if (is_file($funcParam[ 'compiled_filepath' ])) { |
// read compiled file |
$code = file_get_contents($funcParam[ 'compiled_filepath' ]); |
// grab template function |
if (preg_match("/\/\* {$_function} \*\/([\S\s]*?)\/\*\/ {$_function} \*\//", $code, $match)) { |
// grab source info from file dependency |
preg_match("/\s*'{$funcParam['uid']}'([\S\s]*?)\),/", $code, $match1); |
unset($code); |
// make PHP function known |
eval($match[ 0 ]); |
if (function_exists($_function)) { |
// search cache file template |
$tplPtr = $tpl; |
while (!isset($tplPtr->cached) && isset($tplPtr->parent)) { |
$tplPtr = $tplPtr->parent; |
} |
// add template function code to cache file |
if (isset($tplPtr->cached)) { |
$content = $tplPtr->cached->read($tplPtr); |
if ($content) { |
// check if we must update file dependency |
if (!preg_match("/'{$funcParam['uid']}'(.*?)'nocache_hash'/", $content, $match2)) { |
$content = preg_replace("/('file_dependency'(.*?)\()/", "\\1{$match1[0]}", $content); |
} |
$tplPtr->smarty->ext->_updateCache->write( |
$tplPtr, |
preg_replace('/\s*\?>\s*$/', "\n", $content) . |
"\n" . preg_replace( |
array( |
'/^\s*<\?php\s+/', |
'/\s*\?>\s*$/', |
), |
"\n", |
$match[ 0 ] |
) |
); |
} |
} |
return true; |
} |
} |
} |
return false; |
} |
/** |
* Save current template variables on stack |
* |
* @param \Smarty_Internal_Template $tpl |
* @param string $name stack name |
*/ |
public function saveTemplateVariables(Smarty_Internal_Template $tpl, $name) |
{ |
$tpl->_cache[ 'varStack' ][] = |
array('tpl' => $tpl->tpl_vars, 'config' => $tpl->config_vars, 'name' => "_tplFunction_{$name}"); |
} |
/** |
* Restore saved variables into template objects |
* |
* @param \Smarty_Internal_Template $tpl |
* @param string $name stack name |
*/ |
public function restoreTemplateVariables(Smarty_Internal_Template $tpl, $name) |
{ |
if (isset($tpl->_cache[ 'varStack' ])) { |
$vars = array_pop($tpl->_cache[ 'varStack' ]); |
$tpl->tpl_vars = $vars[ 'tpl' ]; |
$tpl->config_vars = $vars[ 'config' ]; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_updatecache.php |
---|
0,0 → 1,183 |
<?php |
/** |
* Inline Runtime Methods render, setSourceByUid, setupSubTemplate |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
**/ |
class Smarty_Internal_Runtime_UpdateCache |
{ |
/** |
* check client side cache |
* |
* @param \Smarty_Template_Cached $cached |
* @param Smarty_Internal_Template $_template |
* @param string $content |
*/ |
public function cacheModifiedCheck(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $content) |
{ |
} |
/** |
* Cache was invalid , so render from compiled and write to cache |
* |
* @param \Smarty_Template_Cached $cached |
* @param \Smarty_Internal_Template $_template |
* @param $no_output_filter |
* |
* @throws \Exception |
*/ |
public function updateCache(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template, $no_output_filter) |
{ |
ob_start(); |
if (!isset($_template->compiled)) { |
$_template->loadCompiled(); |
} |
$_template->compiled->render($_template); |
if ($_template->smarty->debugging) { |
$_template->smarty->_debug->start_cache($_template); |
} |
$this->removeNoCacheHash($cached, $_template, $no_output_filter); |
$compile_check = (int)$_template->compile_check; |
$_template->compile_check = Smarty::COMPILECHECK_OFF; |
if ($_template->_isSubTpl()) { |
$_template->compiled->unifunc = $_template->parent->compiled->unifunc; |
} |
if (!$_template->cached->processed) { |
$_template->cached->process($_template, true); |
} |
$_template->compile_check = $compile_check; |
$cached->getRenderedTemplateCode($_template); |
if ($_template->smarty->debugging) { |
$_template->smarty->_debug->end_cache($_template); |
} |
} |
/** |
* Sanitize content and write it to cache resource |
* |
* @param \Smarty_Template_Cached $cached |
* @param Smarty_Internal_Template $_template |
* @param bool $no_output_filter |
* |
* @throws \SmartyException |
*/ |
public function removeNoCacheHash( |
Smarty_Template_Cached $cached, |
Smarty_Internal_Template $_template, |
$no_output_filter |
) { |
$php_pattern = '/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/'; |
$content = ob_get_clean(); |
$hash_array = $cached->hashes; |
$hash_array[ $_template->compiled->nocache_hash ] = true; |
$hash_array = array_keys($hash_array); |
$nocache_hash = '(' . implode('|', $hash_array) . ')'; |
$_template->cached->has_nocache_code = false; |
// get text between non-cached items |
$cache_split = |
preg_split( |
"!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s", |
$content |
); |
// get non-cached items |
preg_match_all( |
"!/\*%%SmartyNocache:{$nocache_hash}%%\*\/(.+?)/\*/%%SmartyNocache:{$nocache_hash}%%\*/!s", |
$content, |
$cache_parts |
); |
$content = ''; |
// loop over items, stitch back together |
foreach ($cache_split as $curr_idx => $curr_split) { |
if (preg_match($php_pattern, $curr_split)) { |
// escape PHP tags in template content |
$php_split = preg_split( |
$php_pattern, |
$curr_split |
); |
preg_match_all( |
$php_pattern, |
$curr_split, |
$php_parts |
); |
foreach ($php_split as $idx_php => $curr_php) { |
$content .= $curr_php; |
if (isset($php_parts[ 0 ][ $idx_php ])) { |
$content .= "<?php echo '{$php_parts[ 1 ][ $idx_php ]}'; ?>\n"; |
} |
} |
} else { |
$content .= $curr_split; |
} |
if (isset($cache_parts[ 0 ][ $curr_idx ])) { |
$_template->cached->has_nocache_code = true; |
$content .= $cache_parts[ 2 ][ $curr_idx ]; |
} |
} |
if (!$no_output_filter && !$_template->cached->has_nocache_code |
&& (isset($_template->smarty->autoload_filters[ 'output' ]) |
|| isset($_template->smarty->registered_filters[ 'output' ])) |
) { |
$content = $_template->smarty->ext->_filterHandler->runFilter('output', $content, $_template); |
} |
// write cache file content |
$this->writeCachedContent($_template, $content); |
} |
/** |
* Writes the content to cache resource |
* |
* @param Smarty_Internal_Template $_template |
* @param string $content |
* |
* @return bool |
*/ |
public function writeCachedContent(Smarty_Internal_Template $_template, $content) |
{ |
if ($_template->source->handler->recompiled || !$_template->caching |
) { |
// don't write cache file |
return false; |
} |
if (!isset($_template->cached)) { |
$_template->loadCached(); |
} |
$content = $_template->smarty->ext->_codeFrame->create($_template, $content, '', true); |
return $this->write($_template, $content); |
} |
/** |
* Write this cache object to handler |
* |
* @param Smarty_Internal_Template $_template template object |
* @param string $content content to cache |
* |
* @return bool success |
*/ |
public function write(Smarty_Internal_Template $_template, $content) |
{ |
if (!$_template->source->handler->recompiled) { |
$cached = $_template->cached; |
if ($cached->handler->writeCachedContent($_template, $content)) { |
$cached->content = null; |
$cached->timestamp = time(); |
$cached->exists = true; |
$cached->valid = true; |
$cached->cache_lifetime = $_template->cache_lifetime; |
$cached->processed = false; |
if ($_template->smarty->cache_locking) { |
$cached->handler->releaseLock($_template->smarty, $cached); |
} |
return true; |
} |
$cached->content = null; |
$cached->timestamp = false; |
$cached->exists = false; |
$cached->valid = false; |
$cached->processed = false; |
} |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_updatescope.php |
---|
0,0 → 1,115 |
<?php |
/** |
* Runtime Extension updateScope |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
**/ |
class Smarty_Internal_Runtime_UpdateScope |
{ |
/** |
* Update new assigned template or config variable in other effected scopes |
* |
* @param Smarty_Internal_Template $tpl data object |
* @param string|null $varName variable name |
* @param int $tagScope tag scope to which bubble up variable value |
*/ |
public function _updateScope(Smarty_Internal_Template $tpl, $varName, $tagScope = 0) |
{ |
if ($tagScope) { |
$this->_updateVarStack($tpl, $varName); |
$tagScope = $tagScope & ~Smarty::SCOPE_LOCAL; |
if (!$tpl->scope && !$tagScope) { |
return; |
} |
} |
$mergedScope = $tagScope | $tpl->scope; |
if ($mergedScope) { |
if ($mergedScope & Smarty::SCOPE_GLOBAL && $varName) { |
Smarty::$global_tpl_vars[ $varName ] = $tpl->tpl_vars[ $varName ]; |
} |
// update scopes |
foreach ($this->_getAffectedScopes($tpl, $mergedScope) as $ptr) { |
$this->_updateVariableInOtherScope($ptr->tpl_vars, $tpl, $varName); |
if ($tagScope && $ptr->_isTplObj() && isset($tpl->_cache[ 'varStack' ])) { |
$this->_updateVarStack($ptr, $varName); |
} |
} |
} |
} |
/** |
* Get array of objects which needs to be updated by given scope value |
* |
* @param Smarty_Internal_Template $tpl |
* @param int $mergedScope merged tag and template scope to which bubble up variable value |
* |
* @return array |
*/ |
public function _getAffectedScopes(Smarty_Internal_Template $tpl, $mergedScope) |
{ |
$_stack = array(); |
$ptr = $tpl->parent; |
if ($mergedScope && isset($ptr) && $ptr->_isTplObj()) { |
$_stack[] = $ptr; |
$mergedScope = $mergedScope & ~Smarty::SCOPE_PARENT; |
if (!$mergedScope) { |
// only parent was set, we are done |
return $_stack; |
} |
$ptr = $ptr->parent; |
} |
while (isset($ptr) && $ptr->_isTplObj()) { |
$_stack[] = $ptr; |
$ptr = $ptr->parent; |
} |
if ($mergedScope & Smarty::SCOPE_SMARTY) { |
if (isset($tpl->smarty)) { |
$_stack[] = $tpl->smarty; |
} |
} elseif ($mergedScope & Smarty::SCOPE_ROOT) { |
while (isset($ptr)) { |
if (!$ptr->_isTplObj()) { |
$_stack[] = $ptr; |
break; |
} |
$ptr = $ptr->parent; |
} |
} |
return $_stack; |
} |
/** |
* Update variable in other scope |
* |
* @param array $tpl_vars template variable array |
* @param \Smarty_Internal_Template $from |
* @param string $varName variable name |
*/ |
public function _updateVariableInOtherScope(&$tpl_vars, Smarty_Internal_Template $from, $varName) |
{ |
if (!isset($tpl_vars[ $varName ])) { |
$tpl_vars[ $varName ] = clone $from->tpl_vars[ $varName ]; |
} else { |
$tpl_vars[ $varName ] = clone $tpl_vars[ $varName ]; |
$tpl_vars[ $varName ]->value = $from->tpl_vars[ $varName ]->value; |
} |
} |
/** |
* Update variable in template local variable stack |
* |
* @param \Smarty_Internal_Template $tpl |
* @param string|null $varName variable name or null for config variables |
*/ |
public function _updateVarStack(Smarty_Internal_Template $tpl, $varName) |
{ |
$i = 0; |
while (isset($tpl->_cache[ 'varStack' ][ $i ])) { |
$this->_updateVariableInOtherScope($tpl->_cache[ 'varStack' ][ $i ][ 'tpl' ], $tpl, $varName); |
$i++; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_runtime_writefile.php |
---|
0,0 → 1,100 |
<?php |
/** |
* Smarty write file plugin |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Monte Ohrt |
*/ |
/** |
* Smarty Internal Write File Class |
* |
* @package Smarty |
* @subpackage PluginsInternal |
*/ |
class Smarty_Internal_Runtime_WriteFile |
{ |
/** |
* Writes file in a safe way to disk |
* |
* @param string $_filepath complete filepath |
* @param string $_contents file content |
* @param Smarty $smarty smarty instance |
* |
* @throws SmartyException |
* @return boolean true |
*/ |
public function writeFile($_filepath, $_contents, Smarty $smarty) |
{ |
$_error_reporting = error_reporting(); |
error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING); |
$_file_perms = property_exists($smarty, '_file_perms') ? $smarty->_file_perms : 0644; |
$_dir_perms = |
property_exists($smarty, '_dir_perms') ? (isset($smarty->_dir_perms) ? $smarty->_dir_perms : 0777) : 0771; |
if ($_file_perms !== null) { |
$old_umask = umask(0); |
} |
$_dirpath = dirname($_filepath); |
// if subdirs, create dir structure |
if ($_dirpath !== '.') { |
$i = 0; |
// loop if concurrency problem occurs |
// see https://bugs.php.net/bug.php?id=35326 |
while (!is_dir($_dirpath)) { |
if (@mkdir($_dirpath, $_dir_perms, true)) { |
break; |
} |
clearstatcache(); |
if (++$i === 3) { |
error_reporting($_error_reporting); |
throw new SmartyException("unable to create directory {$_dirpath}"); |
} |
sleep(1); |
} |
} |
// write to tmp file, then move to overt file lock race condition |
$_tmp_file = $_dirpath . DIRECTORY_SEPARATOR . str_replace(array('.', ','), '_', uniqid('wrt', true)); |
if (!file_put_contents($_tmp_file, $_contents)) { |
error_reporting($_error_reporting); |
throw new SmartyException("unable to write file {$_tmp_file}"); |
} |
/* |
* Windows' rename() fails if the destination exists, |
* Linux' rename() properly handles the overwrite. |
* Simply unlink()ing a file might cause other processes |
* currently reading that file to fail, but linux' rename() |
* seems to be smart enough to handle that for us. |
*/ |
if (Smarty::$_IS_WINDOWS) { |
// remove original file |
if (is_file($_filepath)) { |
@unlink($_filepath); |
} |
// rename tmp file |
$success = @rename($_tmp_file, $_filepath); |
} else { |
// rename tmp file |
$success = @rename($_tmp_file, $_filepath); |
if (!$success) { |
// remove original file |
if (is_file($_filepath)) { |
@unlink($_filepath); |
} |
// rename tmp file |
$success = @rename($_tmp_file, $_filepath); |
} |
} |
if (!$success) { |
error_reporting($_error_reporting); |
throw new SmartyException("unable to write file {$_filepath}"); |
} |
if ($_file_perms !== null) { |
// set file permissions |
chmod($_filepath, $_file_perms); |
umask($old_umask); |
} |
error_reporting($_error_reporting); |
return true; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php |
---|
0,0 → 1,184 |
<?php |
/** |
* Smarty Internal Plugin Smarty Template Compiler Base |
* This file contains the basic classes and methods for compiling Smarty templates with lexer/parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Class SmartyTemplateCompiler |
* |
* @package Smarty |
* @subpackage Compiler |
*/ |
class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase |
{ |
/** |
* Lexer class name |
* |
* @var string |
*/ |
public $lexer_class; |
/** |
* Parser class name |
* |
* @var string |
*/ |
public $parser_class; |
/** |
* array of vars which can be compiled in local scope |
* |
* @var array |
*/ |
public $local_var = array(); |
/** |
* array of callbacks called when the normal compile process of template is finished |
* |
* @var array |
*/ |
public $postCompileCallbacks = array(); |
/** |
* prefix code |
* |
* @var string |
*/ |
public $prefixCompiledCode = ''; |
/** |
* postfix code |
* |
* @var string |
*/ |
public $postfixCompiledCode = ''; |
/** |
* Initialize compiler |
* |
* @param string $lexer_class class name |
* @param string $parser_class class name |
* @param Smarty $smarty global instance |
*/ |
public function __construct($lexer_class, $parser_class, Smarty $smarty) |
{ |
parent::__construct($smarty); |
// get required plugins |
$this->lexer_class = $lexer_class; |
$this->parser_class = $parser_class; |
} |
/** |
* method to compile a Smarty template |
* |
* @param mixed $_content template source |
* @param bool $isTemplateSource |
* |
* @return bool true if compiling succeeded, false if it failed |
* @throws \SmartyCompilerException |
*/ |
protected function doCompile($_content, $isTemplateSource = false) |
{ |
/* here is where the compiling takes place. Smarty |
tags in the templates are replaces with PHP code, |
then written to compiled files. */ |
// init the lexer/parser to compile the template |
$this->parser = |
new $this->parser_class( |
new $this->lexer_class( |
str_replace( |
array( |
"\r\n", |
"\r" |
), |
"\n", |
$_content |
), |
$this |
), |
$this |
); |
if ($isTemplateSource && $this->template->caching) { |
$this->parser->insertPhpCode("<?php\n\$_smarty_tpl->compiled->nocache_hash = '{$this->nocache_hash}';\n?>\n"); |
} |
if (function_exists('mb_internal_encoding') |
&& function_exists('ini_get') |
&& ((int)ini_get('mbstring.func_overload')) & 2 |
) { |
$mbEncoding = mb_internal_encoding(); |
mb_internal_encoding('ASCII'); |
} else { |
$mbEncoding = null; |
} |
if ($this->smarty->_parserdebug) { |
$this->parser->PrintTrace(); |
$this->parser->lex->PrintTrace(); |
} |
// get tokens from lexer and parse them |
while ($this->parser->lex->yylex()) { |
if ($this->smarty->_parserdebug) { |
echo "<pre>Line {$this->parser->lex->line} Parsing {$this->parser->yyTokenName[$this->parser->lex->token]} Token " . |
htmlentities($this->parser->lex->value) . "</pre>"; |
} |
$this->parser->doParse($this->parser->lex->token, $this->parser->lex->value); |
} |
// finish parsing process |
$this->parser->doParse(0, 0); |
if ($mbEncoding) { |
mb_internal_encoding($mbEncoding); |
} |
// check for unclosed tags |
if (count($this->_tag_stack) > 0) { |
// get stacked info |
list($openTag, $_data) = array_pop($this->_tag_stack); |
$this->trigger_template_error( |
"unclosed {$this->smarty->left_delimiter}" . $openTag . |
"{$this->smarty->right_delimiter} tag" |
); |
} |
// call post compile callbacks |
foreach ($this->postCompileCallbacks as $cb) { |
$parameter = $cb; |
$parameter[ 0 ] = $this; |
call_user_func_array($cb[ 0 ], $parameter); |
} |
// return compiled code |
return $this->prefixCompiledCode . $this->parser->retvalue . $this->postfixCompiledCode; |
} |
/** |
* Register a post compile callback |
* - when the callback is called after template compiling the compiler object will be inserted as first parameter |
* |
* @param callback $callback |
* @param array $parameter optional parameter array |
* @param string $key optional key for callback |
* @param bool $replace if true replace existing keyed callback |
*/ |
public function registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false) |
{ |
array_unshift($parameter, $callback); |
if (isset($key)) { |
if ($replace || !isset($this->postCompileCallbacks[ $key ])) { |
$this->postCompileCallbacks[ $key ] = $parameter; |
} |
} else { |
$this->postCompileCallbacks[] = $parameter; |
} |
} |
/** |
* Remove a post compile callback |
* |
* @param string $key callback key |
*/ |
public function unregisterPostCompileCallback($key) |
{ |
unset($this->postCompileCallbacks[ $key ]); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_template.php |
---|
0,0 → 1,740 |
<?php |
/** |
* Smarty Internal Plugin Template |
* This file contains the Smarty template engine |
* |
* @package Smarty |
* @subpackage Template |
* @author Uwe Tews |
*/ |
/** |
* Main class with template data structures and methods |
* |
* @package Smarty |
* @subpackage Template |
* |
* @property Smarty_Template_Compiled $compiled |
* @property Smarty_Template_Cached $cached |
* @property Smarty_Internal_TemplateCompilerBase $compiler |
* @property mixed|\Smarty_Template_Cached registered_plugins |
* |
* The following methods will be dynamically loaded by the extension handler when they are called. |
* They are located in a corresponding Smarty_Internal_Method_xxxx class |
* |
* @method bool mustCompile() |
*/ |
class Smarty_Internal_Template extends Smarty_Internal_TemplateBase |
{ |
/** |
* Template object cache |
* |
* @var Smarty_Internal_Template[] |
*/ |
public static $tplObjCache = array(); |
/** |
* Template object cache for Smarty::isCached() === true |
* |
* @var Smarty_Internal_Template[] |
*/ |
public static $isCacheTplObj = array(); |
/** |
* Sub template Info Cache |
* - index name |
* - value use count |
* |
* @var int[] |
*/ |
public static $subTplInfo = array(); |
/** |
* This object type (Smarty = 1, template = 2, data = 4) |
* |
* @var int |
*/ |
public $_objType = 2; |
/** |
* Global smarty instance |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* Source instance |
* |
* @var Smarty_Template_Source|Smarty_Template_Config |
*/ |
public $source = null; |
/** |
* Inheritance runtime extension |
* |
* @var Smarty_Internal_Runtime_Inheritance |
*/ |
public $inheritance = null; |
/** |
* Template resource |
* |
* @var string |
*/ |
public $template_resource = null; |
/** |
* flag if compiled template is invalid and must be (re)compiled |
* |
* @var bool |
*/ |
public $mustCompile = null; |
/** |
* Template Id |
* |
* @var null|string |
*/ |
public $templateId = null; |
/** |
* Scope in which variables shall be assigned |
* |
* @var int |
*/ |
public $scope = 0; |
/** |
* Flag which is set while rending a cache file |
* |
* @var bool |
*/ |
public $isRenderingCache = false; |
/** |
* Callbacks called before rendering template |
* |
* @var callback[] |
*/ |
public $startRenderCallbacks = array(); |
/** |
* Callbacks called after rendering template |
* |
* @var callback[] |
*/ |
public $endRenderCallbacks = array(); |
/** |
* Create template data object |
* Some of the global Smarty settings copied to template scope |
* It load the required template resources and caching plugins |
* |
* @param string $template_resource template resource string |
* @param Smarty $smarty Smarty instance |
* @param null|\Smarty_Internal_Template|\Smarty|\Smarty_Internal_Data $_parent back pointer to parent |
* object with variables or |
* null |
* @param mixed $_cache_id cache id or null |
* @param mixed $_compile_id compile id or null |
* @param bool|int|null $_caching use caching? |
* @param int|null $_cache_lifetime cache life-time in |
* seconds |
* @param bool $_isConfig |
* |
* @throws \SmartyException |
*/ |
public function __construct( |
$template_resource, |
Smarty $smarty, |
Smarty_Internal_Data $_parent = null, |
$_cache_id = null, |
$_compile_id = null, |
$_caching = null, |
$_cache_lifetime = null, |
$_isConfig = false |
) { |
$this->smarty = $smarty; |
// Smarty parameter |
$this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id; |
$this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id; |
$this->caching = (int)($_caching === null ? $this->smarty->caching : $_caching); |
$this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime; |
$this->compile_check = (int)$smarty->compile_check; |
$this->parent = $_parent; |
// Template resource |
$this->template_resource = $template_resource; |
$this->source = $_isConfig ? Smarty_Template_Config::load($this) : Smarty_Template_Source::load($this); |
parent::__construct(); |
if ($smarty->security_policy && method_exists($smarty->security_policy, 'registerCallBacks')) { |
$smarty->security_policy->registerCallBacks($this); |
} |
} |
/** |
* render template |
* |
* @param bool $no_output_filter if true do not run output filter |
* @param null|bool $display true: display, false: fetch null: sub-template |
* |
* @return string |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function render($no_output_filter = true, $display = null) |
{ |
if ($this->smarty->debugging) { |
if (!isset($this->smarty->_debug)) { |
$this->smarty->_debug = new Smarty_Internal_Debug(); |
} |
$this->smarty->_debug->start_template($this, $display); |
} |
// checks if template exists |
if (!$this->source->exists) { |
throw new SmartyException( |
"Unable to load template '{$this->source->type}:{$this->source->name}'" . |
($this->_isSubTpl() ? " in '{$this->parent->template_resource}'" : '') |
); |
} |
// disable caching for evaluated code |
if ($this->source->handler->recompiled) { |
$this->caching = Smarty::CACHING_OFF; |
} |
// read from cache or render |
if ($this->caching === Smarty::CACHING_LIFETIME_CURRENT || $this->caching === Smarty::CACHING_LIFETIME_SAVED) { |
if (!isset($this->cached) || $this->cached->cache_id !== $this->cache_id |
|| $this->cached->compile_id !== $this->compile_id |
) { |
$this->loadCached(true); |
} |
$this->cached->render($this, $no_output_filter); |
} else { |
if (!isset($this->compiled) || $this->compiled->compile_id !== $this->compile_id) { |
$this->loadCompiled(true); |
} |
$this->compiled->render($this); |
} |
// display or fetch |
if ($display) { |
if ($this->caching && $this->smarty->cache_modified_check) { |
$this->smarty->ext->_cacheModify->cacheModifiedCheck( |
$this->cached, |
$this, |
isset($content) ? $content : ob_get_clean() |
); |
} else { |
if ((!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) |
&& !$no_output_filter && (isset($this->smarty->autoload_filters[ 'output' ]) |
|| isset($this->smarty->registered_filters[ 'output' ])) |
) { |
echo $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this); |
} else { |
echo ob_get_clean(); |
} |
} |
if ($this->smarty->debugging) { |
$this->smarty->_debug->end_template($this); |
// debug output |
$this->smarty->_debug->display_debug($this, true); |
} |
return ''; |
} else { |
if ($this->smarty->debugging) { |
$this->smarty->_debug->end_template($this); |
if ($this->smarty->debugging === 2 && $display === false) { |
$this->smarty->_debug->display_debug($this, true); |
} |
} |
if (!$no_output_filter |
&& (!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) |
&& (isset($this->smarty->autoload_filters[ 'output' ]) |
|| isset($this->smarty->registered_filters[ 'output' ])) |
) { |
return $this->smarty->ext->_filterHandler->runFilter('output', ob_get_clean(), $this); |
} |
// return cache content |
return null; |
} |
} |
/** |
* Runtime function to render sub-template |
* |
* @param string $template template name |
* @param mixed $cache_id cache id |
* @param mixed $compile_id compile id |
* @param integer $caching cache mode |
* @param integer $cache_lifetime life time of cache data |
* @param array $data passed parameter template variables |
* @param int $scope scope in which {include} should execute |
* @param bool $forceTplCache cache template object |
* @param string $uid file dependency uid |
* @param string $content_func function name |
* |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function _subTemplateRender( |
$template, |
$cache_id, |
$compile_id, |
$caching, |
$cache_lifetime, |
$data, |
$scope, |
$forceTplCache, |
$uid = null, |
$content_func = null |
) { |
$tpl = clone $this; |
$tpl->parent = $this; |
$smarty = &$this->smarty; |
$_templateId = $smarty->_getTemplateId($template, $cache_id, $compile_id, $caching, $tpl); |
// recursive call ? |
if (isset($tpl->templateId) ? $tpl->templateId : $tpl->_getTemplateId() !== $_templateId) { |
// already in template cache? |
if (isset(self::$tplObjCache[ $_templateId ])) { |
// copy data from cached object |
$cachedTpl = &self::$tplObjCache[ $_templateId ]; |
$tpl->templateId = $cachedTpl->templateId; |
$tpl->template_resource = $cachedTpl->template_resource; |
$tpl->cache_id = $cachedTpl->cache_id; |
$tpl->compile_id = $cachedTpl->compile_id; |
$tpl->source = $cachedTpl->source; |
if (isset($cachedTpl->compiled)) { |
$tpl->compiled = $cachedTpl->compiled; |
} else { |
unset($tpl->compiled); |
} |
if ($caching !== 9999 && isset($cachedTpl->cached)) { |
$tpl->cached = $cachedTpl->cached; |
} else { |
unset($tpl->cached); |
} |
} else { |
$tpl->templateId = $_templateId; |
$tpl->template_resource = $template; |
$tpl->cache_id = $cache_id; |
$tpl->compile_id = $compile_id; |
if (isset($uid)) { |
// for inline templates we can get all resource information from file dependency |
list($filepath, $timestamp, $type) = $tpl->compiled->file_dependency[ $uid ]; |
$tpl->source = new Smarty_Template_Source($smarty, $filepath, $type, $filepath); |
$tpl->source->filepath = $filepath; |
$tpl->source->timestamp = $timestamp; |
$tpl->source->exists = true; |
$tpl->source->uid = $uid; |
} else { |
$tpl->source = Smarty_Template_Source::load($tpl); |
unset($tpl->compiled); |
} |
if ($caching !== 9999) { |
unset($tpl->cached); |
} |
} |
} else { |
// on recursive calls force caching |
$forceTplCache = true; |
} |
$tpl->caching = $caching; |
$tpl->cache_lifetime = $cache_lifetime; |
// set template scope |
$tpl->scope = $scope; |
if (!isset(self::$tplObjCache[ $tpl->templateId ]) && !$tpl->source->handler->recompiled) { |
// check if template object should be cached |
if ($forceTplCache || (isset(self::$subTplInfo[ $tpl->template_resource ]) |
&& self::$subTplInfo[ $tpl->template_resource ] > 1) |
|| ($tpl->_isSubTpl() && isset(self::$tplObjCache[ $tpl->parent->templateId ])) |
) { |
self::$tplObjCache[ $tpl->templateId ] = $tpl; |
} |
} |
if (!empty($data)) { |
// set up variable values |
foreach ($data as $_key => $_val) { |
$tpl->tpl_vars[ $_key ] = new Smarty_Variable($_val, $this->isRenderingCache); |
} |
} |
if ($tpl->caching === 9999) { |
if (!isset($tpl->compiled)) { |
$this->loadCompiled(true); |
} |
if ($tpl->compiled->has_nocache_code) { |
$this->cached->hashes[ $tpl->compiled->nocache_hash ] = true; |
} |
} |
$tpl->_cache = array(); |
if (isset($uid)) { |
if ($smarty->debugging) { |
if (!isset($smarty->_debug)) { |
$smarty->_debug = new Smarty_Internal_Debug(); |
} |
$smarty->_debug->start_template($tpl); |
$smarty->_debug->start_render($tpl); |
} |
$tpl->compiled->getRenderedTemplateCode($tpl, $content_func); |
if ($smarty->debugging) { |
$smarty->_debug->end_template($tpl); |
$smarty->_debug->end_render($tpl); |
} |
} else { |
if (isset($tpl->compiled)) { |
$tpl->compiled->render($tpl); |
} else { |
$tpl->render(); |
} |
} |
} |
/** |
* Get called sub-templates and save call count |
*/ |
public function _subTemplateRegister() |
{ |
foreach ($this->compiled->includes as $name => $count) { |
if (isset(self::$subTplInfo[ $name ])) { |
self::$subTplInfo[ $name ] += $count; |
} else { |
self::$subTplInfo[ $name ] = $count; |
} |
} |
} |
/** |
* Check if this is a sub template |
* |
* @return bool true is sub template |
*/ |
public function _isSubTpl() |
{ |
return isset($this->parent) && $this->parent->_isTplObj(); |
} |
/** |
* Assign variable in scope |
* |
* @param string $varName variable name |
* @param mixed $value value |
* @param bool $nocache nocache flag |
* @param int $scope scope into which variable shall be assigned |
*/ |
public function _assignInScope($varName, $value, $nocache = false, $scope = 0) |
{ |
if (isset($this->tpl_vars[ $varName ])) { |
$this->tpl_vars[ $varName ] = clone $this->tpl_vars[ $varName ]; |
$this->tpl_vars[ $varName ]->value = $value; |
if ($nocache || $this->isRenderingCache) { |
$this->tpl_vars[ $varName ]->nocache = true; |
} |
} else { |
$this->tpl_vars[ $varName ] = new Smarty_Variable($value, $nocache || $this->isRenderingCache); |
} |
if ($scope >= 0) { |
if ($scope > 0 || $this->scope > 0) { |
$this->smarty->ext->_updateScope->_updateScope($this, $varName, $scope); |
} |
} |
} |
/** |
* Check if plugins are callable require file otherwise |
* |
* @param array $plugins required plugins |
* |
* @throws \SmartyException |
*/ |
public function _checkPlugins($plugins) |
{ |
static $checked = array(); |
foreach ($plugins as $plugin) { |
$name = join('::', (array)$plugin[ 'function' ]); |
if (!isset($checked[ $name ])) { |
if (!is_callable($plugin[ 'function' ])) { |
if (is_file($plugin[ 'file' ])) { |
include_once $plugin[ 'file' ]; |
if (is_callable($plugin[ 'function' ])) { |
$checked[ $name ] = true; |
} |
} |
} else { |
$checked[ $name ] = true; |
} |
} |
if (!isset($checked[ $name ])) { |
if (false !== $this->smarty->loadPlugin($name)) { |
$checked[ $name ] = true; |
} else { |
throw new SmartyException("Plugin '{$name}' not callable"); |
} |
} |
} |
} |
/** |
* This function is executed automatically when a compiled or cached template file is included |
* - Decode saved properties from compiled template and cache files |
* - Check if compiled or cache file is valid |
* |
* @param \Smarty_Internal_Template $tpl |
* @param array $properties special template properties |
* @param bool $cache flag if called from cache file |
* |
* @return bool flag if compiled or cache file is valid |
* @throws \SmartyException |
*/ |
public function _decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false) |
{ |
// on cache resources other than file check version stored in cache code |
if (!isset($properties[ 'version' ]) || Smarty::SMARTY_VERSION !== $properties[ 'version' ]) { |
if ($cache) { |
$tpl->smarty->clearAllCache(); |
} else { |
$tpl->smarty->clearCompiledTemplate(); |
} |
return false; |
} |
$is_valid = true; |
if (!empty($properties[ 'file_dependency' ]) |
&& ((!$cache && $tpl->compile_check) || $tpl->compile_check === Smarty::COMPILECHECK_ON) |
) { |
// check file dependencies at compiled code |
foreach ($properties[ 'file_dependency' ] as $_file_to_check) { |
if ($_file_to_check[ 2 ] === 'file' || $_file_to_check[ 2 ] === 'php') { |
if ($tpl->source->filepath === $_file_to_check[ 0 ]) { |
// do not recheck current template |
continue; |
//$mtime = $tpl->source->getTimeStamp(); |
} else { |
// file and php types can be checked without loading the respective resource handlers |
$mtime = is_file($_file_to_check[ 0 ]) ? filemtime($_file_to_check[ 0 ]) : false; |
} |
} else { |
$handler = Smarty_Resource::load($tpl->smarty, $_file_to_check[ 2 ]); |
if ($handler->checkTimestamps()) { |
$source = Smarty_Template_Source::load($tpl, $tpl->smarty, $_file_to_check[ 0 ]); |
$mtime = $source->getTimeStamp(); |
} else { |
continue; |
} |
} |
if ($mtime === false || $mtime > $_file_to_check[ 1 ]) { |
$is_valid = false; |
break; |
} |
} |
} |
if ($cache) { |
// CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc |
if ($tpl->caching === Smarty::CACHING_LIFETIME_SAVED && $properties[ 'cache_lifetime' ] >= 0 |
&& (time() > ($tpl->cached->timestamp + $properties[ 'cache_lifetime' ])) |
) { |
$is_valid = false; |
} |
$tpl->cached->cache_lifetime = $properties[ 'cache_lifetime' ]; |
$tpl->cached->valid = $is_valid; |
$resource = $tpl->cached; |
} else { |
$tpl->mustCompile = !$is_valid; |
$resource = $tpl->compiled; |
$resource->includes = isset($properties[ 'includes' ]) ? $properties[ 'includes' ] : array(); |
} |
if ($is_valid) { |
$resource->unifunc = $properties[ 'unifunc' ]; |
$resource->has_nocache_code = $properties[ 'has_nocache_code' ]; |
// $tpl->compiled->nocache_hash = $properties['nocache_hash']; |
$resource->file_dependency = $properties[ 'file_dependency' ]; |
} |
return $is_valid && !function_exists($properties[ 'unifunc' ]); |
} |
/** |
* Compiles the template |
* If the template is not evaluated the compiled template is saved on disk |
* |
* @throws \Exception |
*/ |
public function compileTemplateSource() |
{ |
return $this->compiled->compileTemplateSource($this); |
} |
/** |
* Writes the content to cache resource |
* |
* @param string $content |
* |
* @return bool |
*/ |
public function writeCachedContent($content) |
{ |
return $this->smarty->ext->_updateCache->writeCachedContent($this, $content); |
} |
/** |
* Get unique template id |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function _getTemplateId() |
{ |
return isset($this->templateId) ? $this->templateId : $this->templateId = |
$this->smarty->_getTemplateId($this->template_resource, $this->cache_id, $this->compile_id); |
} |
/** |
* runtime error not matching capture tags |
* |
* @throws \SmartyException |
*/ |
public function capture_error() |
{ |
throw new SmartyException("Not matching {capture} open/close in '{$this->template_resource}'"); |
} |
/** |
* Load compiled object |
* |
* @param bool $force force new compiled object |
*/ |
public function loadCompiled($force = false) |
{ |
if ($force || !isset($this->compiled)) { |
$this->compiled = Smarty_Template_Compiled::load($this); |
} |
} |
/** |
* Load cached object |
* |
* @param bool $force force new cached object |
*/ |
public function loadCached($force = false) |
{ |
if ($force || !isset($this->cached)) { |
$this->cached = Smarty_Template_Cached::load($this); |
} |
} |
/** |
* Load inheritance object |
*/ |
public function _loadInheritance() |
{ |
if (!isset($this->inheritance)) { |
$this->inheritance = new Smarty_Internal_Runtime_Inheritance(); |
} |
} |
/** |
* Unload inheritance object |
*/ |
public function _cleanUp() |
{ |
$this->startRenderCallbacks = array(); |
$this->endRenderCallbacks = array(); |
$this->inheritance = null; |
} |
/** |
* Load compiler object |
* |
* @throws \SmartyException |
*/ |
public function loadCompiler() |
{ |
if (!class_exists($this->source->compiler_class)) { |
$this->smarty->loadPlugin($this->source->compiler_class); |
} |
$this->compiler = |
new $this->source->compiler_class( |
$this->source->template_lexer_class, |
$this->source->template_parser_class, |
$this->smarty |
); |
} |
/** |
* Handle unknown class methods |
* |
* @param string $name unknown method-name |
* @param array $args argument array |
* |
* @return mixed |
*/ |
public function __call($name, $args) |
{ |
// method of Smarty object? |
if (method_exists($this->smarty, $name)) { |
return call_user_func_array(array($this->smarty, $name), $args); |
} |
// parent |
return parent::__call($name, $args); |
} |
/** |
* get Smarty property in template context |
* |
* @param string $property_name property name |
* |
* @return mixed|Smarty_Template_Cached |
* @throws SmartyException |
*/ |
public function __get($property_name) |
{ |
switch ($property_name) { |
case 'compiled': |
$this->loadCompiled(); |
return $this->compiled; |
case 'cached': |
$this->loadCached(); |
return $this->cached; |
case 'compiler': |
$this->loadCompiler(); |
return $this->compiler; |
default: |
// Smarty property ? |
if (property_exists($this->smarty, $property_name)) { |
return $this->smarty->$property_name; |
} |
} |
throw new SmartyException("template property '$property_name' does not exist."); |
} |
/** |
* set Smarty property in template context |
* |
* @param string $property_name property name |
* @param mixed $value value |
* |
* @throws SmartyException |
*/ |
public function __set($property_name, $value) |
{ |
switch ($property_name) { |
case 'compiled': |
case 'cached': |
case 'compiler': |
$this->$property_name = $value; |
return; |
default: |
// Smarty property ? |
if (property_exists($this->smarty, $property_name)) { |
$this->smarty->$property_name = $value; |
return; |
} |
} |
throw new SmartyException("invalid template property '$property_name'."); |
} |
/** |
* Template data object destructor |
*/ |
public function __destruct() |
{ |
if ($this->smarty->cache_locking && isset($this->cached) && $this->cached->is_locked) { |
$this->cached->handler->releaseLock($this->smarty, $this->cached); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_templatebase.php |
---|
0,0 → 1,386 |
<?php |
/** |
* Smarty Internal Plugin Smarty Template Base |
* This file contains the basic shared methods for template handling |
* |
* @package Smarty |
* @subpackage Template |
* @author Uwe Tews |
*/ |
/** |
* Class with shared smarty/template methods |
* |
* @package Smarty |
* @subpackage Template |
* |
* @property int $_objType |
* |
* The following methods will be dynamically loaded by the extension handler when they are called. |
* They are located in a corresponding Smarty_Internal_Method_xxxx class |
* |
* @method Smarty_Internal_TemplateBase addAutoloadFilters(mixed $filters, string $type = null) |
* @method Smarty_Internal_TemplateBase addDefaultModifiers(mixed $modifiers) |
* @method Smarty_Internal_TemplateBase addLiterals(mixed $literals) |
* @method Smarty_Internal_TemplateBase createData(Smarty_Internal_Data $parent = null, string $name = null) |
* @method array getAutoloadFilters(string $type = null) |
* @method string getDebugTemplate() |
* @method array getDefaultModifier() |
* @method array getLiterals() |
* @method array getTags(mixed $template = null) |
* @method object getRegisteredObject(string $object_name) |
* @method Smarty_Internal_TemplateBase registerCacheResource(string $name, Smarty_CacheResource $resource_handler) |
* @method Smarty_Internal_TemplateBase registerClass(string $class_name, string $class_impl) |
* @method Smarty_Internal_TemplateBase registerDefaultConfigHandler(callback $callback) |
* @method Smarty_Internal_TemplateBase registerDefaultPluginHandler(callback $callback) |
* @method Smarty_Internal_TemplateBase registerDefaultTemplateHandler(callback $callback) |
* @method Smarty_Internal_TemplateBase registerResource(string $name, mixed $resource_handler) |
* @method Smarty_Internal_TemplateBase setAutoloadFilters(mixed $filters, string $type = null) |
* @method Smarty_Internal_TemplateBase setDebugTemplate(string $tpl_name) |
* @method Smarty_Internal_TemplateBase setDefaultModifiers(mixed $modifiers) |
* @method Smarty_Internal_TemplateBase setLiterals(mixed $literals) |
* @method Smarty_Internal_TemplateBase unloadFilter(string $type, string $name) |
* @method Smarty_Internal_TemplateBase unregisterCacheResource(string $name) |
* @method Smarty_Internal_TemplateBase unregisterObject(string $object_name) |
* @method Smarty_Internal_TemplateBase unregisterPlugin(string $type, string $name) |
* @method Smarty_Internal_TemplateBase unregisterFilter(string $type, mixed $callback) |
* @method Smarty_Internal_TemplateBase unregisterResource(string $name) |
*/ |
abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data |
{ |
/** |
* Set this if you want different sets of cache files for the same |
* templates. |
* |
* @var string |
*/ |
public $cache_id = null; |
/** |
* Set this if you want different sets of compiled files for the same |
* templates. |
* |
* @var string |
*/ |
public $compile_id = null; |
/** |
* caching enabled |
* |
* @var int |
*/ |
public $caching = Smarty::CACHING_OFF; |
/** |
* check template for modifications? |
* |
* @var int |
*/ |
public $compile_check = Smarty::COMPILECHECK_ON; |
/** |
* cache lifetime in seconds |
* |
* @var integer |
*/ |
public $cache_lifetime = 3600; |
/** |
* Array of source information for known template functions |
* |
* @var array |
*/ |
public $tplFunctions = array(); |
/** |
* universal cache |
* |
* @var array() |
*/ |
public $_cache = array(); |
/** |
* fetches a rendered Smarty template |
* |
* @param string $template the resource handle of the template file or template object |
* @param mixed $cache_id cache id to be used with this template |
* @param mixed $compile_id compile id to be used with this template |
* @param object $parent next higher level of Smarty variables |
* |
* @throws Exception |
* @throws SmartyException |
* @return string rendered template output |
*/ |
public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null) |
{ |
$result = $this->_execute($template, $cache_id, $compile_id, $parent, 0); |
return $result === null ? ob_get_clean() : $result; |
} |
/** |
* displays a Smarty template |
* |
* @param string $template the resource handle of the template file or template object |
* @param mixed $cache_id cache id to be used with this template |
* @param mixed $compile_id compile id to be used with this template |
* @param object $parent next higher level of Smarty variables |
* |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function display($template = null, $cache_id = null, $compile_id = null, $parent = null) |
{ |
// display template |
$this->_execute($template, $cache_id, $compile_id, $parent, 1); |
} |
/** |
* test if cache is valid |
* |
* @api Smarty::isCached() |
* @link http://www.smarty.net/docs/en/api.is.cached.tpl |
* |
* @param null|string|\Smarty_Internal_Template $template the resource handle of the template file or template |
* object |
* @param mixed $cache_id cache id to be used with this template |
* @param mixed $compile_id compile id to be used with this template |
* @param object $parent next higher level of Smarty variables |
* |
* @return bool cache status |
* @throws \Exception |
* @throws \SmartyException |
*/ |
public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null) |
{ |
return $this->_execute($template, $cache_id, $compile_id, $parent, 2); |
} |
/** |
* fetches a rendered Smarty template |
* |
* @param string $template the resource handle of the template file or template object |
* @param mixed $cache_id cache id to be used with this template |
* @param mixed $compile_id compile id to be used with this template |
* @param object $parent next higher level of Smarty variables |
* @param string $function function type 0 = fetch, 1 = display, 2 = isCache |
* |
* @return mixed |
* @throws \Exception |
* @throws \SmartyException |
*/ |
private function _execute($template, $cache_id, $compile_id, $parent, $function) |
{ |
$smarty = $this->_getSmartyObj(); |
$saveVars = true; |
if ($template === null) { |
if (!$this->_isTplObj()) { |
throw new SmartyException($function . '():Missing \'$template\' parameter'); |
} else { |
$template = $this; |
} |
} elseif (is_object($template)) { |
/* @var Smarty_Internal_Template $template */ |
if (!isset($template->_objType) || !$template->_isTplObj()) { |
throw new SmartyException($function . '():Template object expected'); |
} |
} else { |
// get template object |
$saveVars = false; |
$template = $smarty->createTemplate($template, $cache_id, $compile_id, $parent ? $parent : $this, false); |
if ($this->_objType === 1) { |
// set caching in template object |
$template->caching = $this->caching; |
} |
} |
// make sure we have integer values |
$template->caching = (int)$template->caching; |
// fetch template content |
$level = ob_get_level(); |
try { |
$_smarty_old_error_level = |
isset($smarty->error_reporting) ? error_reporting($smarty->error_reporting) : null; |
if ($this->_objType === 2) { |
/* @var Smarty_Internal_Template $this */ |
$template->tplFunctions = $this->tplFunctions; |
$template->inheritance = $this->inheritance; |
} |
/* @var Smarty_Internal_Template $parent */ |
if (isset($parent->_objType) && ($parent->_objType === 2) && !empty($parent->tplFunctions)) { |
$template->tplFunctions = array_merge($parent->tplFunctions, $template->tplFunctions); |
} |
if ($function === 2) { |
if ($template->caching) { |
// return cache status of template |
if (!isset($template->cached)) { |
$template->loadCached(); |
} |
$result = $template->cached->isCached($template); |
Smarty_Internal_Template::$isCacheTplObj[ $template->_getTemplateId() ] = $template; |
} else { |
return false; |
} |
} else { |
if ($saveVars) { |
$savedTplVars = $template->tpl_vars; |
$savedConfigVars = $template->config_vars; |
} |
ob_start(); |
$template->_mergeVars(); |
if (!empty(Smarty::$global_tpl_vars)) { |
$template->tpl_vars = array_merge(Smarty::$global_tpl_vars, $template->tpl_vars); |
} |
$result = $template->render(false, $function); |
$template->_cleanUp(); |
if ($saveVars) { |
$template->tpl_vars = $savedTplVars; |
$template->config_vars = $savedConfigVars; |
} else { |
if (!$function && !isset(Smarty_Internal_Template::$tplObjCache[ $template->templateId ])) { |
$template->parent = null; |
$template->tpl_vars = $template->config_vars = array(); |
Smarty_Internal_Template::$tplObjCache[ $template->templateId ] = $template; |
} |
} |
} |
if (isset($_smarty_old_error_level)) { |
error_reporting($_smarty_old_error_level); |
} |
return $result; |
} catch (Exception $e) { |
while (ob_get_level() > $level) { |
ob_end_clean(); |
} |
if (isset($_smarty_old_error_level)) { |
error_reporting($_smarty_old_error_level); |
} |
throw $e; |
} |
} |
/** |
* Registers plugin to be used in templates |
* |
* @api Smarty::registerPlugin() |
* @link http://www.smarty.net/docs/en/api.register.plugin.tpl |
* |
* @param string $type plugin type |
* @param string $name name of template tag |
* @param callable $callback PHP callback to register |
* @param bool $cacheable if true (default) this function is cache able |
* @param mixed $cache_attr caching attributes if any |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function registerPlugin($type, $name, $callback, $cacheable = true, $cache_attr = null) |
{ |
return $this->ext->registerPlugin->registerPlugin($this, $type, $name, $callback, $cacheable, $cache_attr); |
} |
/** |
* load a filter of specified type and name |
* |
* @api Smarty::loadFilter() |
* @link http://www.smarty.net/docs/en/api.load.filter.tpl |
* |
* @param string $type filter type |
* @param string $name filter name |
* |
* @return bool |
* @throws \SmartyException |
*/ |
public function loadFilter($type, $name) |
{ |
return $this->ext->loadFilter->loadFilter($this, $type, $name); |
} |
/** |
* Registers a filter function |
* |
* @api Smarty::registerFilter() |
* @link http://www.smarty.net/docs/en/api.register.filter.tpl |
* |
* @param string $type filter type |
* @param callable $callback |
* @param string|null $name optional filter name |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function registerFilter($type, $callback, $name = null) |
{ |
return $this->ext->registerFilter->registerFilter($this, $type, $callback, $name); |
} |
/** |
* Registers object to be used in templates |
* |
* @api Smarty::registerObject() |
* @link http://www.smarty.net/docs/en/api.register.object.tpl |
* |
* @param string $object_name |
* @param object $object the referenced PHP object to register |
* @param array $allowed_methods_properties list of allowed methods (empty = all) |
* @param bool $format smarty argument format, else traditional |
* @param array $block_methods list of block-methods |
* |
* @return \Smarty|\Smarty_Internal_Template |
* @throws \SmartyException |
*/ |
public function registerObject( |
$object_name, |
$object, |
$allowed_methods_properties = array(), |
$format = true, |
$block_methods = array() |
) { |
return $this->ext->registerObject->registerObject( |
$this, |
$object_name, |
$object, |
$allowed_methods_properties, |
$format, |
$block_methods |
); |
} |
/** |
* @param int $compile_check |
*/ |
public function setCompileCheck($compile_check) |
{ |
$this->compile_check = (int)$compile_check; |
} |
/** |
* @param int $caching |
*/ |
public function setCaching($caching) |
{ |
$this->caching = (int)$caching; |
} |
/** |
* @param int $cache_lifetime |
*/ |
public function setCacheLifetime($cache_lifetime) |
{ |
$this->cache_lifetime = $cache_lifetime; |
} |
/** |
* @param string $compile_id |
*/ |
public function setCompileId($compile_id) |
{ |
$this->compile_id = $compile_id; |
} |
/** |
* @param string $cache_id |
*/ |
public function setCacheId($cache_id) |
{ |
$this->cache_id = $cache_id; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_templatecompilerbase.php |
---|
0,0 → 1,1756 |
<?php |
/** |
* Smarty Internal Plugin Smarty Template Compiler Base |
* This file contains the basic classes and methods for compiling Smarty templates with lexer/parser |
* |
* @package Smarty |
* @subpackage Compiler |
* @author Uwe Tews |
*/ |
/** |
* Main abstract compiler class |
* |
* @package Smarty |
* @subpackage Compiler |
* |
* @property Smarty_Internal_SmartyTemplateCompiler $prefixCompiledCode = '' |
* @property Smarty_Internal_SmartyTemplateCompiler $postfixCompiledCode = '' |
* @method registerPostCompileCallback($callback, $parameter = array(), $key = null, $replace = false) |
* @method unregisterPostCompileCallback($key) |
*/ |
abstract class Smarty_Internal_TemplateCompilerBase |
{ |
/** |
* compile tag objects cache |
* |
* @var array |
*/ |
public static $_tag_objects = array(); |
/** |
* counter for prefix variable number |
* |
* @var int |
*/ |
public static $prefixVariableNumber = 0; |
/** |
* Smarty object |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* Parser object |
* |
* @var Smarty_Internal_Templateparser |
*/ |
public $parser = null; |
/** |
* hash for nocache sections |
* |
* @var mixed |
*/ |
public $nocache_hash = null; |
/** |
* suppress generation of nocache code |
* |
* @var bool |
*/ |
public $suppressNocacheProcessing = false; |
/** |
* caching enabled (copied from template object) |
* |
* @var int |
*/ |
public $caching = 0; |
/** |
* tag stack |
* |
* @var array |
*/ |
public $_tag_stack = array(); |
/** |
* tag stack count |
* |
* @var array |
*/ |
public $_tag_stack_count = array(); |
/** |
* Plugins used by template |
* |
* @var array |
*/ |
public $required_plugins = array('compiled' => array(), 'nocache' => array()); |
/** |
* Required plugins stack |
* |
* @var array |
*/ |
public $required_plugins_stack = array(); |
/** |
* current template |
* |
* @var Smarty_Internal_Template |
*/ |
public $template = null; |
/** |
* merged included sub template data |
* |
* @var array |
*/ |
public $mergedSubTemplatesData = array(); |
/** |
* merged sub template code |
* |
* @var array |
*/ |
public $mergedSubTemplatesCode = array(); |
/** |
* collected template properties during compilation |
* |
* @var array |
*/ |
public $templateProperties = array(); |
/** |
* source line offset for error messages |
* |
* @var int |
*/ |
public $trace_line_offset = 0; |
/** |
* trace uid |
* |
* @var string |
*/ |
public $trace_uid = ''; |
/** |
* trace file path |
* |
* @var string |
*/ |
public $trace_filepath = ''; |
/** |
* stack for tracing file and line of nested {block} tags |
* |
* @var array |
*/ |
public $trace_stack = array(); |
/** |
* plugins loaded by default plugin handler |
* |
* @var array |
*/ |
public $default_handler_plugins = array(); |
/** |
* saved preprocessed modifier list |
* |
* @var mixed |
*/ |
public $default_modifier_list = null; |
/** |
* force compilation of complete template as nocache |
* |
* @var boolean |
*/ |
public $forceNocache = false; |
/** |
* flag if compiled template file shall we written |
* |
* @var bool |
*/ |
public $write_compiled_code = true; |
/** |
* Template functions |
* |
* @var array |
*/ |
public $tpl_function = array(); |
/** |
* called sub functions from template function |
* |
* @var array |
*/ |
public $called_functions = array(); |
/** |
* compiled template or block function code |
* |
* @var string |
*/ |
public $blockOrFunctionCode = ''; |
/** |
* php_handling setting either from Smarty or security |
* |
* @var int |
*/ |
public $php_handling = 0; |
/** |
* flags for used modifier plugins |
* |
* @var array |
*/ |
public $modifier_plugins = array(); |
/** |
* type of already compiled modifier |
* |
* @var array |
*/ |
public $known_modifier_type = array(); |
/** |
* parent compiler object for merged subtemplates and template functions |
* |
* @var Smarty_Internal_TemplateCompilerBase |
*/ |
public $parent_compiler = null; |
/** |
* Flag true when compiling nocache section |
* |
* @var bool |
*/ |
public $nocache = false; |
/** |
* Flag true when tag is compiled as nocache |
* |
* @var bool |
*/ |
public $tag_nocache = false; |
/** |
* Compiled tag prefix code |
* |
* @var array |
*/ |
public $prefix_code = array(); |
/** |
* used prefix variables by current compiled tag |
* |
* @var array |
*/ |
public $usedPrefixVariables = array(); |
/** |
* Prefix code stack |
* |
* @var array |
*/ |
public $prefixCodeStack = array(); |
/** |
* Tag has compiled code |
* |
* @var bool |
*/ |
public $has_code = false; |
/** |
* A variable string was compiled |
* |
* @var bool |
*/ |
public $has_variable_string = false; |
/** |
* Stack for {setfilter} {/setfilter} |
* |
* @var array |
*/ |
public $variable_filter_stack = array(); |
/** |
* variable filters for {setfilter} {/setfilter} |
* |
* @var array |
*/ |
public $variable_filters = array(); |
/** |
* Nesting count of looping tags like {foreach}, {for}, {section}, {while} |
* |
* @var int |
*/ |
public $loopNesting = 0; |
/** |
* Strip preg pattern |
* |
* @var string |
*/ |
public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!'; |
/** |
* plugin search order |
* |
* @var array |
*/ |
public $plugin_search_order = array( |
'function', |
'block', |
'compiler', |
'class' |
); |
/** |
* General storage area for tag compiler plugins |
* |
* @var array |
*/ |
public $_cache = array(); |
/** |
* Lexer preg pattern for left delimiter |
* |
* @var string |
*/ |
private $ldelPreg = '[{]'; |
/** |
* Lexer preg pattern for right delimiter |
* |
* @var string |
*/ |
private $rdelPreg = '[}]'; |
/** |
* Length of right delimiter |
* |
* @var int |
*/ |
private $rdelLength = 0; |
/** |
* Length of left delimiter |
* |
* @var int |
*/ |
private $ldelLength = 0; |
/** |
* Lexer preg pattern for user literals |
* |
* @var string |
*/ |
private $literalPreg = ''; |
/** |
* Initialize compiler |
* |
* @param Smarty $smarty global instance |
*/ |
public function __construct(Smarty $smarty) |
{ |
$this->smarty = $smarty; |
$this->nocache_hash = str_replace( |
array( |
'.', |
',' |
), |
'_', |
uniqid(mt_rand(), true) |
); |
} |
/** |
* Method to compile a Smarty template |
* |
* @param Smarty_Internal_Template $template template object to compile |
* @param bool $nocache true is shall be compiled in nocache mode |
* @param null|Smarty_Internal_TemplateCompilerBase $parent_compiler |
* |
* @return bool true if compiling succeeded, false if it failed |
* @throws \Exception |
*/ |
public function compileTemplate( |
Smarty_Internal_Template $template, |
$nocache = null, |
Smarty_Internal_TemplateCompilerBase $parent_compiler = null |
) { |
// get code frame of compiled template |
$_compiled_code = $template->smarty->ext->_codeFrame->create( |
$template, |
$this->compileTemplateSource( |
$template, |
$nocache, |
$parent_compiler |
), |
$this->postFilter($this->blockOrFunctionCode) . |
join('', $this->mergedSubTemplatesCode), |
false, |
$this |
); |
return $_compiled_code; |
} |
/** |
* Compile template source and run optional post filter |
* |
* @param \Smarty_Internal_Template $template |
* @param null|bool $nocache flag if template must be compiled in nocache mode |
* @param \Smarty_Internal_TemplateCompilerBase $parent_compiler |
* |
* @return string |
* @throws \Exception |
*/ |
public function compileTemplateSource( |
Smarty_Internal_Template $template, |
$nocache = null, |
Smarty_Internal_TemplateCompilerBase $parent_compiler = null |
) { |
try { |
// save template object in compiler class |
$this->template = $template; |
if (property_exists($this->template->smarty, 'plugin_search_order')) { |
$this->plugin_search_order = $this->template->smarty->plugin_search_order; |
} |
if ($this->smarty->debugging) { |
if (!isset($this->smarty->_debug)) { |
$this->smarty->_debug = new Smarty_Internal_Debug(); |
} |
$this->smarty->_debug->start_compile($this->template); |
} |
if (isset($this->template->smarty->security_policy)) { |
$this->php_handling = $this->template->smarty->security_policy->php_handling; |
} else { |
$this->php_handling = $this->template->smarty->php_handling; |
} |
$this->parent_compiler = $parent_compiler ? $parent_compiler : $this; |
$nocache = isset($nocache) ? $nocache : false; |
if (empty($template->compiled->nocache_hash)) { |
$template->compiled->nocache_hash = $this->nocache_hash; |
} else { |
$this->nocache_hash = $template->compiled->nocache_hash; |
} |
$this->caching = $template->caching; |
// flag for nocache sections |
$this->nocache = $nocache; |
$this->tag_nocache = false; |
// reset has nocache code flag |
$this->template->compiled->has_nocache_code = false; |
$this->has_variable_string = false; |
$this->prefix_code = array(); |
// add file dependency |
if ($this->smarty->merge_compiled_includes || $this->template->source->handler->checkTimestamps()) { |
$this->parent_compiler->template->compiled->file_dependency[ $this->template->source->uid ] = |
array( |
$this->template->source->filepath, |
$this->template->source->getTimeStamp(), |
$this->template->source->type, |
); |
} |
$this->smarty->_current_file = $this->template->source->filepath; |
// get template source |
if (!empty($this->template->source->components)) { |
// we have array of inheritance templates by extends: resource |
// generate corresponding source code sequence |
$_content = |
Smarty_Internal_Compile_Extends::extendsSourceArrayCode($this->template); |
} else { |
// get template source |
$_content = $this->template->source->getContent(); |
} |
$_compiled_code = $this->postFilter($this->doCompile($this->preFilter($_content), true)); |
if (!empty($this->required_plugins[ 'compiled' ]) || !empty($this->required_plugins[ 'nocache' ])) { |
$_compiled_code = '<?php ' . $this->compileRequiredPlugins() . "?>\n" . $_compiled_code; |
} |
} catch (Exception $e) { |
if ($this->smarty->debugging) { |
$this->smarty->_debug->end_compile($this->template); |
} |
$this->_tag_stack = array(); |
// free memory |
$this->parent_compiler = null; |
$this->template = null; |
$this->parser = null; |
throw $e; |
} |
if ($this->smarty->debugging) { |
$this->smarty->_debug->end_compile($this->template); |
} |
$this->parent_compiler = null; |
$this->parser = null; |
return $_compiled_code; |
} |
/** |
* Optionally process compiled code by post filter |
* |
* @param string $code compiled code |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function postFilter($code) |
{ |
// run post filter if on code |
if (!empty($code) |
&& (isset($this->smarty->autoload_filters[ 'post' ]) || isset($this->smarty->registered_filters[ 'post' ])) |
) { |
return $this->smarty->ext->_filterHandler->runFilter('post', $code, $this->template); |
} else { |
return $code; |
} |
} |
/** |
* Run optional prefilter |
* |
* @param string $_content template source |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function preFilter($_content) |
{ |
// run pre filter if required |
if ($_content !== '' |
&& ((isset($this->smarty->autoload_filters[ 'pre' ]) || isset($this->smarty->registered_filters[ 'pre' ]))) |
) { |
return $this->smarty->ext->_filterHandler->runFilter('pre', $_content, $this->template); |
} else { |
return $_content; |
} |
} |
/** |
* Compile Tag |
* This is a call back from the lexer/parser |
* |
* Save current prefix code |
* Compile tag |
* Merge tag prefix code with saved one |
* (required nested tags in attributes) |
* |
* @param string $tag tag name |
* @param array $args array with tag attributes |
* @param array $parameter array with compilation parameter |
* |
* @throws SmartyCompilerException |
* @throws SmartyException |
* @return string compiled code |
*/ |
public function compileTag($tag, $args, $parameter = array()) |
{ |
$this->prefixCodeStack[] = $this->prefix_code; |
$this->prefix_code = array(); |
$result = $this->compileTag2($tag, $args, $parameter); |
$this->prefix_code = array_merge($this->prefix_code, array_pop($this->prefixCodeStack)); |
return $result; |
} |
/** |
* compile variable |
* |
* @param string $variable |
* |
* @return string |
*/ |
public function compileVariable($variable) |
{ |
if (!strpos($variable, '(')) { |
// not a variable variable |
$var = trim($variable, '\''); |
$this->tag_nocache = $this->tag_nocache | |
$this->template->ext->getTemplateVars->_getVariable( |
$this->template, |
$var, |
null, |
true, |
false |
)->nocache; |
// todo $this->template->compiled->properties['variables'][$var] = $this->tag_nocache | $this->nocache; |
} |
return '$_smarty_tpl->tpl_vars[' . $variable . ']->value'; |
} |
/** |
* compile config variable |
* |
* @param string $variable |
* |
* @return string |
*/ |
public function compileConfigVariable($variable) |
{ |
// return '$_smarty_tpl->config_vars[' . $variable . ']'; |
return '$_smarty_tpl->smarty->ext->configLoad->_getConfigVariable($_smarty_tpl, ' . $variable . ')'; |
} |
/** |
* compile PHP function call |
* |
* @param string $name |
* @param array $parameter |
* |
* @return string |
* @throws \SmartyCompilerException |
*/ |
public function compilePHPFunctionCall($name, $parameter) |
{ |
if (!$this->smarty->security_policy || $this->smarty->security_policy->isTrustedPhpFunction($name, $this)) { |
if (strcasecmp($name, 'isset') === 0 || strcasecmp($name, 'empty') === 0 |
|| strcasecmp($name, 'array') === 0 || is_callable($name) |
) { |
$func_name = strtolower($name); |
$par = implode(',', $parameter); |
$parHasFuction = strpos($par, '(') !== false; |
if ($func_name === 'isset') { |
if (count($parameter) === 0) { |
$this->trigger_template_error('Illegal number of parameter in "isset()"'); |
} |
if ($parHasFuction) { |
$pa = array(); |
foreach ($parameter as $p) { |
$pa[] = (strpos($p, '(') === false) ? ('isset(' . $p . ')') : ('(' . $p . ' !== null )'); |
} |
return '(' . implode(' && ', $pa) . ')'; |
} else { |
$isset_par = str_replace("')->value", "',null,true,false)->value", $par); |
} |
return $name . '(' . $isset_par . ')'; |
} elseif (in_array( |
$func_name, |
array( |
'empty', |
'reset', |
'current', |
'end', |
'prev', |
'next' |
) |
) |
) { |
if (count($parameter) !== 1) { |
$this->trigger_template_error("Illegal number of parameter in '{$func_name()}'"); |
} |
if ($func_name === 'empty') { |
if ($parHasFuction && version_compare(PHP_VERSION, '5.5.0', '<')) { |
return '(' . $parameter[ 0 ] . ' === false )'; |
} else { |
return $func_name . '(' . |
str_replace("')->value", "',null,true,false)->value", $parameter[ 0 ]) . ')'; |
} |
} else { |
return $func_name . '(' . $parameter[ 0 ] . ')'; |
} |
} else { |
return $name . '(' . implode(',', $parameter) . ')'; |
} |
} else { |
$this->trigger_template_error("unknown function '{$name}'"); |
} |
} |
} |
/** |
* This method is called from parser to process a text content section |
* - remove text from inheritance child templates as they may generate output |
* - strip text if strip is enabled |
* |
* @param string $text |
* |
* @return null|\Smarty_Internal_ParseTree_Text |
*/ |
public function processText($text) |
{ |
if ((string)$text != '') { |
$store = array(); |
$_store = 0; |
if ($this->parser->strip) { |
if (strpos($text, '<') !== false) { |
// capture html elements not to be messed with |
$_offset = 0; |
if (preg_match_all( |
'#(<script[^>]*>.*?</script[^>]*>)|(<textarea[^>]*>.*?</textarea[^>]*>)|(<pre[^>]*>.*?</pre[^>]*>)#is', |
$text, |
$matches, |
PREG_OFFSET_CAPTURE | PREG_SET_ORDER |
) |
) { |
foreach ($matches as $match) { |
$store[] = $match[ 0 ][ 0 ]; |
$_length = strlen($match[ 0 ][ 0 ]); |
$replace = '@!@SMARTY:' . $_store . ':SMARTY@!@'; |
$text = substr_replace($text, $replace, $match[ 0 ][ 1 ] - $_offset, $_length); |
$_offset += $_length - strlen($replace); |
$_store++; |
} |
} |
$expressions = array(// replace multiple spaces between tags by a single space |
'#(:SMARTY@!@|>)[\040\011]+(?=@!@SMARTY:|<)#s' => '\1 \2', |
// remove newline between tags |
'#(:SMARTY@!@|>)[\040\011]*[\n]\s*(?=@!@SMARTY:|<)#s' => '\1\2', |
// remove multiple spaces between attributes (but not in attribute values!) |
'#(([a-z0-9]\s*=\s*("[^"]*?")|(\'[^\']*?\'))|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \5', |
'#>[\040\011]+$#Ss' => '> ', |
'#>[\040\011]*[\n]\s*$#Ss' => '>', |
$this->stripRegEx => '', |
); |
$text = preg_replace(array_keys($expressions), array_values($expressions), $text); |
$_offset = 0; |
if (preg_match_all( |
'#@!@SMARTY:([0-9]+):SMARTY@!@#is', |
$text, |
$matches, |
PREG_OFFSET_CAPTURE | PREG_SET_ORDER |
) |
) { |
foreach ($matches as $match) { |
$_length = strlen($match[ 0 ][ 0 ]); |
$replace = $store[ $match[ 1 ][ 0 ] ]; |
$text = substr_replace($text, $replace, $match[ 0 ][ 1 ] + $_offset, $_length); |
$_offset += strlen($replace) - $_length; |
$_store++; |
} |
} |
} else { |
$text = preg_replace($this->stripRegEx, '', $text); |
} |
} |
return new Smarty_Internal_ParseTree_Text($text); |
} |
return null; |
} |
/** |
* lazy loads internal compile plugin for tag and calls the compile method |
* compile objects cached for reuse. |
* class name format: Smarty_Internal_Compile_TagName |
* plugin filename format: Smarty_Internal_TagName.php |
* |
* @param string $tag tag name |
* @param array $args list of tag attributes |
* @param mixed $param1 optional parameter |
* @param mixed $param2 optional parameter |
* @param mixed $param3 optional parameter |
* |
* @return bool|string compiled code or false |
* @throws \SmartyCompilerException |
*/ |
public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null) |
{ |
/* @var Smarty_Internal_CompileBase $tagCompiler */ |
$tagCompiler = $this->getTagCompiler($tag); |
// compile this tag |
return $tagCompiler === false ? false : $tagCompiler->compile($args, $this, $param1, $param2, $param3); |
} |
/** |
* lazy loads internal compile plugin for tag compile objects cached for reuse. |
* |
* class name format: Smarty_Internal_Compile_TagName |
* plugin filename format: Smarty_Internal_TagName.php |
* |
* @param string $tag tag name |
* |
* @return bool|\Smarty_Internal_CompileBase tag compiler object or false if not found |
*/ |
public function getTagCompiler($tag) |
{ |
// re-use object if already exists |
if (!isset(self::$_tag_objects[ $tag ])) { |
// lazy load internal compiler plugin |
$_tag = explode('_', $tag); |
$_tag = array_map('ucfirst', $_tag); |
$class_name = 'Smarty_Internal_Compile_' . implode('_', $_tag); |
if (class_exists($class_name) |
&& (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) |
) { |
self::$_tag_objects[ $tag ] = new $class_name; |
} else { |
self::$_tag_objects[ $tag ] = false; |
} |
} |
return self::$_tag_objects[ $tag ]; |
} |
/** |
* Check for plugins and return function name |
* |
* @param $plugin_name |
* @param string $plugin_type type of plugin |
* |
* @return string call name of function |
* @throws \SmartyException |
*/ |
public function getPlugin($plugin_name, $plugin_type) |
{ |
$function = null; |
if ($this->caching && ($this->nocache || $this->tag_nocache)) { |
if (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) { |
$function = |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ]; |
} elseif (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) { |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ] = |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ]; |
$function = |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ]; |
} |
} else { |
if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ])) { |
$function = |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ]; |
} elseif (isset($this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ])) { |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ] = |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ]; |
$function = |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ]; |
} |
} |
if (isset($function)) { |
if ($plugin_type === 'modifier') { |
$this->modifier_plugins[ $plugin_name ] = true; |
} |
return $function; |
} |
// loop through plugin dirs and find the plugin |
$function = 'smarty_' . $plugin_type . '_' . $plugin_name; |
$file = $this->smarty->loadPlugin($function, false); |
if (is_string($file)) { |
if ($this->caching && ($this->nocache || $this->tag_nocache)) { |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'file' ] = |
$file; |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ $plugin_type ][ 'function' ] = |
$function; |
} else { |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'file' ] = |
$file; |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ $plugin_type ][ 'function' ] = |
$function; |
} |
if ($plugin_type === 'modifier') { |
$this->modifier_plugins[ $plugin_name ] = true; |
} |
return $function; |
} |
if (is_callable($function)) { |
// plugin function is defined in the script |
return $function; |
} |
return false; |
} |
/** |
* Check for plugins by default plugin handler |
* |
* @param string $tag name of tag |
* @param string $plugin_type type of plugin |
* |
* @return bool true if found |
* @throws \SmartyCompilerException |
*/ |
public function getPluginFromDefaultHandler($tag, $plugin_type) |
{ |
$callback = null; |
$script = null; |
$cacheable = true; |
$result = call_user_func_array( |
$this->smarty->default_plugin_handler_func, |
array( |
$tag, |
$plugin_type, |
$this->template, |
&$callback, |
&$script, |
&$cacheable, |
) |
); |
if ($result) { |
$this->tag_nocache = $this->tag_nocache || !$cacheable; |
if ($script !== null) { |
if (is_file($script)) { |
if ($this->caching && ($this->nocache || $this->tag_nocache)) { |
$this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'file' ] = |
$script; |
$this->required_plugins[ 'nocache' ][ $tag ][ $plugin_type ][ 'function' ] = |
$callback; |
} else { |
$this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'file' ] = |
$script; |
$this->required_plugins[ 'compiled' ][ $tag ][ $plugin_type ][ 'function' ] = |
$callback; |
} |
include_once $script; |
} else { |
$this->trigger_template_error("Default plugin handler: Returned script file '{$script}' for '{$tag}' not found"); |
} |
} |
if (is_callable($callback)) { |
$this->default_handler_plugins[ $plugin_type ][ $tag ] = array( |
$callback, |
true, |
array() |
); |
return true; |
} else { |
$this->trigger_template_error("Default plugin handler: Returned callback for '{$tag}' not callable"); |
} |
} |
return false; |
} |
/** |
* Append code segments and remove unneeded ?> <?php transitions |
* |
* @param string $left |
* @param string $right |
* |
* @return string |
*/ |
public function appendCode($left, $right) |
{ |
if (preg_match('/\s*\?>\s?$/D', $left) && preg_match('/^<\?php\s+/', $right)) { |
$left = preg_replace('/\s*\?>\s?$/D', "\n", $left); |
$left .= preg_replace('/^<\?php\s+/', '', $right); |
} else { |
$left .= $right; |
} |
return $left; |
} |
/** |
* Inject inline code for nocache template sections |
* This method gets the content of each template element from the parser. |
* If the content is compiled code and it should be not cached the code is injected |
* into the rendered output. |
* |
* @param string $content content of template element |
* @param boolean $is_code true if content is compiled code |
* |
* @return string content |
*/ |
public function processNocacheCode($content, $is_code) |
{ |
// If the template is not evaluated and we have a nocache section and or a nocache tag |
if ($is_code && !empty($content)) { |
// generate replacement code |
if ((!($this->template->source->handler->recompiled) || $this->forceNocache) && $this->caching |
&& !$this->suppressNocacheProcessing && ($this->nocache || $this->tag_nocache) |
) { |
$this->template->compiled->has_nocache_code = true; |
$_output = addcslashes($content, '\'\\'); |
$_output = str_replace('^#^', '\'', $_output); |
$_output = |
"<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/{$_output}/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n"; |
// make sure we include modifier plugins for nocache code |
foreach ($this->modifier_plugins as $plugin_name => $dummy) { |
if (isset($this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ])) { |
$this->required_plugins[ 'nocache' ][ $plugin_name ][ 'modifier' ] = |
$this->required_plugins[ 'compiled' ][ $plugin_name ][ 'modifier' ]; |
} |
} |
} else { |
$_output = $content; |
} |
} else { |
$_output = $content; |
} |
$this->modifier_plugins = array(); |
$this->suppressNocacheProcessing = false; |
$this->tag_nocache = false; |
return $_output; |
} |
/** |
* Get Id |
* |
* @param string $input |
* |
* @return bool|string |
*/ |
public function getId($input) |
{ |
if (preg_match('~^([\'"]*)([0-9]*[a-zA-Z_]\w*)\1$~', $input, $match)) { |
return $match[ 2 ]; |
} |
return false; |
} |
/** |
* Get variable name from string |
* |
* @param string $input |
* |
* @return bool|string |
*/ |
public function getVariableName($input) |
{ |
if (preg_match('~^[$]_smarty_tpl->tpl_vars\[[\'"]*([0-9]*[a-zA-Z_]\w*)[\'"]*\]->value$~', $input, $match)) { |
return $match[ 1 ]; |
} |
return false; |
} |
/** |
* Set nocache flag in variable or create new variable |
* |
* @param string $varName |
*/ |
public function setNocacheInVariable($varName) |
{ |
// create nocache var to make it know for further compiling |
if ($_var = $this->getId($varName)) { |
if (isset($this->template->tpl_vars[ $_var ])) { |
$this->template->tpl_vars[ $_var ] = clone $this->template->tpl_vars[ $_var ]; |
$this->template->tpl_vars[ $_var ]->nocache = true; |
} else { |
$this->template->tpl_vars[ $_var ] = new Smarty_Variable(null, true); |
} |
} |
} |
/** |
* @param array $_attr tag attributes |
* @param array $validScopes |
* |
* @return int|string |
* @throws \SmartyCompilerException |
*/ |
public function convertScope($_attr, $validScopes) |
{ |
$_scope = 0; |
if (isset($_attr[ 'scope' ])) { |
$_scopeName = trim($_attr[ 'scope' ], '\'"'); |
if (is_numeric($_scopeName) && in_array($_scopeName, $validScopes)) { |
$_scope = $_scopeName; |
} elseif (is_string($_scopeName)) { |
$_scopeName = trim($_scopeName, '\'"'); |
$_scope = isset($validScopes[ $_scopeName ]) ? $validScopes[ $_scopeName ] : false; |
} else { |
$_scope = false; |
} |
if ($_scope === false) { |
$err = var_export($_scopeName, true); |
$this->trigger_template_error("illegal value '{$err}' for \"scope\" attribute", null, true); |
} |
} |
return $_scope; |
} |
/** |
* Generate nocache code string |
* |
* @param string $code PHP code |
* |
* @return string |
*/ |
public function makeNocacheCode($code) |
{ |
return "echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/<?php " . |
str_replace('^#^', '\'', addcslashes($code, '\'\\')) . |
"?>/*/%%SmartyNocache:{$this->nocache_hash}%%*/';\n"; |
} |
/** |
* display compiler error messages without dying |
* If parameter $args is empty it is a parser detected syntax error. |
* In this case the parser is called to obtain information about expected tokens. |
* If parameter $args contains a string this is used as error message |
* |
* @param string $args individual error message or null |
* @param string $line line-number |
* @param null|bool $tagline if true the line number of last tag |
* |
* @throws \SmartyCompilerException when an unexpected token is found |
*/ |
public function trigger_template_error($args = null, $line = null, $tagline = null) |
{ |
$lex = $this->parser->lex; |
if ($tagline === true) { |
// get line number of Tag |
$line = $lex->taglineno; |
} elseif (!isset($line)) { |
// get template source line which has error |
$line = $lex->line; |
} else { |
$line = (int)$line; |
} |
if (in_array( |
$this->template->source->type, |
array( |
'eval', |
'string' |
) |
) |
) { |
$templateName = $this->template->source->type . ':' . trim( |
preg_replace( |
'![\t\r\n]+!', |
' ', |
strlen($lex->data) > 40 ? |
substr($lex->data, 0, 40) . |
'...' : $lex->data |
) |
); |
} else { |
$templateName = $this->template->source->type . ':' . $this->template->source->filepath; |
} |
// $line += $this->trace_line_offset; |
$match = preg_split("/\n/", $lex->data); |
$error_text = |
'Syntax error in template "' . (empty($this->trace_filepath) ? $templateName : $this->trace_filepath) . |
'" on line ' . ($line + $this->trace_line_offset) . ' "' . |
trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])) . '" '; |
if (isset($args)) { |
// individual error message |
$error_text .= $args; |
} else { |
$expect = array(); |
// expected token from parser |
$error_text .= ' - Unexpected "' . $lex->value . '"'; |
if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) { |
foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) { |
$exp_token = $this->parser->yyTokenName[ $token ]; |
if (isset($lex->smarty_token_names[ $exp_token ])) { |
// token type from lexer |
$expect[] = '"' . $lex->smarty_token_names[ $exp_token ] . '"'; |
} else { |
// otherwise internal token name |
$expect[] = $this->parser->yyTokenName[ $token ]; |
} |
} |
$error_text .= ', expected one of: ' . implode(' , ', $expect); |
} |
} |
if ($this->smarty->_parserdebug) { |
$this->parser->errorRunDown(); |
echo ob_get_clean(); |
flush(); |
} |
$e = new SmartyCompilerException($error_text); |
$e->line = $line; |
$e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])); |
$e->desc = $args; |
$e->template = $this->template->source->filepath; |
throw $e; |
} |
/** |
* Return var_export() value with all white spaces removed |
* |
* @param mixed $value |
* |
* @return string |
*/ |
public function getVarExport($value) |
{ |
return preg_replace('/\s/', '', var_export($value, true)); |
} |
/** |
* enter double quoted string |
* - save tag stack count |
*/ |
public function enterDoubleQuote() |
{ |
array_push($this->_tag_stack_count, $this->getTagStackCount()); |
} |
/** |
* Return tag stack count |
* |
* @return int |
*/ |
public function getTagStackCount() |
{ |
return count($this->_tag_stack); |
} |
/** |
* @param $lexerPreg |
* |
* @return mixed |
*/ |
public function replaceDelimiter($lexerPreg) |
{ |
return str_replace( |
array('SMARTYldel', 'SMARTYliteral', 'SMARTYrdel', 'SMARTYautoliteral', 'SMARTYal'), |
array( |
$this->ldelPreg, $this->literalPreg, $this->rdelPreg, |
$this->smarty->getAutoLiteral() ? '{1,}' : '{9}', |
$this->smarty->getAutoLiteral() ? '' : '\\s*' |
), |
$lexerPreg |
); |
} |
/** |
* Build lexer regular expressions for left and right delimiter and user defined literals |
*/ |
public function initDelimiterPreg() |
{ |
$ldel = $this->smarty->getLeftDelimiter(); |
$this->ldelLength = strlen($ldel); |
$this->ldelPreg = ''; |
foreach (str_split($ldel, 1) as $chr) { |
$this->ldelPreg .= '[' . preg_quote($chr,'/') . ']'; |
} |
$rdel = $this->smarty->getRightDelimiter(); |
$this->rdelLength = strlen($rdel); |
$this->rdelPreg = ''; |
foreach (str_split($rdel, 1) as $chr) { |
$this->rdelPreg .= '[' . preg_quote($chr,'/') . ']'; |
} |
$literals = $this->smarty->getLiterals(); |
if (!empty($literals)) { |
foreach ($literals as $key => $literal) { |
$literalPreg = ''; |
foreach (str_split($literal, 1) as $chr) { |
$literalPreg .= '[' . preg_quote($chr,'/') . ']'; |
} |
$literals[ $key ] = $literalPreg; |
} |
$this->literalPreg = '|' . implode('|', $literals); |
} else { |
$this->literalPreg = ''; |
} |
} |
/** |
* leave double quoted string |
* - throw exception if block in string was not closed |
* |
* @throws \SmartyCompilerException |
*/ |
public function leaveDoubleQuote() |
{ |
if (array_pop($this->_tag_stack_count) !== $this->getTagStackCount()) { |
$tag = $this->getOpenBlockTag(); |
$this->trigger_template_error( |
"unclosed '{{$tag}}' in doubled quoted string", |
null, |
true |
); |
} |
} |
/** |
* Get left delimiter preg |
* |
* @return string |
*/ |
public function getLdelPreg() |
{ |
return $this->ldelPreg; |
} |
/** |
* Get right delimiter preg |
* |
* @return string |
*/ |
public function getRdelPreg() |
{ |
return $this->rdelPreg; |
} |
/** |
* Get length of left delimiter |
* |
* @return int |
*/ |
public function getLdelLength() |
{ |
return $this->ldelLength; |
} |
/** |
* Get length of right delimiter |
* |
* @return int |
*/ |
public function getRdelLength() |
{ |
return $this->rdelLength; |
} |
/** |
* Get name of current open block tag |
* |
* @return string|boolean |
*/ |
public function getOpenBlockTag() |
{ |
$tagCount = $this->getTagStackCount(); |
if ($tagCount) { |
return $this->_tag_stack[ $tagCount - 1 ][ 0 ]; |
} else { |
return false; |
} |
} |
/** |
* Check if $value contains variable elements |
* |
* @param mixed $value |
* |
* @return bool|int |
*/ |
public function isVariable($value) |
{ |
if (is_string($value)) { |
return preg_match('/[$(]/', $value); |
} |
if (is_bool($value) || is_numeric($value)) { |
return false; |
} |
if (is_array($value)) { |
foreach ($value as $k => $v) { |
if ($this->isVariable($k) || $this->isVariable($v)) { |
return true; |
} |
} |
return false; |
} |
return false; |
} |
/** |
* Get new prefix variable name |
* |
* @return string |
*/ |
public function getNewPrefixVariable() |
{ |
++self::$prefixVariableNumber; |
return $this->getPrefixVariable(); |
} |
/** |
* Get current prefix variable name |
* |
* @return string |
*/ |
public function getPrefixVariable() |
{ |
return '$_prefixVariable' . self::$prefixVariableNumber; |
} |
/** |
* append code to prefix buffer |
* |
* @param string $code |
*/ |
public function appendPrefixCode($code) |
{ |
$this->prefix_code[] = $code; |
} |
/** |
* get prefix code string |
* |
* @return string |
*/ |
public function getPrefixCode() |
{ |
$code = ''; |
$prefixArray = array_merge($this->prefix_code, array_pop($this->prefixCodeStack)); |
$this->prefixCodeStack[] = array(); |
foreach ($prefixArray as $c) { |
$code = $this->appendCode($code, $c); |
} |
$this->prefix_code = array(); |
return $code; |
} |
/** |
* Save current required plugins |
* |
* @param bool $init if true init required plugins |
*/ |
public function saveRequiredPlugins($init = false) |
{ |
$this->required_plugins_stack[] = $this->required_plugins; |
if ($init) { |
$this->required_plugins = array('compiled' => array(), 'nocache' => array()); |
} |
} |
/** |
* Restore required plugins |
*/ |
public function restoreRequiredPlugins() |
{ |
$this->required_plugins = array_pop($this->required_plugins_stack); |
} |
/** |
* Compile code to call Smarty_Internal_Template::_checkPlugins() |
* for required plugins |
* |
* @return string |
*/ |
public function compileRequiredPlugins() |
{ |
$code = $this->compileCheckPlugins($this->required_plugins[ 'compiled' ]); |
if ($this->caching && !empty($this->required_plugins[ 'nocache' ])) { |
$code .= $this->makeNocacheCode($this->compileCheckPlugins($this->required_plugins[ 'nocache' ])); |
} |
return $code; |
} |
/** |
* Compile code to call Smarty_Internal_Template::_checkPlugins |
* - checks if plugin is callable require otherwise |
* |
* @param $requiredPlugins |
* |
* @return string |
*/ |
public function compileCheckPlugins($requiredPlugins) |
{ |
if (!empty($requiredPlugins)) { |
$plugins = array(); |
foreach ($requiredPlugins as $plugin) { |
foreach ($plugin as $data) { |
$plugins[] = $data; |
} |
} |
return '$_smarty_tpl->_checkPlugins(' . $this->getVarExport($plugins) . ');' . "\n"; |
} else { |
return ''; |
} |
} |
/** |
* method to compile a Smarty template |
* |
* @param mixed $_content template source |
* @param bool $isTemplateSource |
* |
* @return bool true if compiling succeeded, false if it failed |
*/ |
abstract protected function doCompile($_content, $isTemplateSource = false); |
/** |
* Compile Tag |
* |
* @param string $tag tag name |
* @param array $args array with tag attributes |
* @param array $parameter array with compilation parameter |
* |
* @throws SmartyCompilerException |
* @throws SmartyException |
* @return string compiled code |
*/ |
private function compileTag2($tag, $args, $parameter) |
{ |
$plugin_type = ''; |
// $args contains the attributes parsed and compiled by the lexer/parser |
// assume that tag does compile into code, but creates no HTML output |
$this->has_code = true; |
// log tag/attributes |
if (isset($this->smarty->_cache[ 'get_used_tags' ])) { |
$this->template->_cache[ 'used_tags' ][] = array( |
$tag, |
$args |
); |
} |
// check nocache option flag |
foreach ($args as $arg) { |
if (!is_array($arg)) { |
if ($arg === "'nocache'" || $arg === 'nocache') { |
$this->tag_nocache = true; |
} |
} else { |
foreach ($arg as $k => $v) { |
if (($k === "'nocache'" || $k === 'nocache') && (trim($v, "'\" ") === 'true')) { |
$this->tag_nocache = true; |
} |
} |
} |
} |
// compile the smarty tag (required compile classes to compile the tag are auto loaded) |
if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) { |
if (isset($this->parent_compiler->tpl_function[ $tag ]) |
|| (isset($this->template->smarty->ext->_tplFunction) |
&& $this->template->smarty->ext->_tplFunction->getTplFunction($this->template, $tag) !== false) |
) { |
// template defined by {template} tag |
$args[ '_attr' ][ 'name' ] = "'{$tag}'"; |
$_output = $this->callTagCompiler('call', $args, $parameter); |
} |
} |
if ($_output !== false) { |
if ($_output !== true) { |
// did we get compiled code |
if ($this->has_code) { |
// return compiled code |
return $_output; |
} |
} |
// tag did not produce compiled code |
return null; |
} else { |
// map_named attributes |
if (isset($args[ '_attr' ])) { |
foreach ($args[ '_attr' ] as $key => $attribute) { |
if (is_array($attribute)) { |
$args = array_merge($args, $attribute); |
} |
} |
} |
// not an internal compiler tag |
if (strlen($tag) < 6 || substr($tag, -5) !== 'close') { |
// check if tag is a registered object |
if (isset($this->smarty->registered_objects[ $tag ]) && isset($parameter[ 'object_method' ])) { |
$method = $parameter[ 'object_method' ]; |
if (!in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ]) |
&& (empty($this->smarty->registered_objects[ $tag ][ 1 ]) |
|| in_array($method, $this->smarty->registered_objects[ $tag ][ 1 ])) |
) { |
return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method); |
} elseif (in_array($method, $this->smarty->registered_objects[ $tag ][ 3 ])) { |
return $this->callTagCompiler( |
'private_object_block_function', |
$args, |
$parameter, |
$tag, |
$method |
); |
} else { |
// throw exception |
$this->trigger_template_error( |
'not allowed method "' . $method . '" in registered object "' . |
$tag . '"', |
null, |
true |
); |
} |
} |
// check if tag is registered |
foreach (array( |
Smarty::PLUGIN_COMPILER, |
Smarty::PLUGIN_FUNCTION, |
Smarty::PLUGIN_BLOCK, |
) as $plugin_type) { |
if (isset($this->smarty->registered_plugins[ $plugin_type ][ $tag ])) { |
// if compiler function plugin call it now |
if ($plugin_type === Smarty::PLUGIN_COMPILER) { |
$new_args = array(); |
foreach ($args as $key => $mixed) { |
if (is_array($mixed)) { |
$new_args = array_merge($new_args, $mixed); |
} else { |
$new_args[ $key ] = $mixed; |
} |
} |
if (!$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 1 ]) { |
$this->tag_nocache = true; |
} |
return call_user_func_array( |
$this->smarty->registered_plugins[ $plugin_type ][ $tag ][ 0 ], |
array( |
$new_args, |
$this |
) |
); |
} |
// compile registered function or block function |
if ($plugin_type === Smarty::PLUGIN_FUNCTION || $plugin_type === Smarty::PLUGIN_BLOCK) { |
return $this->callTagCompiler( |
'private_registered_' . $plugin_type, |
$args, |
$parameter, |
$tag |
); |
} |
} |
} |
// check plugins from plugins folder |
foreach ($this->plugin_search_order as $plugin_type) { |
if ($plugin_type === Smarty::PLUGIN_COMPILER |
&& $this->smarty->loadPlugin('smarty_compiler_' . $tag) |
&& (!isset($this->smarty->security_policy) |
|| $this->smarty->security_policy->isTrustedTag($tag, $this)) |
) { |
$plugin = 'smarty_compiler_' . $tag; |
if (is_callable($plugin)) { |
// convert arguments format for old compiler plugins |
$new_args = array(); |
foreach ($args as $key => $mixed) { |
if (is_array($mixed)) { |
$new_args = array_merge($new_args, $mixed); |
} else { |
$new_args[ $key ] = $mixed; |
} |
} |
return $plugin($new_args, $this->smarty); |
} |
if (class_exists($plugin, false)) { |
$plugin_object = new $plugin; |
if (method_exists($plugin_object, 'compile')) { |
return $plugin_object->compile($args, $this); |
} |
} |
throw new SmartyException("Plugin '{$tag}' not callable"); |
} else { |
if ($function = $this->getPlugin($tag, $plugin_type)) { |
if (!isset($this->smarty->security_policy) |
|| $this->smarty->security_policy->isTrustedTag($tag, $this) |
) { |
return $this->callTagCompiler( |
'private_' . $plugin_type . '_plugin', |
$args, |
$parameter, |
$tag, |
$function |
); |
} |
} |
} |
} |
if (is_callable($this->smarty->default_plugin_handler_func)) { |
$found = false; |
// look for already resolved tags |
foreach ($this->plugin_search_order as $plugin_type) { |
if (isset($this->default_handler_plugins[ $plugin_type ][ $tag ])) { |
$found = true; |
break; |
} |
} |
if (!$found) { |
// call default handler |
foreach ($this->plugin_search_order as $plugin_type) { |
if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) { |
$found = true; |
break; |
} |
} |
} |
if ($found) { |
// if compiler function plugin call it now |
if ($plugin_type === Smarty::PLUGIN_COMPILER) { |
$new_args = array(); |
foreach ($args as $key => $mixed) { |
if (is_array($mixed)) { |
$new_args = array_merge($new_args, $mixed); |
} else { |
$new_args[ $key ] = $mixed; |
} |
} |
return call_user_func_array( |
$this->default_handler_plugins[ $plugin_type ][ $tag ][ 0 ], |
array( |
$new_args, |
$this |
) |
); |
} else { |
return $this->callTagCompiler( |
'private_registered_' . $plugin_type, |
$args, |
$parameter, |
$tag |
); |
} |
} |
} |
} else { |
// compile closing tag of block function |
$base_tag = substr($tag, 0, -5); |
// check if closing tag is a registered object |
if (isset($this->smarty->registered_objects[ $base_tag ]) && isset($parameter[ 'object_method' ])) { |
$method = $parameter[ 'object_method' ]; |
if (in_array($method, $this->smarty->registered_objects[ $base_tag ][ 3 ])) { |
return $this->callTagCompiler( |
'private_object_block_function', |
$args, |
$parameter, |
$tag, |
$method |
); |
} else { |
// throw exception |
$this->trigger_template_error( |
'not allowed closing tag method "' . $method . |
'" in registered object "' . $base_tag . '"', |
null, |
true |
); |
} |
} |
// registered block tag ? |
if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ]) |
|| isset($this->default_handler_plugins[ Smarty::PLUGIN_BLOCK ][ $base_tag ]) |
) { |
return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag); |
} |
// registered function tag ? |
if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_FUNCTION ][ $tag ])) { |
return $this->callTagCompiler('private_registered_function', $args, $parameter, $tag); |
} |
// block plugin? |
if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) { |
return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function); |
} |
// function plugin? |
if ($function = $this->getPlugin($tag, Smarty::PLUGIN_FUNCTION)) { |
if (!isset($this->smarty->security_policy) |
|| $this->smarty->security_policy->isTrustedTag($tag, $this) |
) { |
return $this->callTagCompiler('private_function_plugin', $args, $parameter, $tag, $function); |
} |
} |
// registered compiler plugin ? |
if (isset($this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ])) { |
// if compiler function plugin call it now |
$args = array(); |
if (!$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 1 ]) { |
$this->tag_nocache = true; |
} |
return call_user_func_array( |
$this->smarty->registered_plugins[ Smarty::PLUGIN_COMPILER ][ $tag ][ 0 ], |
array( |
$args, |
$this |
) |
); |
} |
if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) { |
$plugin = 'smarty_compiler_' . $tag; |
if (is_callable($plugin)) { |
return $plugin($args, $this->smarty); |
} |
if (class_exists($plugin, false)) { |
$plugin_object = new $plugin; |
if (method_exists($plugin_object, 'compile')) { |
return $plugin_object->compile($args, $this); |
} |
} |
throw new SmartyException("Plugin '{$tag}' not callable"); |
} |
} |
$this->trigger_template_error("unknown tag '{$tag}'", null, true); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_templatelexer.php |
---|
0,0 → 1,1095 |
<?php |
/* |
* This file is part of Smarty. |
* |
* (c) 2015 Uwe Tews |
* |
* For the full copyright and license information, please view the LICENSE |
* file that was distributed with this source code. |
*/ |
/** |
* Smarty_Internal_Templatelexer |
* This is the template file lexer. |
* It is generated from the smarty_internal_templatelexer.plex file |
* |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Templatelexer |
{ |
const TEXT = 1; |
const TAG = 2; |
const TAGBODY = 3; |
const LITERAL = 4; |
const DOUBLEQUOTEDSTRING = 5; |
/** |
* Source |
* |
* @var string |
*/ |
public $data; |
/** |
* Source length |
* |
* @var int |
*/ |
public $dataLength = null; |
/** |
* byte counter |
* |
* @var int |
*/ |
public $counter; |
/** |
* token number |
* |
* @var int |
*/ |
public $token; |
/** |
* token value |
* |
* @var string |
*/ |
public $value; |
/** |
* current line |
* |
* @var int |
*/ |
public $line; |
/** |
* tag start line |
* |
* @var |
*/ |
public $taglineno; |
/** |
* php code type |
* |
* @var string |
*/ |
public $phpType = ''; |
/** |
* state number |
* |
* @var int |
*/ |
public $state = 1; |
/** |
* Smarty object |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* compiler object |
* |
* @var Smarty_Internal_TemplateCompilerBase |
*/ |
public $compiler = null; |
/** |
* trace file |
* |
* @var resource |
*/ |
public $yyTraceFILE; |
/** |
* trace prompt |
* |
* @var string |
*/ |
public $yyTracePrompt; |
/** |
* XML flag true while processing xml |
* |
* @var bool |
*/ |
public $is_xml = false; |
/** |
* state names |
* |
* @var array |
*/ |
public $state_name = array(1 => 'TEXT', 2 => 'TAG', 3 => 'TAGBODY', 4 => 'LITERAL', 5 => 'DOUBLEQUOTEDSTRING',); |
/** |
* token names |
* |
* @var array |
*/ |
public $smarty_token_names = array( // Text for parser error messages |
'NOT' => '(!,not)', |
'OPENP' => '(', |
'CLOSEP' => ')', |
'OPENB' => '[', |
'CLOSEB' => ']', |
'PTR' => '->', |
'APTR' => '=>', |
'EQUAL' => '=', |
'NUMBER' => 'number', |
'UNIMATH' => '+" , "-', |
'MATH' => '*" , "/" , "%', |
'INCDEC' => '++" , "--', |
'SPACE' => ' ', |
'DOLLAR' => '$', |
'SEMICOLON' => ';', |
'COLON' => ':', |
'DOUBLECOLON' => '::', |
'AT' => '@', |
'HATCH' => '#', |
'QUOTE' => '"', |
'BACKTICK' => '`', |
'VERT' => '"|" modifier', |
'DOT' => '.', |
'COMMA' => '","', |
'QMARK' => '"?"', |
'ID' => 'id, name', |
'TEXT' => 'text', |
'LDELSLASH' => '{/..} closing tag', |
'LDEL' => '{...} Smarty tag', |
'COMMENT' => 'comment', |
'AS' => 'as', |
'TO' => 'to', |
'PHP' => '"<?php", "<%", "{php}" tag', |
'LOGOP' => '"<", "==" ... logical operator', |
'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition', |
'SCOND' => '"is even" ... if condition', |
); |
/** |
* literal tag nesting level |
* |
* @var int |
*/ |
private $literal_cnt = 0; |
/** |
* preg token pattern for state TEXT |
* |
* @var string |
*/ |
private $yy_global_pattern1 = null; |
/** |
* preg token pattern for state TAG |
* |
* @var string |
*/ |
private $yy_global_pattern2 = null; |
/** |
* preg token pattern for state TAGBODY |
* |
* @var string |
*/ |
private $yy_global_pattern3 = null; |
/** |
* preg token pattern for state LITERAL |
* |
* @var string |
*/ |
private $yy_global_pattern4 = null; |
/** |
* preg token pattern for state DOUBLEQUOTEDSTRING |
* |
* @var null |
*/ |
private $yy_global_pattern5 = null; |
/** |
* preg token pattern for text |
* |
* @var null |
*/ |
private $yy_global_text = null; |
/** |
* preg token pattern for literal |
* |
* @var null |
*/ |
private $yy_global_literal = null; |
private $_yy_state = 1; |
private $_yy_stack = array(); |
/** |
* constructor |
* |
* @param string $source template source |
* @param Smarty_Internal_TemplateCompilerBase $compiler |
*/ |
public function __construct($source, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$this->data = $source; |
$this->dataLength = strlen($this->data); |
$this->counter = 0; |
if (preg_match('/^\xEF\xBB\xBF/i', $this->data, $match)) { |
$this->counter += strlen($match[ 0 ]); |
} |
$this->line = 1; |
$this->smarty = $compiler->template->smarty; |
$this->compiler = $compiler; |
$this->compiler->initDelimiterPreg(); |
$this->smarty_token_names[ 'LDEL' ] = $this->smarty->getLeftDelimiter(); |
$this->smarty_token_names[ 'RDEL' ] = $this->smarty->getRightDelimiter(); |
} |
/** |
* open lexer/parser trace file |
* |
*/ |
public function PrintTrace() |
{ |
$this->yyTraceFILE = fopen('php://output', 'w'); |
$this->yyTracePrompt = '<br>'; |
} |
/** |
* replace placeholders with runtime preg code |
* |
* @param string $preg |
* |
* @return string |
*/ |
public function replace($preg) |
{ |
return $this->compiler->replaceDelimiter($preg); |
} |
/** |
* check if current value is an autoliteral left delimiter |
* |
* @return bool |
*/ |
public function isAutoLiteral() |
{ |
return $this->smarty->getAutoLiteral() && isset($this->value[ $this->compiler->getLdelLength() ]) ? |
strpos(" \n\t\r", $this->value[ $this->compiler->getLdelLength() ]) !== false : false; |
} // end function |
public function yylex() |
{ |
return $this->{'yylex' . $this->_yy_state}(); |
} |
public function yypushstate($state) |
{ |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state); |
} |
array_push($this->_yy_stack, $this->_yy_state); |
$this->_yy_state = $state; |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state); |
} |
} |
public function yypopstate() |
{ |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state); |
} |
$this->_yy_state = array_pop($this->_yy_stack); |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state); |
} |
} |
public function yybegin($state) |
{ |
$this->_yy_state = $state; |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, |
isset($this->state_name[ $this->_yy_state ]) ? $this->state_name[ $this->_yy_state ] : $this->_yy_state); |
} |
} |
public function yylex1() |
{ |
if (!isset($this->yy_global_pattern1)) { |
$this->yy_global_pattern1 = |
$this->replace("/\G([{][}])|\G((SMARTYldel)SMARTYal[*])|\G((SMARTYldel)SMARTYalphp([ ].*?)?SMARTYrdel|(SMARTYldel)SMARTYal[\/]phpSMARTYrdel)|\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([<][?]((php\\s+|=)|\\s+)|[<][%]|[<][?]xml\\s+|[<]script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*[>]|[?][>]|[%][>])|\G([\S\s])/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern1, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr($this->data, |
$this->counter, 5) . '... state TEXT'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r1_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line ' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r1_1() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r1_2() |
{ |
$to = $this->dataLength; |
preg_match("/[*]{$this->compiler->getRdelPreg()}[\n]?/", $this->data, $match, PREG_OFFSET_CAPTURE, |
$this->counter); |
if (isset($match[ 0 ][ 1 ])) { |
$to = $match[ 0 ][ 1 ] + strlen($match[ 0 ][ 0 ]); |
} else { |
$this->compiler->trigger_template_error("missing or misspelled comment closing tag '{$this->smarty->getRightDelimiter()}'"); |
} |
$this->value = substr($this->data, $this->counter, $to - $this->counter); |
return false; |
} |
public function yy_r1_4() |
{ |
$this->compiler->getTagCompiler('private_php')->parsePhp($this); |
} |
public function yy_r1_8() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r1_10() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LITERALSTART; |
$this->yypushstate(self::LITERAL); |
} |
public function yy_r1_12() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LITERALEND; |
$this->yypushstate(self::LITERAL); |
} // end function |
public function yy_r1_14() |
{ |
$this->yypushstate(self::TAG); |
return true; |
} |
public function yy_r1_16() |
{ |
$this->compiler->getTagCompiler('private_php')->parsePhp($this); |
} |
public function yy_r1_19() |
{ |
if (!isset($this->yy_global_text)) { |
$this->yy_global_text = |
$this->replace('/(SMARTYldel)SMARTYal|[<][?]((php\s+|=)|\s+)|[<][%]|[<][?]xml\s+|[<]script\s+language\s*=\s*["\']?\s*php\s*["\']?\s*[>]|[?][>]|[%][>]SMARTYliteral/isS'); |
} |
$to = $this->dataLength; |
preg_match($this->yy_global_text, $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); |
if (isset($match[ 0 ][ 1 ])) { |
$to = $match[ 0 ][ 1 ]; |
} |
$this->value = substr($this->data, $this->counter, $to - $this->counter); |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yylex2() |
{ |
if (!isset($this->yy_global_pattern2)) { |
$this->yy_global_pattern2 = |
$this->replace("/\G((SMARTYldel)SMARTYal(if|elseif|else if|while)\\s+)|\G((SMARTYldel)SMARTYalfor\\s+)|\G((SMARTYldel)SMARTYalforeach(?![^\s]))|\G((SMARTYldel)SMARTYalsetfilter\\s+)|\G((SMARTYldel)SMARTYalmake_nocache\\s+)|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$]smarty\\.block\\.(child|parent)\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/][0-9]*[a-zA-Z_]\\w*\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[$][0-9]*[a-zA-Z_]\\w*(\\s+nocache)?\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal)/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern2, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr($this->data, |
$this->counter, 5) . '... state TAG'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r2_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line ' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r2_1() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDELIF; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r2_4() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDELFOR; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r2_6() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r2_8() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r2_10() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDELMAKENOCACHE; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r2_12() |
{ |
$this->yypopstate(); |
$this->token = Smarty_Internal_Templateparser::TP_SIMPLETAG; |
$this->taglineno = $this->line; |
} |
public function yy_r2_15() |
{ |
$this->yypopstate(); |
$this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT; |
$this->taglineno = $this->line; |
} |
public function yy_r2_18() |
{ |
$this->yypopstate(); |
$this->token = Smarty_Internal_Templateparser::TP_CLOSETAG; |
$this->taglineno = $this->line; |
} |
public function yy_r2_20() |
{ |
if ($this->_yy_stack[ count($this->_yy_stack) - 1 ] === self::TEXT) { |
$this->yypopstate(); |
$this->token = Smarty_Internal_Templateparser::TP_SIMPELOUTPUT; |
$this->taglineno = $this->line; |
} else { |
$this->value = $this->smarty->getLeftDelimiter(); |
$this->token = Smarty_Internal_Templateparser::TP_LDEL; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
} // end function |
public function yy_r2_23() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDELSLASH; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r2_25() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDEL; |
$this->yybegin(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yylex3() |
{ |
if (!isset($this->yy_global_pattern3)) { |
$this->yy_global_pattern3 = |
$this->replace("/\G(\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*([!=][=]{1,2}|[<][=>]?|[>][=]?|[&|]{2})\\s*)|\G(\\s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor)\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even|div)\\s+by\\s+)|\G(\\s+is\\s+(not\\s+)?(odd|even))|\G([!]\\s*|not\\s+)|\G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)]\\s*)|\G(\\s*[(]\\s*)|\G(\\s*[)])|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*[-][>]\\s*)|\G(\\s*[=][>]\\s*)|\G(\\s*[=]\\s*)|\G(([+]|[-]){2})|\G(\\s*([+]|[-])\\s*)|\G(\\s*([*]{1,2}|[%\/^&]|[<>]{2})\\s*)|\G([@])|\G(array\\s*[(]\\s*)|\G([#])|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*[=]\\s*)|\G(([0-9]*[a-zA-Z_]\\w*)?(\\\\[0-9]*[a-zA-Z_]\\w*)+)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G([`])|\G([|][@]?)|\G([.])|\G(\\s*[,]\\s*)|\G(\\s*[;]\\s*)|\G([:]{2})|\G(\\s*[:]\\s*)|\G(\\s*[?]\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G([\S\s])/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern3, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr($this->data, |
$this->counter, 5) . '... state TAGBODY'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r3_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line ' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r3_1() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_RDEL; |
$this->yypopstate(); |
} |
public function yy_r3_2() |
{ |
$this->yypushstate(self::TAG); |
return true; |
} |
public function yy_r3_4() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_QUOTE; |
$this->yypushstate(self::DOUBLEQUOTEDSTRING); |
$this->compiler->enterDoubleQuote(); |
} |
public function yy_r3_5() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING; |
} |
public function yy_r3_6() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_DOLLARID; |
} |
public function yy_r3_7() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_DOLLAR; |
} |
public function yy_r3_8() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_ISIN; |
} |
public function yy_r3_9() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_AS; |
} |
public function yy_r3_10() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TO; |
} |
public function yy_r3_11() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_STEP; |
} |
public function yy_r3_12() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF; |
} |
public function yy_r3_13() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LOGOP; |
} |
public function yy_r3_15() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_SLOGOP; |
} |
public function yy_r3_17() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TLOGOP; |
} |
public function yy_r3_20() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_SINGLECOND; |
} |
public function yy_r3_23() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_NOT; |
} |
public function yy_r3_24() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TYPECAST; |
} |
public function yy_r3_28() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_OPENP; |
} |
public function yy_r3_29() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_CLOSEP; |
} |
public function yy_r3_30() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_OPENB; |
} |
public function yy_r3_31() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_CLOSEB; |
} |
public function yy_r3_32() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_PTR; |
} |
public function yy_r3_33() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_APTR; |
} |
public function yy_r3_34() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_EQUAL; |
} |
public function yy_r3_35() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_INCDEC; |
} |
public function yy_r3_37() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_UNIMATH; |
} |
public function yy_r3_39() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_MATH; |
} |
public function yy_r3_41() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_AT; |
} |
public function yy_r3_42() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_ARRAYOPEN; |
} |
public function yy_r3_43() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_HATCH; |
} |
public function yy_r3_44() |
{ |
// resolve conflicts with shorttag and right_delimiter starting with '=' |
if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->compiler->getRdelLength()) === |
$this->smarty->getRightDelimiter()) { |
preg_match('/\s+/', $this->value, $match); |
$this->value = $match[ 0 ]; |
$this->token = Smarty_Internal_Templateparser::TP_SPACE; |
} else { |
$this->token = Smarty_Internal_Templateparser::TP_ATTR; |
} |
} |
public function yy_r3_45() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_NAMESPACE; |
} |
public function yy_r3_48() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_ID; |
} |
public function yy_r3_49() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_INTEGER; |
} |
public function yy_r3_50() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_BACKTICK; |
$this->yypopstate(); |
} |
public function yy_r3_51() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_VERT; |
} |
public function yy_r3_52() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_DOT; |
} |
public function yy_r3_53() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_COMMA; |
} |
public function yy_r3_54() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_SEMICOLON; |
} |
public function yy_r3_55() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON; |
} |
public function yy_r3_56() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_COLON; |
} |
public function yy_r3_57() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_QMARK; |
} |
public function yy_r3_58() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_HEX; |
} |
public function yy_r3_59() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_SPACE; |
} // end function |
public function yy_r3_60() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yylex4() |
{ |
if (!isset($this->yy_global_pattern4)) { |
$this->yy_global_pattern4 = |
$this->replace("/\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G([\S\s])/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern4, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr($this->data, |
$this->counter, 5) . '... state LITERAL'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r4_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line ' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r4_1() |
{ |
$this->literal_cnt++; |
$this->token = Smarty_Internal_Templateparser::TP_LITERAL; |
} |
public function yy_r4_3() |
{ |
if ($this->literal_cnt) { |
$this->literal_cnt--; |
$this->token = Smarty_Internal_Templateparser::TP_LITERAL; |
} else { |
$this->token = Smarty_Internal_Templateparser::TP_LITERALEND; |
$this->yypopstate(); |
} |
} |
public function yy_r4_5() |
{ |
if (!isset($this->yy_global_literal)) { |
$this->yy_global_literal = $this->replace('/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS'); |
} |
$to = $this->dataLength; |
preg_match($this->yy_global_literal, $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter); |
if (isset($match[ 0 ][ 1 ])) { |
$to = $match[ 0 ][ 1 ]; |
} else { |
$this->compiler->trigger_template_error("missing or misspelled literal closing tag"); |
} |
$this->value = substr($this->data, $this->counter, $to - $this->counter); |
$this->token = Smarty_Internal_Templateparser::TP_LITERAL; |
} // end function |
public function yylex5() |
{ |
if (!isset($this->yy_global_pattern5)) { |
$this->yy_global_pattern5 = |
$this->replace("/\G((SMARTYldel)SMARTYautoliteral\\s+SMARTYliteral)|\G((SMARTYldel)SMARTYalliteral\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/]literal\\s*SMARTYrdel)|\G((SMARTYldel)SMARTYal[\/])|\G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_]\\w*)|\G((SMARTYldel)SMARTYal)|\G([\"])|\G([`][$])|\G([$][0-9]*[a-zA-Z_]\\w*)|\G([$])|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=((SMARTYldel)SMARTYal|\\$|`\\$|\"SMARTYliteral)))|\G([\S\s])/isS"); |
} |
if (!isset($this->dataLength)) { |
$this->dataLength = strlen($this->data); |
} |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
do { |
if (preg_match($this->yy_global_pattern5, $this->data, $yymatches, 0, $this->counter)) { |
if (!isset($yymatches[ 0 ][ 1 ])) { |
$yymatches = preg_grep("/(.|\s)+/", $yymatches); |
} else { |
$yymatches = array_filter($yymatches); |
} |
if (empty($yymatches)) { |
throw new Exception('Error: lexing failed because a rule matched' . |
' an empty string. Input "' . substr($this->data, |
$this->counter, 5) . '... state DOUBLEQUOTEDSTRING'); |
} |
next($yymatches); // skip global match |
$this->token = key($yymatches); // token number |
$this->value = current($yymatches); // token value |
$r = $this->{'yy_r5_' . $this->token}(); |
if ($r === null) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
// accept this token |
return true; |
} elseif ($r === true) { |
// we have changed state |
// process this token in the new state |
return $this->yylex(); |
} elseif ($r === false) { |
$this->counter += strlen($this->value); |
$this->line += substr_count($this->value, "\n"); |
if ($this->counter >= $this->dataLength) { |
return false; // end of input |
} |
// skip this token |
continue; |
} |
} else { |
throw new Exception('Unexpected input at line ' . $this->line . |
': ' . $this->data[ $this->counter ]); |
} |
break; |
} while (true); |
} |
public function yy_r5_1() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r5_3() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r5_5() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r5_7() |
{ |
$this->yypushstate(self::TAG); |
return true; |
} |
public function yy_r5_9() |
{ |
$this->yypushstate(self::TAG); |
return true; |
} |
public function yy_r5_11() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_LDEL; |
$this->taglineno = $this->line; |
$this->yypushstate(self::TAGBODY); |
} |
public function yy_r5_13() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_QUOTE; |
$this->yypopstate(); |
} |
public function yy_r5_14() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_BACKTICK; |
$this->value = substr($this->value, 0, -1); |
$this->yypushstate(self::TAGBODY); |
$this->taglineno = $this->line; |
} |
public function yy_r5_15() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_DOLLARID; |
} |
public function yy_r5_16() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r5_17() |
{ |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
public function yy_r5_22() |
{ |
$to = $this->dataLength; |
$this->value = substr($this->data, $this->counter, $to - $this->counter); |
$this->token = Smarty_Internal_Templateparser::TP_TEXT; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_templateparser.php |
---|
0,0 → 1,3618 |
<?php |
class TP_yyStackEntry |
{ |
public $stateno; /* The state-number */ |
public $major; /* The major token value. This is the code |
** number for the token at this stack level */ |
public $minor; /* The user-supplied minor token value. This |
** is the value of the token */ |
} |
// line 11 "../smarty/lexer/smarty_internal_templateparser.y" |
/** |
* Smarty Template Parser Class |
* |
* This is the template parser. |
* It is generated from the smarty_internal_templateparser.y file |
* |
* @author Uwe Tews <uwe.tews@googlemail.com> |
*/ |
class Smarty_Internal_Templateparser |
{ |
// line 23 "../smarty/lexer/smarty_internal_templateparser.y" |
const ERR1 = 'Security error: Call to private object member not allowed'; |
const ERR2 = 'Security error: Call to dynamic object member not allowed'; |
const ERR3 = 'PHP in template not allowed. Use SmartyBC to enable it'; |
const TP_VERT = 1; |
const TP_COLON = 2; |
const TP_PHP = 3; |
const TP_TEXT = 4; |
const TP_STRIPON = 5; |
const TP_STRIPOFF = 6; |
const TP_LITERALSTART = 7; |
const TP_LITERALEND = 8; |
const TP_LITERAL = 9; |
const TP_SIMPELOUTPUT = 10; |
const TP_SIMPLETAG = 11; |
const TP_SMARTYBLOCKCHILDPARENT = 12; |
const TP_LDEL = 13; |
const TP_RDEL = 14; |
const TP_DOLLARID = 15; |
const TP_EQUAL = 16; |
const TP_ID = 17; |
const TP_PTR = 18; |
const TP_LDELMAKENOCACHE = 19; |
const TP_LDELIF = 20; |
const TP_LDELFOR = 21; |
const TP_SEMICOLON = 22; |
const TP_INCDEC = 23; |
const TP_TO = 24; |
const TP_STEP = 25; |
const TP_LDELFOREACH = 26; |
const TP_SPACE = 27; |
const TP_AS = 28; |
const TP_APTR = 29; |
const TP_LDELSETFILTER = 30; |
const TP_CLOSETAG = 31; |
const TP_LDELSLASH = 32; |
const TP_ATTR = 33; |
const TP_INTEGER = 34; |
const TP_COMMA = 35; |
const TP_OPENP = 36; |
const TP_CLOSEP = 37; |
const TP_MATH = 38; |
const TP_UNIMATH = 39; |
const TP_ISIN = 40; |
const TP_QMARK = 41; |
const TP_NOT = 42; |
const TP_TYPECAST = 43; |
const TP_HEX = 44; |
const TP_DOT = 45; |
const TP_INSTANCEOF = 46; |
const TP_SINGLEQUOTESTRING = 47; |
const TP_DOUBLECOLON = 48; |
const TP_NAMESPACE = 49; |
const TP_AT = 50; |
const TP_HATCH = 51; |
const TP_OPENB = 52; |
const TP_CLOSEB = 53; |
const TP_DOLLAR = 54; |
const TP_LOGOP = 55; |
const TP_SLOGOP = 56; |
const TP_TLOGOP = 57; |
const TP_SINGLECOND = 58; |
const TP_ARRAYOPEN = 59; |
const TP_QUOTE = 60; |
const TP_BACKTICK = 61; |
const YY_NO_ACTION = 516; |
const YY_ACCEPT_ACTION = 515; |
const YY_ERROR_ACTION = 514; |
const YY_SZ_ACTTAB = 2071; |
const YY_SHIFT_USE_DFLT = -31; |
const YY_SHIFT_MAX = 230; |
const YY_REDUCE_USE_DFLT = -91; |
const YY_REDUCE_MAX = 178; |
const YYNOCODE = 110; |
const YYSTACKDEPTH = 500; |
const YYNSTATE = 327; |
const YYNRULE = 187; |
const YYERRORSYMBOL = 62; |
const YYERRSYMDT = 'yy0'; |
const YYFALLBACK = 0; |
public static $yy_action = array( |
251, 234, 237, 1, 144, 127, 428, 184, 199, 212, |
10, 54, 19, 175, 282, 215, 109, 389, 428, 428, |
224, 321, 223, 303, 203, 389, 13, 389, 281, 43, |
389, 428, 41, 40, 266, 225, 389, 213, 389, 194, |
389, 52, 4, 308, 301, 383, 34, 209, 222, 3, |
50, 153, 251, 234, 237, 1, 199, 131, 383, 198, |
305, 212, 10, 54, 383, 16, 199, 428, 109, 385, |
132, 18, 224, 321, 223, 222, 221, 12, 32, 428, |
116, 43, 385, 262, 41, 40, 266, 225, 385, 233, |
95, 194, 16, 52, 4, 131, 301, 252, 18, 265, |
164, 3, 50, 324, 251, 234, 237, 1, 23, 130, |
229, 198, 150, 212, 10, 54, 326, 11, 170, 284, |
109, 42, 22, 239, 224, 321, 223, 193, 221, 261, |
13, 52, 157, 43, 301, 286, 41, 40, 266, 225, |
205, 233, 5, 194, 96, 52, 4, 263, 301, 301, |
99, 349, 96, 3, 50, 199, 251, 234, 237, 1, |
238, 130, 241, 181, 349, 212, 10, 54, 382, 240, |
349, 36, 109, 185, 104, 256, 224, 321, 223, 132, |
191, 382, 13, 49, 91, 43, 12, 382, 41, 40, |
266, 225, 257, 233, 152, 194, 457, 52, 4, 457, |
301, 301, 228, 457, 282, 3, 50, 285, 251, 234, |
237, 1, 301, 131, 441, 198, 238, 212, 10, 54, |
349, 441, 325, 175, 109, 30, 349, 273, 224, 321, |
223, 20, 221, 295, 32, 211, 457, 39, 166, 49, |
41, 40, 266, 225, 87, 233, 205, 194, 279, 52, |
4, 24, 301, 204, 200, 280, 99, 3, 50, 199, |
251, 234, 237, 1, 31, 130, 96, 198, 205, 212, |
10, 54, 350, 55, 293, 207, 109, 283, 99, 96, |
224, 321, 223, 199, 180, 350, 13, 134, 230, 43, |
222, 350, 41, 40, 266, 225, 104, 233, 316, 194, |
279, 52, 4, 24, 301, 165, 284, 280, 85, 3, |
50, 25, 251, 234, 237, 1, 131, 129, 210, 198, |
14, 212, 10, 54, 269, 270, 301, 116, 109, 295, |
216, 211, 224, 321, 223, 171, 221, 95, 13, 28, |
219, 43, 323, 9, 41, 40, 266, 225, 151, 233, |
324, 194, 52, 52, 4, 301, 301, 30, 282, 302, |
178, 3, 50, 7, 251, 234, 237, 1, 136, 130, |
304, 179, 238, 212, 10, 54, 279, 175, 282, 24, |
109, 238, 429, 280, 224, 321, 223, 177, 221, 270, |
13, 255, 281, 43, 429, 49, 41, 40, 266, 225, |
275, 233, 318, 194, 49, 52, 4, 276, 301, 163, |
26, 199, 8, 3, 50, 119, 251, 234, 237, 1, |
11, 93, 291, 51, 107, 212, 10, 54, 226, 428, |
206, 201, 109, 148, 178, 322, 224, 321, 223, 441, |
221, 428, 13, 282, 9, 43, 441, 115, 41, 40, |
266, 225, 167, 233, 227, 194, 457, 52, 4, 457, |
301, 96, 158, 457, 101, 3, 50, 271, 251, 234, |
237, 1, 282, 130, 235, 186, 135, 212, 10, 54, |
199, 37, 119, 315, 109, 165, 284, 176, 224, 321, |
223, 104, 221, 149, 13, 281, 146, 43, 281, 300, |
41, 40, 266, 225, 30, 233, 289, 194, 21, 52, |
4, 272, 301, 211, 18, 301, 161, 3, 50, 110, |
251, 234, 237, 1, 137, 128, 282, 198, 268, 212, |
10, 54, 222, 169, 515, 92, 109, 172, 284, 31, |
224, 321, 223, 29, 221, 238, 6, 260, 53, 43, |
232, 139, 41, 40, 266, 225, 154, 233, 178, 194, |
168, 52, 4, 214, 301, 145, 99, 33, 49, 3, |
50, 245, 208, 211, 320, 282, 90, 111, 311, 183, |
98, 70, 309, 297, 236, 178, 95, 319, 142, 258, |
247, 267, 249, 264, 250, 195, 231, 199, 246, 324, |
317, 253, 254, 259, 126, 137, 133, 251, 234, 237, |
1, 326, 290, 105, 143, 156, 212, 10, 54, 88, |
84, 83, 484, 109, 322, 282, 37, 224, 321, 223, |
245, 208, 211, 320, 281, 90, 111, 298, 182, 98, |
56, 245, 298, 211, 178, 95, 103, 147, 258, 197, |
102, 75, 141, 250, 195, 231, 95, 246, 324, 258, |
279, 242, 89, 24, 250, 195, 231, 280, 246, 324, |
298, 298, 298, 298, 298, 298, 298, 16, 298, 192, |
277, 298, 298, 18, 294, 44, 45, 38, 298, 298, |
251, 234, 237, 2, 298, 296, 298, 298, 298, 212, |
10, 54, 310, 312, 313, 314, 109, 162, 298, 298, |
224, 321, 223, 298, 298, 298, 294, 282, 298, 42, |
22, 239, 251, 234, 237, 2, 298, 296, 298, 298, |
298, 212, 10, 54, 298, 159, 298, 298, 109, 298, |
298, 17, 224, 321, 223, 282, 298, 42, 22, 239, |
298, 298, 245, 298, 211, 278, 298, 103, 111, 298, |
183, 98, 70, 298, 298, 298, 298, 95, 298, 298, |
258, 298, 292, 17, 298, 250, 195, 231, 279, 246, |
324, 24, 298, 395, 245, 280, 211, 298, 298, 103, |
298, 298, 197, 102, 75, 16, 298, 140, 298, 95, |
298, 18, 258, 298, 298, 298, 298, 250, 195, 231, |
298, 246, 324, 298, 298, 298, 298, 428, 298, 395, |
395, 395, 202, 277, 298, 245, 298, 211, 298, 428, |
103, 298, 298, 197, 120, 69, 395, 395, 395, 395, |
95, 298, 298, 258, 298, 298, 298, 160, 250, 195, |
231, 86, 246, 324, 245, 16, 211, 282, 298, 103, |
196, 18, 197, 120, 69, 298, 44, 45, 38, 95, |
298, 298, 258, 298, 298, 298, 178, 250, 195, 231, |
298, 246, 324, 310, 312, 313, 314, 298, 298, 190, |
245, 298, 211, 298, 298, 103, 298, 298, 197, 102, |
75, 298, 298, 298, 298, 95, 298, 298, 258, 298, |
298, 298, 298, 250, 195, 231, 298, 246, 324, 298, |
298, 298, 245, 298, 211, 298, 199, 100, 298, 288, |
197, 120, 47, 298, 106, 298, 298, 95, 298, 353, |
258, 155, 298, 218, 298, 250, 195, 231, 298, 246, |
324, 282, 16, 42, 22, 239, 298, 245, 18, 211, |
298, 428, 103, 298, 298, 197, 120, 69, 298, 298, |
298, 298, 95, 428, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 100, 189, 298, 197, 120, 59, 245, 207, 211, |
298, 95, 103, 298, 258, 197, 120, 81, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 120, 80, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 67, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 120, 57, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 120, 58, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 82, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 97, 76, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 120, 71, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 187, 120, 61, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 120, 63, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 94, 79, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 59, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 120, 77, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 188, 108, 64, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 65, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 97, 66, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 120, 68, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 62, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 120, 60, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 120, 74, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 72, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 120, 48, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 120, 46, 298, 298, |
298, 298, 95, 298, 298, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 120, 78, 245, 298, 211, |
298, 95, 103, 298, 258, 197, 120, 73, 298, 250, |
195, 231, 95, 246, 324, 258, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 125, 298, 298, 298, |
298, 298, 95, 298, 298, 298, 298, 298, 298, 244, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 114, 298, 245, 298, 211, |
298, 95, 103, 298, 298, 197, 122, 298, 243, 250, |
195, 231, 95, 246, 324, 298, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 117, 298, 298, 298, |
298, 298, 95, 298, 298, 298, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 121, 298, 245, 298, 211, |
298, 95, 103, 298, 298, 197, 124, 298, 298, 250, |
195, 231, 95, 246, 324, 298, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 298, 245, 298, 211, |
298, 298, 103, 298, 298, 197, 118, 298, 298, 298, |
298, 298, 95, 298, 298, 298, 298, 298, 298, 298, |
250, 195, 231, 298, 246, 324, 245, 298, 211, 298, |
298, 103, 298, 298, 197, 123, 298, 245, 298, 211, |
298, 95, 103, 298, 298, 197, 113, 298, 298, 250, |
195, 231, 95, 246, 324, 298, 298, 298, 298, 298, |
250, 195, 231, 220, 246, 324, 298, 27, 298, 16, |
298, 457, 298, 298, 457, 18, 298, 26, 457, 441, |
44, 45, 38, 217, 44, 45, 38, 298, 298, 298, |
298, 298, 298, 298, 298, 298, 298, 310, 312, 313, |
314, 310, 312, 313, 314, 298, 441, 298, 298, 441, |
298, 457, 220, 441, 457, 298, 298, 457, 298, 298, |
457, 457, 441, 457, 298, 298, 220, 457, 441, 298, |
298, 298, 298, 298, 457, 298, 298, 457, 298, 298, |
5, 457, 441, 298, 298, 298, 298, 298, 298, 441, |
298, 298, 441, 298, 457, 441, 441, 298, 441, 298, |
457, 298, 441, 306, 298, 298, 298, 298, 298, 441, |
298, 298, 441, 298, 457, 220, 441, 298, 298, 298, |
298, 298, 298, 457, 298, 298, 457, 298, 298, 15, |
457, 441, 35, 274, 44, 45, 38, 457, 298, 298, |
457, 298, 298, 298, 457, 441, 298, 298, 298, 298, |
298, 310, 312, 313, 314, 298, 298, 298, 441, 298, |
298, 441, 298, 457, 298, 441, 287, 298, 44, 45, |
38, 298, 441, 298, 298, 441, 298, 457, 298, 441, |
248, 298, 298, 298, 298, 310, 312, 313, 314, 298, |
44, 45, 38, 298, 298, 112, 298, 44, 45, 38, |
298, 173, 298, 298, 44, 45, 38, 310, 312, 313, |
314, 44, 45, 38, 310, 312, 313, 314, 298, 298, |
299, 310, 312, 313, 314, 44, 45, 38, 310, 312, |
313, 314, 174, 298, 298, 298, 138, 298, 298, 298, |
298, 298, 310, 312, 313, 314, 44, 45, 38, 298, |
298, 298, 44, 45, 38, 298, 44, 45, 38, 298, |
44, 45, 38, 310, 312, 313, 314, 307, 298, 310, |
312, 313, 314, 310, 312, 313, 314, 310, 312, 313, |
314, |
); |
public static $yy_lookahead = array( |
10, 11, 12, 13, 74, 15, 36, 17, 1, 19, |
20, 21, 29, 103, 84, 45, 26, 14, 48, 36, |
30, 31, 32, 53, 34, 22, 36, 24, 98, 39, |
27, 48, 42, 43, 44, 45, 33, 47, 35, 49, |
37, 51, 52, 53, 54, 14, 16, 16, 45, 59, |
60, 96, 10, 11, 12, 13, 1, 15, 27, 17, |
53, 19, 20, 21, 33, 27, 1, 36, 26, 14, |
45, 33, 30, 31, 32, 45, 34, 52, 36, 48, |
72, 39, 27, 75, 42, 43, 44, 45, 33, 47, |
82, 49, 27, 51, 52, 15, 54, 17, 33, 91, |
83, 59, 60, 95, 10, 11, 12, 13, 13, 15, |
15, 17, 17, 19, 20, 21, 97, 35, 99, 100, |
26, 86, 87, 88, 30, 31, 32, 66, 34, 49, |
36, 51, 96, 39, 54, 53, 42, 43, 44, 45, |
72, 47, 16, 49, 18, 51, 52, 79, 54, 54, |
82, 14, 18, 59, 60, 1, 10, 11, 12, 13, |
23, 15, 15, 17, 27, 19, 20, 21, 14, 17, |
33, 13, 26, 15, 48, 17, 30, 31, 32, 45, |
34, 27, 36, 46, 83, 39, 52, 33, 42, 43, |
44, 45, 34, 47, 74, 49, 10, 51, 52, 13, |
54, 54, 50, 17, 84, 59, 60, 14, 10, 11, |
12, 13, 54, 15, 45, 17, 23, 19, 20, 21, |
27, 52, 100, 103, 26, 35, 33, 37, 30, 31, |
32, 22, 34, 67, 36, 69, 50, 39, 83, 46, |
42, 43, 44, 45, 35, 47, 72, 49, 10, 51, |
52, 13, 54, 79, 80, 17, 82, 59, 60, 1, |
10, 11, 12, 13, 16, 15, 18, 17, 72, 19, |
20, 21, 14, 107, 108, 79, 26, 71, 82, 18, |
30, 31, 32, 1, 34, 27, 36, 15, 50, 39, |
45, 33, 42, 43, 44, 45, 48, 47, 53, 49, |
10, 51, 52, 13, 54, 99, 100, 17, 36, 59, |
60, 29, 10, 11, 12, 13, 15, 15, 17, 17, |
13, 19, 20, 21, 8, 9, 54, 72, 26, 67, |
75, 69, 30, 31, 32, 78, 34, 82, 36, 24, |
50, 39, 17, 36, 42, 43, 44, 45, 74, 47, |
95, 49, 51, 51, 52, 54, 54, 35, 84, 37, |
103, 59, 60, 36, 10, 11, 12, 13, 74, 15, |
108, 17, 23, 19, 20, 21, 10, 103, 84, 13, |
26, 23, 36, 17, 30, 31, 32, 7, 34, 9, |
36, 17, 98, 39, 48, 46, 42, 43, 44, 45, |
17, 47, 53, 49, 46, 51, 52, 93, 54, 78, |
16, 1, 36, 59, 60, 101, 10, 11, 12, 13, |
35, 15, 37, 17, 48, 19, 20, 21, 18, 36, |
65, 66, 26, 74, 103, 104, 30, 31, 32, 45, |
34, 48, 36, 84, 36, 39, 52, 17, 42, 43, |
44, 45, 15, 47, 17, 49, 10, 51, 52, 13, |
54, 18, 74, 17, 82, 59, 60, 34, 10, 11, |
12, 13, 84, 15, 93, 17, 15, 19, 20, 21, |
1, 2, 101, 101, 26, 99, 100, 17, 30, 31, |
32, 48, 34, 96, 36, 98, 96, 39, 98, 71, |
42, 43, 44, 45, 35, 47, 37, 49, 27, 51, |
52, 67, 54, 69, 33, 54, 74, 59, 60, 17, |
10, 11, 12, 13, 96, 15, 84, 17, 34, 19, |
20, 21, 45, 78, 63, 64, 26, 99, 100, 16, |
30, 31, 32, 16, 34, 23, 36, 17, 17, 39, |
23, 51, 42, 43, 44, 45, 72, 47, 103, 49, |
78, 51, 52, 17, 54, 74, 82, 41, 46, 59, |
60, 67, 68, 69, 70, 84, 72, 73, 53, 75, |
76, 77, 53, 61, 15, 103, 82, 14, 51, 85, |
14, 37, 17, 8, 90, 91, 92, 1, 94, 95, |
3, 4, 5, 6, 7, 96, 82, 10, 11, 12, |
13, 97, 84, 81, 96, 74, 19, 20, 21, 78, |
82, 82, 1, 26, 104, 84, 2, 30, 31, 32, |
67, 68, 69, 70, 98, 72, 73, 109, 75, 76, |
77, 67, 109, 69, 103, 82, 72, 96, 85, 75, |
76, 77, 96, 90, 91, 92, 82, 94, 95, 85, |
10, 14, 96, 13, 90, 91, 92, 17, 94, 95, |
109, 109, 109, 109, 109, 109, 109, 27, 109, 105, |
106, 109, 109, 33, 4, 38, 39, 40, 109, 109, |
10, 11, 12, 13, 109, 15, 109, 109, 109, 19, |
20, 21, 55, 56, 57, 58, 26, 74, 109, 109, |
30, 31, 32, 109, 109, 109, 4, 84, 109, 86, |
87, 88, 10, 11, 12, 13, 109, 15, 109, 109, |
109, 19, 20, 21, 109, 74, 109, 109, 26, 109, |
60, 61, 30, 31, 32, 84, 109, 86, 87, 88, |
109, 109, 67, 109, 69, 70, 109, 72, 73, 109, |
75, 76, 77, 109, 109, 109, 109, 82, 109, 109, |
85, 109, 60, 61, 109, 90, 91, 92, 10, 94, |
95, 13, 109, 2, 67, 17, 69, 109, 109, 72, |
109, 109, 75, 76, 77, 27, 109, 29, 109, 82, |
109, 33, 85, 109, 109, 109, 109, 90, 91, 92, |
109, 94, 95, 109, 109, 109, 109, 36, 109, 38, |
39, 40, 105, 106, 109, 67, 109, 69, 109, 48, |
72, 109, 109, 75, 76, 77, 55, 56, 57, 58, |
82, 109, 109, 85, 109, 109, 109, 74, 90, 91, |
92, 78, 94, 95, 67, 27, 69, 84, 109, 72, |
102, 33, 75, 76, 77, 109, 38, 39, 40, 82, |
109, 109, 85, 109, 109, 109, 103, 90, 91, 92, |
109, 94, 95, 55, 56, 57, 58, 109, 109, 102, |
67, 109, 69, 109, 109, 72, 109, 109, 75, 76, |
77, 109, 109, 109, 109, 82, 109, 109, 85, 109, |
109, 109, 109, 90, 91, 92, 109, 94, 95, 109, |
109, 109, 67, 109, 69, 109, 1, 72, 109, 106, |
75, 76, 77, 109, 79, 109, 109, 82, 109, 14, |
85, 74, 109, 18, 109, 90, 91, 92, 109, 94, |
95, 84, 27, 86, 87, 88, 109, 67, 33, 69, |
109, 36, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 48, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 102, 109, 75, 76, 77, 67, 79, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 77, 109, 109, |
109, 109, 82, 109, 109, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 77, 67, 109, 69, |
109, 82, 72, 109, 85, 75, 76, 77, 109, 90, |
91, 92, 82, 94, 95, 85, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 109, 109, 109, |
109, 109, 82, 109, 109, 109, 109, 109, 109, 89, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 109, 67, 109, 69, |
109, 82, 72, 109, 109, 75, 76, 109, 89, 90, |
91, 92, 82, 94, 95, 109, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 109, 109, 109, |
109, 109, 82, 109, 109, 109, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 109, 67, 109, 69, |
109, 82, 72, 109, 109, 75, 76, 109, 109, 90, |
91, 92, 82, 94, 95, 109, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 109, 67, 109, 69, |
109, 109, 72, 109, 109, 75, 76, 109, 109, 109, |
109, 109, 82, 109, 109, 109, 109, 109, 109, 109, |
90, 91, 92, 109, 94, 95, 67, 109, 69, 109, |
109, 72, 109, 109, 75, 76, 109, 67, 109, 69, |
109, 82, 72, 109, 109, 75, 76, 109, 109, 90, |
91, 92, 82, 94, 95, 109, 109, 109, 109, 109, |
90, 91, 92, 2, 94, 95, 109, 25, 109, 27, |
109, 10, 109, 109, 13, 33, 109, 16, 17, 18, |
38, 39, 40, 37, 38, 39, 40, 109, 109, 109, |
109, 109, 109, 109, 109, 109, 109, 55, 56, 57, |
58, 55, 56, 57, 58, 109, 45, 109, 109, 48, |
109, 50, 2, 52, 10, 109, 109, 13, 109, 109, |
10, 17, 18, 13, 109, 109, 2, 17, 18, 109, |
109, 109, 109, 109, 10, 109, 109, 13, 109, 109, |
16, 17, 18, 109, 109, 109, 109, 109, 109, 45, |
109, 109, 48, 109, 50, 45, 52, 109, 48, 109, |
50, 109, 52, 53, 109, 109, 109, 109, 109, 45, |
109, 109, 48, 109, 50, 2, 52, 109, 109, 109, |
109, 109, 109, 10, 109, 109, 13, 109, 109, 2, |
17, 18, 2, 37, 38, 39, 40, 10, 109, 109, |
13, 109, 109, 109, 17, 18, 109, 109, 109, 109, |
109, 55, 56, 57, 58, 109, 109, 109, 45, 109, |
109, 48, 109, 50, 109, 52, 14, 109, 38, 39, |
40, 109, 45, 109, 109, 48, 109, 50, 109, 52, |
14, 109, 109, 109, 109, 55, 56, 57, 58, 109, |
38, 39, 40, 109, 109, 22, 109, 38, 39, 40, |
109, 14, 109, 109, 38, 39, 40, 55, 56, 57, |
58, 38, 39, 40, 55, 56, 57, 58, 109, 109, |
61, 55, 56, 57, 58, 38, 39, 40, 55, 56, |
57, 58, 14, 109, 109, 109, 28, 109, 109, 109, |
109, 109, 55, 56, 57, 58, 38, 39, 40, 109, |
109, 109, 38, 39, 40, 109, 38, 39, 40, 109, |
38, 39, 40, 55, 56, 57, 58, 53, 109, 55, |
56, 57, 58, 55, 56, 57, 58, 55, 56, 57, |
58, |
); |
public static $yy_shift_ofst = array( |
-31, 406, 406, 458, 458, 94, 510, 94, 94, 94, |
510, 458, -10, 94, 94, 354, 146, 94, 94, 94, |
94, 146, 94, 94, 94, 94, 250, 94, 94, 94, |
94, 94, 94, 302, 94, 94, 94, 198, 42, 42, |
42, 42, 42, 42, 42, 42, 1772, 828, 828, 80, |
712, 925, 301, 65, 272, 680, 1942, 1920, 1886, 1776, |
647, 1949, 1977, 2008, 2004, 1963, 1998, 1956, 2012, 2012, |
2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, |
2012, 2012, 2012, 768, 650, 272, 65, 272, 65, 134, |
126, 479, 597, 1854, 154, 290, 95, 55, 258, 366, |
248, 366, 282, 443, 437, 38, 38, 437, 7, 481, |
410, 38, 461, 621, 596, 596, 261, 596, 596, 261, |
596, 596, 596, 596, 596, -31, -31, 1840, 1791, 1917, |
1903, 1834, 158, 238, 394, 446, 38, 25, 147, 169, |
147, 25, 169, 25, 38, 38, 25, 25, 38, 25, |
307, 38, 38, 25, 527, 38, 38, 25, 38, 38, |
38, 38, 38, 596, 624, 261, 624, 327, 596, 596, |
261, 596, 261, -31, -31, -31, -31, -31, -31, 781, |
3, 31, 193, 137, -30, 186, -17, 522, 349, 469, |
322, 30, 82, 316, 346, 376, 190, 358, 393, 152, |
209, 380, 385, 245, 315, 523, 585, 554, 576, 575, |
537, 573, 569, 529, 525, 546, 500, 526, 531, 325, |
530, 487, 494, 502, 470, 433, 430, 408, 383, 327, |
374, |
); |
public static $yy_reduce_ofst = array( |
471, 504, 563, 717, 574, 685, 919, 890, 787, 758, |
855, 823, 1240, 1199, 1140, 1100, 1070, 1129, 1170, 1210, |
1269, 1280, 1310, 1339, 1350, 1380, 1409, 1420, 1450, 1479, |
1490, 1059, 1030, 1000, 930, 960, 989, 1520, 1549, 1700, |
1619, 1689, 1660, 1630, 1590, 1560, 633, 661, 867, 8, |
166, 773, 255, 541, 174, 262, 35, 35, 35, 35, |
35, 35, 35, 35, 35, 35, 35, 35, 35, 35, |
35, 35, 35, 35, 35, 35, 35, 35, 35, 35, |
35, 35, 35, 294, -70, 196, 120, 68, 274, 19, |
206, 331, 444, 428, 257, 400, 382, 257, 257, 400, |
386, 397, 257, 386, 381, 388, 359, 314, 257, 442, |
482, 491, 484, 257, 257, 455, 386, 257, 257, 438, |
257, 257, 257, 257, 257, 257, 365, 509, 509, 509, |
509, 509, 524, 536, 509, 509, 528, 514, 539, 551, |
538, 514, 556, 514, 528, 528, 514, 514, 528, 514, |
518, 528, 528, 514, 532, 528, 528, 514, 528, 528, |
528, 528, 528, -90, 520, 122, 520, 566, -90, -90, |
122, -90, 122, -45, 36, 155, 101, 61, 17, |
); |
public static $yyExpectedTokens = array( |
array(), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 53, 54, 59, |
60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array( |
10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60, |
), |
array(25, 27, 33, 38, 39, 40, 55, 56, 57, 58,), |
array(27, 33, 38, 39, 40, 55, 56, 57, 58,), |
array(27, 33, 38, 39, 40, 55, 56, 57, 58,), |
array(15, 17, 49, 51, 54,), |
array(4, 10, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 60, 61,), |
array(1, 14, 18, 27, 33, 36, 48,), |
array(15, 17, 51, 54,), |
array(1, 27, 33,), |
array(15, 36, 54,), |
array(4, 10, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 60, 61,), |
array(14, 38, 39, 40, 55, 56, 57, 58,), |
array(2, 38, 39, 40, 55, 56, 57, 58,), |
array(37, 38, 39, 40, 55, 56, 57, 58,), |
array(37, 38, 39, 40, 55, 56, 57, 58,), |
array(14, 38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58, 61,), |
array(14, 38, 39, 40, 55, 56, 57, 58,), |
array(14, 38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 53, 55, 56, 57, 58,), |
array(22, 38, 39, 40, 55, 56, 57, 58,), |
array(28, 38, 39, 40, 55, 56, 57, 58,), |
array(14, 38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(38, 39, 40, 55, 56, 57, 58,), |
array(10, 13, 17, 27, 29, 33,), |
array(10, 13, 17, 27, 33,), |
array(15, 36, 54,), |
array(1, 27, 33,), |
array(15, 36, 54,), |
array(1, 27, 33,), |
array(18, 45, 52,), |
array(16, 18, 48,), |
array(1, 2,), |
array(3, 4, 5, 6, 7, 10, 11, 12, 13, 19, 20, 21, 26, 30, 31, 32,), |
array(2, 10, 13, 16, 17, 18, 45, 48, 50, 52,), |
array(1, 14, 27, 33,), |
array(10, 13, 17, 50,), |
array(13, 15, 17, 54,), |
array(1, 14, 27, 33,), |
array(1, 14, 27, 33,), |
array(10, 13, 17,), |
array(16, 18, 48,), |
array(10, 13, 17,), |
array(1, 29,), |
array(18, 48,), |
array(15, 17,), |
array(27, 33,), |
array(27, 33,), |
array(15, 17,), |
array(1, 53,), |
array(27, 33,), |
array(1, 18,), |
array(27, 33,), |
array(15, 54,), |
array(1,), |
array(1,), |
array(1,), |
array(18,), |
array(1,), |
array(1,), |
array(18,), |
array(1,), |
array(1,), |
array(1,), |
array(1,), |
array(1,), |
array(), |
array(), |
array(2, 10, 13, 17, 18, 45, 48, 50, 52, 53,), |
array(2, 10, 13, 16, 17, 18, 45, 48, 50, 52,), |
array(2, 10, 13, 17, 18, 45, 48, 50, 52,), |
array(2, 10, 13, 17, 18, 45, 48, 50, 52,), |
array(10, 13, 17, 18, 45, 48, 50, 52,), |
array(13, 15, 17, 34, 54,), |
array(10, 13, 17, 50,), |
array(16, 45, 52,), |
array(10, 13, 17,), |
array(27, 33,), |
array(45, 52,), |
array(15, 54,), |
array(45, 52,), |
array(15, 54,), |
array(45, 52,), |
array(45, 52,), |
array(45, 52,), |
array(27, 33,), |
array(27, 33,), |
array(45, 52,), |
array(45, 52,), |
array(27, 33,), |
array(45, 52,), |
array(13, 36,), |
array(27, 33,), |
array(27, 33,), |
array(45, 52,), |
array(16, 23,), |
array(27, 33,), |
array(27, 33,), |
array(45, 52,), |
array(27, 33,), |
array(27, 33,), |
array(27, 33,), |
array(27, 33,), |
array(27, 33,), |
array(1,), |
array(2,), |
array(18,), |
array(2,), |
array(36,), |
array(1,), |
array(1,), |
array(18,), |
array(1,), |
array(18,), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(2, 36, 38, 39, 40, 48, 55, 56, 57, 58,), |
array(14, 22, 24, 27, 33, 35, 37, 45,), |
array(14, 16, 27, 33, 36, 48,), |
array(14, 23, 27, 33, 46,), |
array(14, 23, 27, 33, 46,), |
array(36, 45, 48, 53,), |
array(10, 13, 17, 50,), |
array(29, 36, 48,), |
array(23, 46, 61,), |
array(23, 46, 53,), |
array(35, 37,), |
array(35, 37,), |
array(16, 45,), |
array(35, 53,), |
array(8, 9,), |
array(36, 48,), |
array(36, 48,), |
array(35, 37,), |
array(23, 46,), |
array(36, 48,), |
array(17, 50,), |
array(22, 35,), |
array(7, 9,), |
array(35, 37,), |
array(45, 53,), |
array(24,), |
array(16,), |
array(8,), |
array(37,), |
array(14,), |
array(17,), |
array(51,), |
array(14,), |
array(15,), |
array(53,), |
array(53,), |
array(17,), |
array(51,), |
array(41,), |
array(17,), |
array(17,), |
array(17,), |
array(45,), |
array(34,), |
array(17,), |
array(17,), |
array(34,), |
array(17,), |
array(36,), |
array(17,), |
array(36,), |
array(17,), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
array(), |
); |
public static $yy_default = array( |
338, 514, 514, 499, 499, 514, 514, 476, 476, 476, |
514, 514, 514, 514, 514, 514, 514, 514, 514, 514, |
514, 514, 514, 514, 514, 514, 514, 514, 514, 514, |
514, 514, 514, 514, 514, 514, 514, 514, 514, 514, |
514, 514, 514, 514, 514, 514, 379, 358, 379, 514, |
514, 415, 514, 379, 514, 514, 351, 514, 514, 514, |
514, 514, 514, 514, 514, 514, 384, 514, 399, 475, |
351, 403, 390, 474, 500, 502, 384, 501, 363, 381, |
404, 386, 391, 379, 379, 514, 379, 514, 379, 489, |
431, 370, 327, 430, 393, 441, 514, 393, 393, 441, |
431, 441, 393, 431, 514, 379, 360, 514, 393, 379, |
373, 379, 514, 406, 402, 375, 431, 396, 398, 486, |
393, 408, 397, 407, 406, 483, 336, 430, 430, 430, |
430, 430, 514, 443, 457, 441, 367, 438, 514, 436, |
514, 435, 434, 466, 368, 348, 439, 437, 361, 467, |
441, 356, 354, 468, 514, 366, 355, 469, 362, 359, |
352, 369, 365, 371, 478, 463, 477, 441, 374, 376, |
490, 424, 487, 441, 441, 482, 482, 336, 482, 415, |
411, 415, 405, 405, 415, 442, 415, 405, 405, 514, |
514, 411, 514, 514, 425, 514, 514, 405, 415, 514, |
514, 334, 514, 411, 387, 514, 514, 514, 514, 514, |
514, 514, 514, 420, 514, 514, 514, 417, 514, 514, |
514, 411, 413, 514, 514, 514, 514, 488, 514, 457, |
514, 421, 364, 420, 340, 422, 357, 341, 409, 400, |
480, 457, 462, 401, 485, 423, 426, 342, 447, 380, |
416, 339, 428, 329, 330, 444, 445, 446, 394, 331, |
395, 429, 419, 388, 332, 418, 410, 392, 412, 333, |
335, 414, 337, 472, 417, 479, 427, 497, 347, 461, |
460, 459, 378, 346, 464, 510, 495, 511, 498, 473, |
377, 496, 503, 506, 513, 512, 509, 507, 504, 508, |
345, 458, 471, 448, 505, 454, 452, 455, 456, 450, |
491, 449, 492, 493, 494, 470, 451, 328, 453, 343, |
344, 372, 481, 432, 433, 465, 440, |
); |
public static $yyFallback = array(); |
public static $yyRuleName = array( |
'start ::= template', |
'template ::= template PHP', |
'template ::= template TEXT', |
'template ::= template STRIPON', |
'template ::= template STRIPOFF', |
'template ::= template LITERALSTART literal_e2 LITERALEND', |
'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND', |
'literal_e2 ::= literal_e1', |
'literal_e1 ::= literal_e1 LITERAL', |
'literal_e1 ::=', |
'template ::= template smartytag', |
'template ::=', |
'smartytag ::= SIMPELOUTPUT', |
'smartytag ::= SIMPLETAG', |
'smartytag ::= SMARTYBLOCKCHILDPARENT', |
'smartytag ::= LDEL tagbody RDEL', |
'smartytag ::= tag RDEL', |
'tagbody ::= outattr', |
'tagbody ::= DOLLARID eqoutattr', |
'tagbody ::= varindexed eqoutattr', |
'eqoutattr ::= EQUAL outattr', |
'outattr ::= output attributes', |
'output ::= variable', |
'output ::= value', |
'output ::= expr', |
'tag ::= LDEL ID attributes', |
'tag ::= LDEL ID', |
'tag ::= LDEL ID modifierlist attributes', |
'tag ::= LDEL ID PTR ID attributes', |
'tag ::= LDEL ID PTR ID modifierlist attributes', |
'tag ::= LDELMAKENOCACHE DOLLARID', |
'tag ::= LDELIF expr', |
'tag ::= LDELIF expr attributes', |
'tag ::= LDELIF statement', |
'tag ::= LDELIF statement attributes', |
'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes', |
'foraction ::= EQUAL expr', |
'foraction ::= INCDEC', |
'tag ::= LDELFOR statement TO expr attributes', |
'tag ::= LDELFOR statement TO expr STEP expr attributes', |
'tag ::= LDELFOREACH SPACE expr AS varvar attributes', |
'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes', |
'tag ::= LDELFOREACH attributes', |
'tag ::= LDELSETFILTER ID modparameters', |
'tag ::= LDELSETFILTER ID modparameters modifierlist', |
'smartytag ::= CLOSETAG', |
'tag ::= LDELSLASH ID', |
'tag ::= LDELSLASH ID modifierlist', |
'tag ::= LDELSLASH ID PTR ID', |
'tag ::= LDELSLASH ID PTR ID modifierlist', |
'attributes ::= attributes attribute', |
'attributes ::= attribute', |
'attributes ::=', |
'attribute ::= SPACE ID EQUAL ID', |
'attribute ::= ATTR expr', |
'attribute ::= ATTR value', |
'attribute ::= SPACE ID', |
'attribute ::= SPACE expr', |
'attribute ::= SPACE value', |
'attribute ::= SPACE INTEGER EQUAL expr', |
'statements ::= statement', |
'statements ::= statements COMMA statement', |
'statement ::= DOLLARID EQUAL INTEGER', |
'statement ::= DOLLARID EQUAL expr', |
'statement ::= varindexed EQUAL expr', |
'statement ::= OPENP statement CLOSEP', |
'expr ::= value', |
'expr ::= ternary', |
'expr ::= DOLLARID COLON ID', |
'expr ::= expr MATH value', |
'expr ::= expr UNIMATH value', |
'expr ::= expr tlop value', |
'expr ::= expr lop expr', |
'expr ::= expr scond', |
'expr ::= expr ISIN array', |
'expr ::= expr ISIN value', |
'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr', |
'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', |
'value ::= variable', |
'value ::= UNIMATH value', |
'value ::= NOT value', |
'value ::= TYPECAST value', |
'value ::= variable INCDEC', |
'value ::= HEX', |
'value ::= INTEGER', |
'value ::= INTEGER DOT INTEGER', |
'value ::= INTEGER DOT', |
'value ::= DOT INTEGER', |
'value ::= ID', |
'value ::= function', |
'value ::= OPENP expr CLOSEP', |
'value ::= variable INSTANCEOF ns1', |
'value ::= variable INSTANCEOF variable', |
'value ::= SINGLEQUOTESTRING', |
'value ::= doublequoted_with_quotes', |
'value ::= varindexed DOUBLECOLON static_class_access', |
'value ::= smartytag', |
'value ::= value modifierlist', |
'value ::= NAMESPACE', |
'value ::= arraydef', |
'value ::= ns1 DOUBLECOLON static_class_access', |
'ns1 ::= ID', |
'ns1 ::= NAMESPACE', |
'variable ::= DOLLARID', |
'variable ::= varindexed', |
'variable ::= varvar AT ID', |
'variable ::= object', |
'variable ::= HATCH ID HATCH', |
'variable ::= HATCH ID HATCH arrayindex', |
'variable ::= HATCH variable HATCH', |
'variable ::= HATCH variable HATCH arrayindex', |
'varindexed ::= DOLLARID arrayindex', |
'varindexed ::= varvar arrayindex', |
'arrayindex ::= arrayindex indexdef', |
'arrayindex ::=', |
'indexdef ::= DOT DOLLARID', |
'indexdef ::= DOT varvar', |
'indexdef ::= DOT varvar AT ID', |
'indexdef ::= DOT ID', |
'indexdef ::= DOT INTEGER', |
'indexdef ::= DOT LDEL expr RDEL', |
'indexdef ::= OPENB ID CLOSEB', |
'indexdef ::= OPENB ID DOT ID CLOSEB', |
'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB', |
'indexdef ::= OPENB INTEGER CLOSEB', |
'indexdef ::= OPENB DOLLARID CLOSEB', |
'indexdef ::= OPENB variable CLOSEB', |
'indexdef ::= OPENB value CLOSEB', |
'indexdef ::= OPENB expr CLOSEB', |
'indexdef ::= OPENB CLOSEB', |
'varvar ::= DOLLARID', |
'varvar ::= DOLLAR', |
'varvar ::= varvar varvarele', |
'varvarele ::= ID', |
'varvarele ::= SIMPELOUTPUT', |
'varvarele ::= LDEL expr RDEL', |
'object ::= varindexed objectchain', |
'objectchain ::= objectelement', |
'objectchain ::= objectchain objectelement', |
'objectelement ::= PTR ID arrayindex', |
'objectelement ::= PTR varvar arrayindex', |
'objectelement ::= PTR LDEL expr RDEL arrayindex', |
'objectelement ::= PTR ID LDEL expr RDEL arrayindex', |
'objectelement ::= PTR method', |
'function ::= ns1 OPENP params CLOSEP', |
'method ::= ID OPENP params CLOSEP', |
'method ::= DOLLARID OPENP params CLOSEP', |
'params ::= params COMMA expr', |
'params ::= expr', |
'params ::=', |
'modifierlist ::= modifierlist modifier modparameters', |
'modifierlist ::= modifier modparameters', |
'modifier ::= VERT AT ID', |
'modifier ::= VERT ID', |
'modparameters ::= modparameters modparameter', |
'modparameters ::=', |
'modparameter ::= COLON value', |
'modparameter ::= COLON UNIMATH value', |
'modparameter ::= COLON array', |
'static_class_access ::= method', |
'static_class_access ::= method objectchain', |
'static_class_access ::= ID', |
'static_class_access ::= DOLLARID arrayindex', |
'static_class_access ::= DOLLARID arrayindex objectchain', |
'lop ::= LOGOP', |
'lop ::= SLOGOP', |
'tlop ::= TLOGOP', |
'scond ::= SINGLECOND', |
'arraydef ::= OPENB arrayelements CLOSEB', |
'arraydef ::= ARRAYOPEN arrayelements CLOSEP', |
'arrayelements ::= arrayelement', |
'arrayelements ::= arrayelements COMMA arrayelement', |
'arrayelements ::=', |
'arrayelement ::= value APTR expr', |
'arrayelement ::= ID APTR expr', |
'arrayelement ::= expr', |
'doublequoted_with_quotes ::= QUOTE QUOTE', |
'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE', |
'doublequoted ::= doublequoted doublequotedcontent', |
'doublequoted ::= doublequotedcontent', |
'doublequotedcontent ::= BACKTICK variable BACKTICK', |
'doublequotedcontent ::= BACKTICK expr BACKTICK', |
'doublequotedcontent ::= DOLLARID', |
'doublequotedcontent ::= LDEL variable RDEL', |
'doublequotedcontent ::= LDEL expr RDEL', |
'doublequotedcontent ::= smartytag', |
'doublequotedcontent ::= TEXT', |
); |
public static $yyRuleInfo = array( |
array(0 => 63, 1 => 1), |
array(0 => 64, 1 => 2), |
array(0 => 64, 1 => 2), |
array(0 => 64, 1 => 2), |
array(0 => 64, 1 => 2), |
array(0 => 64, 1 => 4), |
array(0 => 65, 1 => 4), |
array(0 => 65, 1 => 1), |
array(0 => 66, 1 => 2), |
array(0 => 66, 1 => 0), |
array(0 => 64, 1 => 2), |
array(0 => 64, 1 => 0), |
array(0 => 67, 1 => 1), |
array(0 => 67, 1 => 1), |
array(0 => 67, 1 => 1), |
array(0 => 67, 1 => 3), |
array(0 => 67, 1 => 2), |
array(0 => 68, 1 => 1), |
array(0 => 68, 1 => 2), |
array(0 => 68, 1 => 2), |
array(0 => 71, 1 => 2), |
array(0 => 70, 1 => 2), |
array(0 => 73, 1 => 1), |
array(0 => 73, 1 => 1), |
array(0 => 73, 1 => 1), |
array(0 => 69, 1 => 3), |
array(0 => 69, 1 => 2), |
array(0 => 69, 1 => 4), |
array(0 => 69, 1 => 5), |
array(0 => 69, 1 => 6), |
array(0 => 69, 1 => 2), |
array(0 => 69, 1 => 2), |
array(0 => 69, 1 => 3), |
array(0 => 69, 1 => 2), |
array(0 => 69, 1 => 3), |
array(0 => 69, 1 => 8), |
array(0 => 81, 1 => 2), |
array(0 => 81, 1 => 1), |
array(0 => 69, 1 => 5), |
array(0 => 69, 1 => 7), |
array(0 => 69, 1 => 6), |
array(0 => 69, 1 => 8), |
array(0 => 69, 1 => 2), |
array(0 => 69, 1 => 3), |
array(0 => 69, 1 => 4), |
array(0 => 67, 1 => 1), |
array(0 => 69, 1 => 2), |
array(0 => 69, 1 => 3), |
array(0 => 69, 1 => 4), |
array(0 => 69, 1 => 5), |
array(0 => 74, 1 => 2), |
array(0 => 74, 1 => 1), |
array(0 => 74, 1 => 0), |
array(0 => 84, 1 => 4), |
array(0 => 84, 1 => 2), |
array(0 => 84, 1 => 2), |
array(0 => 84, 1 => 2), |
array(0 => 84, 1 => 2), |
array(0 => 84, 1 => 2), |
array(0 => 84, 1 => 4), |
array(0 => 80, 1 => 1), |
array(0 => 80, 1 => 3), |
array(0 => 79, 1 => 3), |
array(0 => 79, 1 => 3), |
array(0 => 79, 1 => 3), |
array(0 => 79, 1 => 3), |
array(0 => 77, 1 => 1), |
array(0 => 77, 1 => 1), |
array(0 => 77, 1 => 3), |
array(0 => 77, 1 => 3), |
array(0 => 77, 1 => 3), |
array(0 => 77, 1 => 3), |
array(0 => 77, 1 => 3), |
array(0 => 77, 1 => 2), |
array(0 => 77, 1 => 3), |
array(0 => 77, 1 => 3), |
array(0 => 85, 1 => 7), |
array(0 => 85, 1 => 7), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 3), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 3), |
array(0 => 76, 1 => 3), |
array(0 => 76, 1 => 3), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 3), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 2), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 1), |
array(0 => 76, 1 => 3), |
array(0 => 91, 1 => 1), |
array(0 => 91, 1 => 1), |
array(0 => 75, 1 => 1), |
array(0 => 75, 1 => 1), |
array(0 => 75, 1 => 3), |
array(0 => 75, 1 => 1), |
array(0 => 75, 1 => 3), |
array(0 => 75, 1 => 4), |
array(0 => 75, 1 => 3), |
array(0 => 75, 1 => 4), |
array(0 => 72, 1 => 2), |
array(0 => 72, 1 => 2), |
array(0 => 96, 1 => 2), |
array(0 => 96, 1 => 0), |
array(0 => 97, 1 => 2), |
array(0 => 97, 1 => 2), |
array(0 => 97, 1 => 4), |
array(0 => 97, 1 => 2), |
array(0 => 97, 1 => 2), |
array(0 => 97, 1 => 4), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 5), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 3), |
array(0 => 97, 1 => 2), |
array(0 => 82, 1 => 1), |
array(0 => 82, 1 => 1), |
array(0 => 82, 1 => 2), |
array(0 => 98, 1 => 1), |
array(0 => 98, 1 => 1), |
array(0 => 98, 1 => 3), |
array(0 => 95, 1 => 2), |
array(0 => 99, 1 => 1), |
array(0 => 99, 1 => 2), |
array(0 => 100, 1 => 3), |
array(0 => 100, 1 => 3), |
array(0 => 100, 1 => 5), |
array(0 => 100, 1 => 6), |
array(0 => 100, 1 => 2), |
array(0 => 90, 1 => 4), |
array(0 => 101, 1 => 4), |
array(0 => 101, 1 => 4), |
array(0 => 102, 1 => 3), |
array(0 => 102, 1 => 1), |
array(0 => 102, 1 => 0), |
array(0 => 78, 1 => 3), |
array(0 => 78, 1 => 2), |
array(0 => 103, 1 => 3), |
array(0 => 103, 1 => 2), |
array(0 => 83, 1 => 2), |
array(0 => 83, 1 => 0), |
array(0 => 104, 1 => 2), |
array(0 => 104, 1 => 3), |
array(0 => 104, 1 => 2), |
array(0 => 93, 1 => 1), |
array(0 => 93, 1 => 2), |
array(0 => 93, 1 => 1), |
array(0 => 93, 1 => 2), |
array(0 => 93, 1 => 3), |
array(0 => 87, 1 => 1), |
array(0 => 87, 1 => 1), |
array(0 => 86, 1 => 1), |
array(0 => 88, 1 => 1), |
array(0 => 94, 1 => 3), |
array(0 => 94, 1 => 3), |
array(0 => 105, 1 => 1), |
array(0 => 105, 1 => 3), |
array(0 => 105, 1 => 0), |
array(0 => 106, 1 => 3), |
array(0 => 106, 1 => 3), |
array(0 => 106, 1 => 1), |
array(0 => 92, 1 => 2), |
array(0 => 92, 1 => 3), |
array(0 => 107, 1 => 2), |
array(0 => 107, 1 => 1), |
array(0 => 108, 1 => 3), |
array(0 => 108, 1 => 3), |
array(0 => 108, 1 => 1), |
array(0 => 108, 1 => 3), |
array(0 => 108, 1 => 3), |
array(0 => 108, 1 => 1), |
array(0 => 108, 1 => 1), |
); |
public static $yyReduceMap = array( |
0 => 0, |
1 => 1, |
2 => 2, |
3 => 3, |
4 => 4, |
5 => 5, |
6 => 6, |
7 => 7, |
22 => 7, |
23 => 7, |
24 => 7, |
37 => 7, |
57 => 7, |
58 => 7, |
66 => 7, |
67 => 7, |
78 => 7, |
83 => 7, |
84 => 7, |
89 => 7, |
93 => 7, |
94 => 7, |
98 => 7, |
99 => 7, |
101 => 7, |
106 => 7, |
170 => 7, |
175 => 7, |
8 => 8, |
9 => 9, |
10 => 10, |
12 => 12, |
13 => 13, |
14 => 14, |
15 => 15, |
16 => 16, |
17 => 17, |
18 => 18, |
19 => 19, |
20 => 20, |
21 => 21, |
25 => 25, |
26 => 26, |
27 => 27, |
28 => 28, |
29 => 29, |
30 => 30, |
31 => 31, |
32 => 32, |
34 => 32, |
33 => 33, |
35 => 35, |
36 => 36, |
38 => 38, |
39 => 39, |
40 => 40, |
41 => 41, |
42 => 42, |
43 => 43, |
44 => 44, |
45 => 45, |
46 => 46, |
47 => 47, |
48 => 48, |
49 => 49, |
50 => 50, |
51 => 51, |
60 => 51, |
148 => 51, |
152 => 51, |
156 => 51, |
158 => 51, |
52 => 52, |
149 => 52, |
155 => 52, |
53 => 53, |
54 => 54, |
55 => 54, |
56 => 56, |
133 => 56, |
59 => 59, |
61 => 61, |
62 => 62, |
63 => 62, |
64 => 64, |
65 => 65, |
68 => 68, |
69 => 69, |
70 => 69, |
71 => 71, |
72 => 72, |
73 => 73, |
74 => 74, |
75 => 75, |
76 => 76, |
77 => 77, |
79 => 79, |
81 => 79, |
82 => 79, |
113 => 79, |
80 => 80, |
85 => 85, |
86 => 86, |
87 => 87, |
88 => 88, |
90 => 90, |
91 => 91, |
92 => 91, |
95 => 95, |
96 => 96, |
97 => 97, |
100 => 100, |
102 => 102, |
103 => 103, |
104 => 104, |
105 => 105, |
107 => 107, |
108 => 108, |
109 => 109, |
110 => 110, |
111 => 111, |
112 => 112, |
114 => 114, |
172 => 114, |
115 => 115, |
116 => 116, |
117 => 117, |
118 => 118, |
119 => 119, |
120 => 120, |
128 => 120, |
121 => 121, |
122 => 122, |
123 => 123, |
124 => 123, |
126 => 123, |
127 => 123, |
125 => 125, |
129 => 129, |
130 => 130, |
131 => 131, |
176 => 131, |
132 => 132, |
134 => 134, |
135 => 135, |
136 => 136, |
137 => 137, |
138 => 138, |
139 => 139, |
140 => 140, |
141 => 141, |
142 => 142, |
143 => 143, |
144 => 144, |
145 => 145, |
146 => 146, |
147 => 147, |
150 => 150, |
151 => 151, |
153 => 153, |
154 => 154, |
157 => 157, |
159 => 159, |
160 => 160, |
161 => 161, |
162 => 162, |
163 => 163, |
164 => 164, |
165 => 165, |
166 => 166, |
167 => 167, |
168 => 168, |
169 => 168, |
171 => 171, |
173 => 173, |
174 => 174, |
177 => 177, |
178 => 178, |
179 => 179, |
180 => 180, |
183 => 180, |
181 => 181, |
184 => 181, |
182 => 182, |
185 => 185, |
186 => 186, |
); |
/** |
* result status |
* |
* @var bool |
*/ |
public $successful = true; |
/** |
* return value |
* |
* @var mixed |
*/ |
public $retvalue = 0; |
/** |
* @var |
*/ |
public $yymajor; |
/** |
* last index of array variable |
* |
* @var mixed |
*/ |
public $last_index; |
/** |
* last variable name |
* |
* @var string |
*/ |
public $last_variable; |
/** |
* root parse tree buffer |
* |
* @var Smarty_Internal_ParseTree_Template |
*/ |
public $root_buffer; |
/** |
* current parse tree object |
* |
* @var Smarty_Internal_ParseTree |
*/ |
public $current_buffer; |
/** |
* lexer object |
* |
* @var Smarty_Internal_Templatelexer |
*/ |
public $lex; |
/** |
* {strip} status |
* |
* @var bool |
*/ |
public $strip = false; |
/** |
* compiler object |
* |
* @var Smarty_Internal_TemplateCompilerBase |
*/ |
public $compiler = null; |
/** |
* smarty object |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* template object |
* |
* @var Smarty_Internal_Template |
*/ |
public $template = null; |
/** |
* block nesting level |
* |
* @var int |
*/ |
public $block_nesting_level = 0; |
/** |
* security object |
* |
* @var Smarty_Security |
*/ |
public $security = null; |
/** |
* template prefix array |
* |
* @var \Smarty_Internal_ParseTree[] |
*/ |
public $template_prefix = array(); |
/** |
* template prefix array |
* |
* @var \Smarty_Internal_ParseTree[] |
*/ |
public $template_postfix = array(); |
public $yyTraceFILE; |
public $yyTracePrompt; |
public $yyidx; |
public $yyerrcnt; |
public $yystack = array(); |
public $yyTokenName = array( |
'$', 'VERT', 'COLON', 'PHP', |
'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART', |
'LITERALEND', 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG', |
'SMARTYBLOCKCHILDPARENT', 'LDEL', 'RDEL', 'DOLLARID', |
'EQUAL', 'ID', 'PTR', 'LDELMAKENOCACHE', |
'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC', |
'TO', 'STEP', 'LDELFOREACH', 'SPACE', |
'AS', 'APTR', 'LDELSETFILTER', 'CLOSETAG', |
'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', |
'OPENP', 'CLOSEP', 'MATH', 'UNIMATH', |
'ISIN', 'QMARK', 'NOT', 'TYPECAST', |
'HEX', 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING', |
'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', |
'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP', |
'SLOGOP', 'TLOGOP', 'SINGLECOND', 'ARRAYOPEN', |
'QUOTE', 'BACKTICK', 'error', 'start', |
'template', 'literal_e2', 'literal_e1', 'smartytag', |
'tagbody', 'tag', 'outattr', 'eqoutattr', |
'varindexed', 'output', 'attributes', 'variable', |
'value', 'expr', 'modifierlist', 'statement', |
'statements', 'foraction', 'varvar', 'modparameters', |
'attribute', 'ternary', 'tlop', 'lop', |
'scond', 'array', 'function', 'ns1', |
'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'object', |
'arrayindex', 'indexdef', 'varvarele', 'objectchain', |
'objectelement', 'method', 'params', 'modifier', |
'modparameter', 'arrayelements', 'arrayelement', 'doublequoted', |
'doublequotedcontent', |
); |
/** |
* internal error flag |
* |
* @var bool |
*/ |
private $internalError = false; /* Index of top element in stack */ |
private $_retvalue; /* Shifts left before out of the error */ |
/** |
* constructor |
* |
* @param Smarty_Internal_Templatelexer $lex |
* @param Smarty_Internal_TemplateCompilerBase $compiler |
*/ |
public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler) |
{ |
$this->lex = $lex; |
$this->compiler = $compiler; |
$this->template = $this->compiler->template; |
$this->smarty = $this->template->smarty; |
$this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false; |
$this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template(); |
} /* The parser's stack */ |
public static function yy_destructor($yymajor, $yypminor) |
{ |
switch ($yymajor) { |
default: |
break; /* If no destructor action specified: do nothing */ |
} |
} |
/** |
* insert PHP code in current buffer |
* |
* @param string $code |
*/ |
public function insertPhpCode($code) |
{ |
$this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code)); |
} |
/** |
* error rundown |
* |
*/ |
public function errorRunDown() |
{ |
while ($this->yystack !== array()) { |
$this->yy_pop_parser_stack(); |
} |
if (is_resource($this->yyTraceFILE)) { |
fclose($this->yyTraceFILE); |
} |
} |
/** |
* merge PHP code with prefix code and return parse tree tag object |
* |
* @param string $code |
* |
* @return Smarty_Internal_ParseTree_Tag |
*/ |
public function mergePrefixCode($code) |
{ |
$tmp = ''; |
foreach ($this->compiler->prefix_code as $preCode) { |
$tmp .= $preCode; |
} |
$this->compiler->prefix_code = array(); |
$tmp .= $code; |
return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true)); |
} |
public function Trace($TraceFILE, $zTracePrompt) |
{ |
if (!$TraceFILE) { |
$zTracePrompt = 0; |
} elseif (!$zTracePrompt) { |
$TraceFILE = 0; |
} |
$this->yyTraceFILE = $TraceFILE; |
$this->yyTracePrompt = $zTracePrompt; |
} |
public function PrintTrace() |
{ |
$this->yyTraceFILE = fopen('php://output', 'w'); |
$this->yyTracePrompt = '<br>'; |
} |
public function tokenName($tokenType) |
{ |
if ($tokenType === 0) { |
return 'End of Input'; |
} |
if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) { |
return $this->yyTokenName[ $tokenType ]; |
} else { |
return 'Unknown'; |
} |
} |
public function yy_pop_parser_stack() |
{ |
if (empty($this->yystack)) { |
return; |
} |
$yytos = array_pop($this->yystack); |
if ($this->yyTraceFILE && $this->yyidx >= 0) { |
fwrite($this->yyTraceFILE, |
$this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . |
"\n"); |
} |
$yymajor = $yytos->major; |
self::yy_destructor($yymajor, $yytos->minor); |
$this->yyidx--; |
return $yymajor; |
} |
public function __destruct() |
{ |
while ($this->yystack !== array()) { |
$this->yy_pop_parser_stack(); |
} |
if (is_resource($this->yyTraceFILE)) { |
fclose($this->yyTraceFILE); |
} |
} |
public function yy_get_expected_tokens($token) |
{ |
static $res3 = array(); |
static $res4 = array(); |
$state = $this->yystack[ $this->yyidx ]->stateno; |
$expected = self::$yyExpectedTokens[ $state ]; |
if (isset($res3[ $state ][ $token ])) { |
if ($res3[ $state ][ $token ]) { |
return $expected; |
} |
} else { |
if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { |
return $expected; |
} |
} |
$stack = $this->yystack; |
$yyidx = $this->yyidx; |
do { |
$yyact = $this->yy_find_shift_action($token); |
if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { |
// reduce action |
$done = 0; |
do { |
if ($done++ === 100) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// too much recursion prevents proper detection |
// so give up |
return array_unique($expected); |
} |
$yyruleno = $yyact - self::YYNSTATE; |
$this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; |
$nextstate = $this->yy_find_reduce_action( |
$this->yystack[ $this->yyidx ]->stateno, |
self::$yyRuleInfo[ $yyruleno ][ 0 ]); |
if (isset(self::$yyExpectedTokens[ $nextstate ])) { |
$expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]); |
if (isset($res4[ $nextstate ][ $token ])) { |
if ($res4[ $nextstate ][ $token ]) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return array_unique($expected); |
} |
} else { |
if ($res4[ $nextstate ][ $token ] = |
in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return array_unique($expected); |
} |
} |
} |
if ($nextstate < self::YYNSTATE) { |
// we need to shift a non-terminal |
$this->yyidx++; |
$x = new TP_yyStackEntry; |
$x->stateno = $nextstate; |
$x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; |
$this->yystack[ $this->yyidx ] = $x; |
continue 2; |
} elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// the last token was just ignored, we can't accept |
// by ignoring input, this is in essence ignoring a |
// syntax error! |
return array_unique($expected); |
} elseif ($nextstate === self::YY_NO_ACTION) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// input accepted, but not shifted (I guess) |
return $expected; |
} else { |
$yyact = $nextstate; |
} |
} while (true); |
} |
break; |
} while (true); |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return array_unique($expected); |
} |
public function yy_is_expected_token($token) |
{ |
static $res = array(); |
static $res2 = array(); |
if ($token === 0) { |
return true; // 0 is not part of this |
} |
$state = $this->yystack[ $this->yyidx ]->stateno; |
if (isset($res[ $state ][ $token ])) { |
if ($res[ $state ][ $token ]) { |
return true; |
} |
} else { |
if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) { |
return true; |
} |
} |
$stack = $this->yystack; |
$yyidx = $this->yyidx; |
do { |
$yyact = $this->yy_find_shift_action($token); |
if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { |
// reduce action |
$done = 0; |
do { |
if ($done++ === 100) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// too much recursion prevents proper detection |
// so give up |
return true; |
} |
$yyruleno = $yyact - self::YYNSTATE; |
$this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ]; |
$nextstate = $this->yy_find_reduce_action( |
$this->yystack[ $this->yyidx ]->stateno, |
self::$yyRuleInfo[ $yyruleno ][ 0 ]); |
if (isset($res2[ $nextstate ][ $token ])) { |
if ($res2[ $nextstate ][ $token ]) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return true; |
} |
} else { |
if ($res2[ $nextstate ][ $token ] = |
(isset(self::$yyExpectedTokens[ $nextstate ]) && |
in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return true; |
} |
} |
if ($nextstate < self::YYNSTATE) { |
// we need to shift a non-terminal |
$this->yyidx++; |
$x = new TP_yyStackEntry; |
$x->stateno = $nextstate; |
$x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ]; |
$this->yystack[ $this->yyidx ] = $x; |
continue 2; |
} elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
if (!$token) { |
// end of input: this is valid |
return true; |
} |
// the last token was just ignored, we can't accept |
// by ignoring input, this is in essence ignoring a |
// syntax error! |
return false; |
} elseif ($nextstate === self::YY_NO_ACTION) { |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
// input accepted, but not shifted (I guess) |
return true; |
} else { |
$yyact = $nextstate; |
} |
} while (true); |
} |
break; |
} while (true); |
$this->yyidx = $yyidx; |
$this->yystack = $stack; |
return true; |
} |
public function yy_find_shift_action($iLookAhead) |
{ |
$stateno = $this->yystack[ $this->yyidx ]->stateno; |
/* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ |
if (!isset(self::$yy_shift_ofst[ $stateno ])) { |
// no shift actions |
return self::$yy_default[ $stateno ]; |
} |
$i = self::$yy_shift_ofst[ $stateno ]; |
if ($i === self::YY_SHIFT_USE_DFLT) { |
return self::$yy_default[ $stateno ]; |
} |
if ($iLookAhead === self::YYNOCODE) { |
return self::YY_NO_ACTION; |
} |
$i += $iLookAhead; |
if ($i < 0 || $i >= self::YY_SZ_ACTTAB || |
self::$yy_lookahead[ $i ] != $iLookAhead) { |
if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) |
&& ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) { |
if ($this->yyTraceFILE) { |
fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' . |
$this->yyTokenName[ $iLookAhead ] . ' => ' . |
$this->yyTokenName[ $iFallback ] . "\n"); |
} |
return $this->yy_find_shift_action($iFallback); |
} |
return self::$yy_default[ $stateno ]; |
} else { |
return self::$yy_action[ $i ]; |
} |
} |
public function yy_find_reduce_action($stateno, $iLookAhead) |
{ |
/* $stateno = $this->yystack[$this->yyidx]->stateno; */ |
if (!isset(self::$yy_reduce_ofst[ $stateno ])) { |
return self::$yy_default[ $stateno ]; |
} |
$i = self::$yy_reduce_ofst[ $stateno ]; |
if ($i === self::YY_REDUCE_USE_DFLT) { |
return self::$yy_default[ $stateno ]; |
} |
if ($iLookAhead === self::YYNOCODE) { |
return self::YY_NO_ACTION; |
} |
$i += $iLookAhead; |
if ($i < 0 || $i >= self::YY_SZ_ACTTAB || |
self::$yy_lookahead[ $i ] != $iLookAhead) { |
return self::$yy_default[ $stateno ]; |
} else { |
return self::$yy_action[ $i ]; |
} |
} |
// line 234 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_shift($yyNewState, $yyMajor, $yypMinor) |
{ |
$this->yyidx++; |
if ($this->yyidx >= self::YYSTACKDEPTH) { |
$this->yyidx--; |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt); |
} |
while ($this->yyidx >= 0) { |
$this->yy_pop_parser_stack(); |
} |
// line 221 "../smarty/lexer/smarty_internal_templateparser.y" |
$this->internalError = true; |
$this->compiler->trigger_template_error('Stack overflow in template parser'); |
return; |
} |
$yytos = new TP_yyStackEntry; |
$yytos->stateno = $yyNewState; |
$yytos->major = $yyMajor; |
$yytos->minor = $yypMinor; |
$this->yystack[] = $yytos; |
if ($this->yyTraceFILE && $this->yyidx > 0) { |
fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, |
$yyNewState); |
fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt); |
for ($i = 1; $i <= $this->yyidx; $i++) { |
fprintf($this->yyTraceFILE, " %s", |
$this->yyTokenName[ $this->yystack[ $i ]->major ]); |
} |
fwrite($this->yyTraceFILE, "\n"); |
} |
} |
// line 242 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r0() |
{ |
$this->root_buffer->prepend_array($this, $this->template_prefix); |
$this->root_buffer->append_array($this, $this->template_postfix); |
$this->_retvalue = $this->root_buffer->to_smarty_php($this); |
} |
// line 251 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r1() |
{ |
$code = |
$this->compiler->compileTag('private_php', |
array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor), array('type' => $this->lex->phpType)), |
array()); |
if ($this->compiler->has_code && !empty($code)) { |
$tmp = ''; |
foreach ($this->compiler->prefix_code as $code) { |
$tmp .= $code; |
} |
$this->compiler->prefix_code = array(); |
$this->current_buffer->append_subtree($this, |
new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true))); |
} |
} |
// line 255 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r2() |
{ |
$this->current_buffer->append_subtree($this, |
$this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 259 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r3() |
{ |
$this->strip = true; |
} |
// line 264 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r4() |
{ |
$this->strip = false; |
} |
// line 269 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r5() |
{ |
$this->current_buffer->append_subtree($this, |
new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + -1 ]->minor)); |
} |
// line 272 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r6() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -3 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor; |
} |
// line 276 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r7() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 281 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r8() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 285 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r9() |
{ |
$this->_retvalue = ''; |
} |
// line 297 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r10() |
{ |
if ($this->compiler->has_code) { |
$this->current_buffer->append_subtree($this, |
$this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
$this->compiler->has_variable_string = false; |
$this->block_nesting_level = count($this->compiler->_tag_stack); |
} |
// line 307 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r12() |
{ |
$var = |
trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), |
-$this->compiler->getRdelLength()), ' $'); |
if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) { |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', array('nocache'), |
array('value' => $this->compiler->compileVariable('\'' . $match[ 1 ] . '\''))); |
} else { |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', array(), |
array('value' => $this->compiler->compileVariable('\'' . $var . '\''))); |
} |
} |
// line 328 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r13() |
{ |
$tag = |
trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), |
-$this->compiler->getRdelLength())); |
if ($tag == 'strip') { |
$this->strip = true; |
$this->_retvalue = null;; |
} else { |
if (defined($tag)) { |
if ($this->security) { |
$this->security->isTrustedConstant($tag, $this->compiler); |
} |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', array(), array('value' => $tag)); |
} else { |
if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) { |
$this->_retvalue = $this->compiler->compileTag($match[ 1 ], array('\'nocache\'')); |
} else { |
$this->_retvalue = $this->compiler->compileTag($tag, array()); |
} |
} |
} |
} |
// line 339 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r14() |
{ |
$j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.'); |
if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') { |
// {$smarty.block.child} |
$this->_retvalue = |
$this->compiler->compileTag('child', array(), array($this->yystack[ $this->yyidx + 0 ]->minor)); |
} else { |
// {$smarty.block.parent} |
$this->_retvalue = |
$this->compiler->compileTag('parent', array(), array($this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
} |
// line 343 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r15() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; |
} |
// line 347 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r16() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; |
} |
// line 356 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r17() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ], |
array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ])); |
} |
// line 360 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r18() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('assign', array_merge(array( |
array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]), |
array('var' => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'') |
), $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ])); |
} |
// line 364 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r19() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('assign', array_merge(array( |
array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]), |
array('var' => $this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ]) |
), $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]), array( |
'smarty_internal_index' => $this->yystack[ $this->yyidx + |
-1 ]->minor[ 'smarty_internal_index' ] |
)); |
} |
// line 368 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r20() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 383 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r21() |
{ |
$this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 393 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r25() |
{ |
if (defined($this->yystack[ $this->yyidx + -1 ]->minor)) { |
if ($this->security) { |
$this->security->isTrustedConstant($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler); |
} |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor, |
array('value' => $this->yystack[ $this->yyidx + -1 ]->minor)); |
} else { |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor, |
$this->yystack[ $this->yyidx + 0 ]->minor); |
} |
} |
// line 406 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r26() |
{ |
if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { |
if ($this->security) { |
$this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler); |
} |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', array(), |
array('value' => $this->yystack[ $this->yyidx + 0 ]->minor)); |
} else { |
$this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array()); |
} |
} |
// line 418 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r27() |
{ |
if (defined($this->yystack[ $this->yyidx + -2 ]->minor)) { |
if ($this->security) { |
$this->security->isTrustedConstant($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler); |
} |
$this->_retvalue = |
$this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor, |
array( |
'value' => $this->yystack[ $this->yyidx + -2 ]->minor, |
'modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor |
)); |
} else { |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor, |
$this->yystack[ $this->yyidx + 0 ]->minor, |
array('modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor)); |
} |
} |
// line 423 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r28() |
{ |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor, |
$this->yystack[ $this->yyidx + 0 ]->minor, |
array('object_method' => $this->yystack[ $this->yyidx + -1 ]->minor)); |
} |
// line 428 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r29() |
{ |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -4 ]->minor, |
$this->yystack[ $this->yyidx + 0 ]->minor, array( |
'modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor, |
'object_method' => $this->yystack[ $this->yyidx + -2 ]->minor |
)); |
} |
// line 433 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r30() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('make_nocache', |
array(array('var' => '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''))); |
} |
// line 438 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r31() |
{ |
$tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength())); |
$this->_retvalue = |
$this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, array(), |
array('if condition' => $this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 443 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r32() |
{ |
$tag = trim(substr($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler->getLdelLength())); |
$this->_retvalue = |
$this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, |
$this->yystack[ $this->yyidx + 0 ]->minor, |
array('if condition' => $this->yystack[ $this->yyidx + -1 ]->minor)); |
} |
// line 454 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r33() |
{ |
$tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength())); |
$this->_retvalue = |
$this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, array(), |
array('if condition' => $this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 458 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r35() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array( |
array('start' => $this->yystack[ $this->yyidx + -6 ]->minor), |
array('ifexp' => $this->yystack[ $this->yyidx + -4 ]->minor), |
array('var' => $this->yystack[ $this->yyidx + -2 ]->minor), |
array('step' => $this->yystack[ $this->yyidx + -1 ]->minor) |
)), 1); |
} |
// line 466 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r36() |
{ |
$this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 470 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r38() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array( |
array('start' => $this->yystack[ $this->yyidx + -3 ]->minor), |
array('to' => $this->yystack[ $this->yyidx + -1 ]->minor) |
)), 0); |
} |
// line 475 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r39() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array( |
array('start' => $this->yystack[ $this->yyidx + -5 ]->minor), |
array('to' => $this->yystack[ $this->yyidx + -3 ]->minor), |
array('step' => $this->yystack[ $this->yyidx + -1 ]->minor) |
)), 0); |
} |
// line 479 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r40() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array( |
array('from' => $this->yystack[ $this->yyidx + -3 ]->minor), |
array('item' => $this->yystack[ $this->yyidx + -1 ]->minor) |
))); |
} |
// line 482 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r41() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array( |
array('from' => $this->yystack[ $this->yyidx + -5 ]->minor), |
array('item' => $this->yystack[ $this->yyidx + -1 ]->minor), |
array('key' => $this->yystack[ $this->yyidx + -3 ]->minor) |
))); |
} |
// line 487 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r42() |
{ |
$this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 491 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r43() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('setfilter', array(), array( |
'modifier_list' => array( |
array_merge(array($this->yystack[ $this->yyidx + -1 ]->minor), |
$this->yystack[ $this->yyidx + 0 ]->minor) |
) |
)); |
} |
// line 497 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r44() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('setfilter', array(), array( |
'modifier_list' => array_merge(array( |
array_merge(array( |
$this->yystack[ $this->yyidx + |
-2 ]->minor |
), $this->yystack[ $this->yyidx + -1 ]->minor) |
), $this->yystack[ $this->yyidx + 0 ]->minor) |
)); |
} |
// line 506 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r45() |
{ |
$tag = |
trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), |
-$this->compiler->getRdelLength()), ' /'); |
if ($tag === 'strip') { |
$this->strip = false; |
$this->_retvalue = null; |
} else { |
$this->_retvalue = $this->compiler->compileTag($tag . 'close', array()); |
} |
} |
// line 510 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r46() |
{ |
$this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array()); |
} |
// line 515 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r47() |
{ |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor . 'close', array(), |
array('modifier_list' => $this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 519 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r48() |
{ |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor . 'close', array(), |
array('object_method' => $this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 527 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r49() |
{ |
$this->_retvalue = |
$this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor . 'close', array(), array( |
'object_method' => $this->yystack[ $this->yyidx + -1 ]->minor, |
'modifier_list' => $this->yystack[ $this->yyidx + 0 ]->minor |
)); |
} |
// line 533 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r50() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; |
$this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 538 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r51() |
{ |
$this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 543 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r52() |
{ |
$this->_retvalue = array(); |
} |
// line 554 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r53() |
{ |
if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { |
if ($this->security) { |
$this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler); |
} |
$this->_retvalue = |
array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor); |
} else { |
$this->_retvalue = |
array( |
$this->yystack[ $this->yyidx + -2 ]->minor => '\'' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
'\'' |
); |
} |
} |
// line 562 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r54() |
{ |
$this->_retvalue = |
array( |
trim($this->yystack[ $this->yyidx + -1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx + |
0 ]->minor |
); |
} |
// line 574 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r56() |
{ |
$this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\''; |
} |
// line 587 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r59() |
{ |
$this->_retvalue = |
array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 592 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r61() |
{ |
$this->yystack[ $this->yyidx + -2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor; |
$this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor; |
} |
// line 599 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r62() |
{ |
$this->_retvalue = |
array( |
'var' => '\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'', |
'value' => $this->yystack[ $this->yyidx + 0 ]->minor |
); |
} |
// line 603 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r64() |
{ |
$this->_retvalue = |
array( |
'var' => $this->yystack[ $this->yyidx + -2 ]->minor, |
'value' => $this->yystack[ $this->yyidx + 0 ]->minor |
); |
} |
// line 623 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r65() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; |
} |
// line 628 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r68() |
{ |
$this->_retvalue = |
'$_smarty_tpl->getStreamVariable(\'' . |
substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . |
'://' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
'\')'; |
} |
// line 638 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r69() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -2 ]->minor . |
trim($this->yystack[ $this->yyidx + -1 ]->minor) . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 642 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r71() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -1 ]->minor[ 'pre' ] . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
$this->yystack[ $this->yyidx + -1 ]->minor[ 'op' ] . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
')'; |
} |
// line 646 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r72() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -2 ]->minor . |
$this->yystack[ $this->yyidx + -1 ]->minor . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 650 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r73() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; |
} |
// line 654 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r74() |
{ |
$this->_retvalue = |
'in_array(' . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
',' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
')'; |
} |
// line 662 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r75() |
{ |
$this->_retvalue = |
'in_array(' . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
',(array)' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
')'; |
} |
// line 666 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r76() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -5 ]->minor . |
' ? ' . |
$this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'') . |
' : ' . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 676 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r77() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -5 ]->minor . |
' ? ' . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
' : ' . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 681 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r79() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 702 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r80() |
{ |
$this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 706 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r85() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 710 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r86() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.'; |
} |
// line 715 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r87() |
{ |
$this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 732 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r88() |
{ |
if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) { |
if ($this->security) { |
$this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler); |
} |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; |
} else { |
$this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\''; |
} |
} |
// line 736 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r90() |
{ |
$this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; |
} |
// line 754 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r91() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -2 ]->minor . |
$this->yystack[ $this->yyidx + -1 ]->minor . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 765 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r95() |
{ |
$prefixVar = $this->compiler->getNewPrefixVariable(); |
if ($this->yystack[ $this->yyidx + -2 ]->minor[ 'var' ] === '\'smarty\'') { |
$this->compiler->appendPrefixCode("<?php {$prefixVar} = " . |
$this->compiler->compileTag('private_special_variable', array(), |
$this->yystack[ $this->yyidx + |
-2 ]->minor[ 'smarty_internal_index' ]) . |
';?>'); |
} else { |
$this->compiler->appendPrefixCode("<?php {$prefixVar} = " . |
$this->compiler->compileVariable($this->yystack[ $this->yyidx + |
-2 ]->minor[ 'var' ]) . |
$this->yystack[ $this->yyidx + -2 ]->minor[ 'smarty_internal_index' ] . |
';?>'); |
} |
$this->_retvalue = |
$prefixVar . |
'::' . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]; |
} |
// line 772 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r96() |
{ |
$prefixVar = $this->compiler->getNewPrefixVariable(); |
$tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor); |
$this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>")); |
$this->_retvalue = $prefixVar; |
} |
// line 785 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r97() |
{ |
$this->_retvalue = |
$this->compiler->compileTag('private_modifier', array(), array( |
'value' => $this->yystack[ $this->yyidx + -1 ]->minor, |
'modifierlist' => $this->yystack[ $this->yyidx + 0 ]->minor |
)); |
} |
// line 804 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r100() |
{ |
if (!in_array(strtolower($this->yystack[ $this->yyidx + -2 ]->minor), array('self', 'parent')) && |
(!$this->security || |
$this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + -2 ]->minor, |
$this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))) { |
if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + -2 ]->minor ])) { |
$this->_retvalue = |
$this->smarty->registered_classes[ $this->yystack[ $this->yyidx + -2 ]->minor ] . |
'::' . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]; |
} else { |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -2 ]->minor . |
'::' . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]; |
} |
} else { |
$this->compiler->trigger_template_error('static class \'' . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
'\' is undefined or not allowed by security setting'); |
} |
} |
// line 815 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r102() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 818 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r103() |
{ |
$this->_retvalue = |
$this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''); |
} |
// line 831 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r104() |
{ |
if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] === '\'smarty\'') { |
$smarty_var = |
$this->compiler->compileTag('private_special_variable', array(), |
$this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ]); |
$this->_retvalue = $smarty_var; |
} else { |
// used for array reset,next,prev,end,current |
$this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]; |
$this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ]; |
$this->_retvalue = |
$this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) . |
$this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ]; |
} |
} |
// line 841 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r105() |
{ |
$this->_retvalue = |
'$_smarty_tpl->tpl_vars[' . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
']->' . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 845 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r107() |
{ |
$this->_retvalue = |
$this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\''); |
} |
// line 849 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r108() |
{ |
$this->_retvalue = |
'(is_array($tmp = ' . |
$this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'') . |
') ? $tmp' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
' :null)'; |
} |
// line 853 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r109() |
{ |
$this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -1 ]->minor); |
} |
// line 857 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r110() |
{ |
$this->_retvalue = |
'(is_array($tmp = ' . |
$this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -2 ]->minor) . |
') ? $tmp' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
' : null)'; |
} |
// line 860 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r111() |
{ |
$this->_retvalue = |
array( |
'var' => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'', |
'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor |
); |
} |
// line 873 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r112() |
{ |
$this->_retvalue = |
array( |
'var' => $this->yystack[ $this->yyidx + -1 ]->minor, |
'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor |
); |
} |
// line 879 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r114() |
{ |
return; |
} |
// line 882 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r115() |
{ |
$this->_retvalue = |
'[' . |
$this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') . |
']'; |
} |
// line 886 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r116() |
{ |
$this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']'; |
} |
// line 890 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r117() |
{ |
$this->_retvalue = |
'[' . |
$this->compiler->compileVariable($this->yystack[ $this->yyidx + -2 ]->minor) . |
'->' . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
']'; |
} |
// line 894 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r118() |
{ |
$this->_retvalue = '[\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\']'; |
} |
// line 899 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r119() |
{ |
$this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']'; |
} |
// line 904 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r120() |
{ |
$this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']'; |
} |
// line 908 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r121() |
{ |
$this->_retvalue = |
'[' . |
$this->compiler->compileTag('private_special_variable', array(), |
'[\'section\'][\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\'][\'index\']') . |
']'; |
} |
// line 911 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r122() |
{ |
$this->_retvalue = |
'[' . |
$this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . |
$this->yystack[ $this->yyidx + |
-3 ]->minor . |
'\'][\'' . |
$this->yystack[ $this->yyidx + |
-1 ]->minor . |
'\']') . |
']'; |
} |
// line 917 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r123() |
{ |
$this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']'; |
} |
// line 933 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r125() |
{ |
$this->_retvalue = |
'[' . |
$this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'') . |
']'; |
} |
// line 943 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r129() |
{ |
$this->_retvalue = '[]'; |
} |
// line 947 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r130() |
{ |
$this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\''; |
} |
// line 952 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r131() |
{ |
$this->_retvalue = '\'\''; |
} |
// line 960 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r132() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 966 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r134() |
{ |
$var = |
trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(), |
-$this->compiler->getRdelLength()), ' $'); |
$this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\''); |
} |
// line 973 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r135() |
{ |
$this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; |
} |
// line 982 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r136() |
{ |
if ($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ] === '\'smarty\'') { |
$this->_retvalue = |
$this->compiler->compileTag('private_special_variable', array(), |
$this->yystack[ $this->yyidx + -1 ]->minor[ 'smarty_internal_index' ]) . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} else { |
$this->_retvalue = |
$this->compiler->compileVariable($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ]) . |
$this->yystack[ $this->yyidx + -1 ]->minor[ 'smarty_internal_index' ] . |
$this->yystack[ $this->yyidx + 0 ]->minor; |
} |
} |
// line 987 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r137() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 992 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r138() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 999 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r139() |
{ |
if ($this->security && substr($this->yystack[ $this->yyidx + -1 ]->minor, 0, 1) === '_') { |
$this->compiler->trigger_template_error(self::ERR1); |
} |
$this->_retvalue = |
'->' . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 1006 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r140() |
{ |
if ($this->security) { |
$this->compiler->trigger_template_error(self::ERR2); |
} |
$this->_retvalue = |
'->{' . |
$this->compiler->compileVariable($this->yystack[ $this->yyidx + -1 ]->minor) . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
'}'; |
} |
// line 1013 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r141() |
{ |
if ($this->security) { |
$this->compiler->trigger_template_error(self::ERR2); |
} |
$this->_retvalue = |
'->{' . $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}'; |
} |
// line 1021 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r142() |
{ |
if ($this->security) { |
$this->compiler->trigger_template_error(self::ERR2); |
} |
$this->_retvalue = |
'->{\'' . |
$this->yystack[ $this->yyidx + -4 ]->minor . |
'\'.' . |
$this->yystack[ $this->yyidx + -2 ]->minor . |
$this->yystack[ $this->yyidx + 0 ]->minor . |
'}'; |
} |
// line 1029 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r143() |
{ |
$this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 1037 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r144() |
{ |
$this->_retvalue = |
$this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + -3 ]->minor, |
$this->yystack[ $this->yyidx + -1 ]->minor); |
} |
// line 1044 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r145() |
{ |
if ($this->security && substr($this->yystack[ $this->yyidx + -3 ]->minor, 0, 1) === '_') { |
$this->compiler->trigger_template_error(self::ERR1); |
} |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -3 ]->minor . |
'(' . |
implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . |
')'; |
} |
// line 1055 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r146() |
{ |
if ($this->security) { |
$this->compiler->trigger_template_error(self::ERR2); |
} |
$prefixVar = $this->compiler->getNewPrefixVariable(); |
$this->compiler->appendPrefixCode("<?php {$prefixVar} = " . |
$this->compiler->compileVariable('\'' . |
substr($this->yystack[ $this->yyidx + |
-3 ]->minor, 1) . |
'\'') . |
';?>'); |
$this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ')'; |
} |
// line 1072 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r147() |
{ |
$this->_retvalue = |
array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 1076 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r150() |
{ |
$this->_retvalue = |
array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array( |
array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor) |
)); |
} |
// line 1084 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r151() |
{ |
$this->_retvalue = |
array(array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor)); |
} |
// line 1092 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r153() |
{ |
$this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 1105 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r154() |
{ |
$this->_retvalue = |
array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 1114 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r157() |
{ |
$this->_retvalue = |
array(trim($this->yystack[ $this->yyidx + -1 ]->minor) . $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 1119 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r159() |
{ |
$this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method'); |
} |
// line 1124 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r160() |
{ |
$this->_retvalue = |
array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method'); |
} |
// line 1129 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r161() |
{ |
$this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, ''); |
} |
// line 1134 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r162() |
{ |
$this->_retvalue = |
array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property'); |
} |
// line 1140 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r163() |
{ |
$this->_retvalue = |
array( |
$this->yystack[ $this->yyidx + -2 ]->minor, |
$this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor, 'property' |
); |
} |
// line 1144 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r164() |
{ |
$this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' '; |
} |
// line 1163 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r165() |
{ |
static $lops = array( |
'eq' => ' == ', |
'ne' => ' != ', |
'neq' => ' != ', |
'gt' => ' > ', |
'ge' => ' >= ', |
'gte' => ' >= ', |
'lt' => ' < ', |
'le' => ' <= ', |
'lte' => ' <= ', |
'mod' => ' % ', |
'and' => ' && ', |
'or' => ' || ', |
'xor' => ' xor ', |
); |
$op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor)); |
$this->_retvalue = $lops[ $op ]; |
} |
// line 1176 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r166() |
{ |
static $tlops = array( |
'isdivby' => array('op' => ' % ', 'pre' => '!('), |
'isnotdivby' => array('op' => ' % ', 'pre' => '('), |
'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '), |
'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '), |
'isoddby' => array('op' => ' / ', 'pre' => '(1 & '), |
'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '), |
); |
$op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor)); |
$this->_retvalue = $tlops[ $op ]; |
} |
// line 1190 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r167() |
{ |
static $scond = array( |
'iseven' => '!(1 & ', |
'isnoteven' => '(1 & ', |
'isodd' => '(1 & ', |
'isnotodd' => '!(1 & ', |
); |
$op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor)); |
$this->_retvalue = $scond[ $op ]; |
} |
// line 1201 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r168() |
{ |
$this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'; |
} |
// line 1209 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r171() |
{ |
$this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 1213 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r173() |
{ |
$this->_retvalue = |
$this->yystack[ $this->yyidx + -2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 1229 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r174() |
{ |
$this->_retvalue = |
'\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor; |
} |
// line 1235 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r177() |
{ |
$this->compiler->leaveDoubleQuote(); |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor->to_smarty_php($this); |
} |
// line 1240 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r178() |
{ |
$this->yystack[ $this->yyidx + -1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor); |
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor; |
} |
// line 1244 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r179() |
{ |
$this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
// line 1248 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r180() |
{ |
$this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + -1 ]->minor); |
} |
// line 1252 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r181() |
{ |
$this->_retvalue = |
new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')'); |
} |
// line 1264 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r182() |
{ |
$this->_retvalue = |
new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' . |
substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . |
'\']->value'); |
} |
// line 1268 "../smarty/lexer/smarty_internal_templateparser.y" |
public function yy_r185() |
{ |
$this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor); |
} |
public function yy_r186() |
{ |
$this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor); |
} |
public function yy_reduce($yyruleno) |
{ |
if ($this->yyTraceFILE && $yyruleno >= 0 |
&& $yyruleno < count(self::$yyRuleName)) { |
fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", |
$this->yyTracePrompt, $yyruleno, |
self::$yyRuleName[ $yyruleno ]); |
} |
$this->_retvalue = $yy_lefthand_side = null; |
if (isset(self::$yyReduceMap[ $yyruleno ])) { |
// call the action |
$this->_retvalue = null; |
$this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}(); |
$yy_lefthand_side = $this->_retvalue; |
} |
$yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ]; |
$yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ]; |
$this->yyidx -= $yysize; |
for ($i = $yysize; $i; $i--) { |
// pop all of the right-hand side parameters |
array_pop($this->yystack); |
} |
$yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto); |
if ($yyact < self::YYNSTATE) { |
if (!$this->yyTraceFILE && $yysize) { |
$this->yyidx++; |
$x = new TP_yyStackEntry; |
$x->stateno = $yyact; |
$x->major = $yygoto; |
$x->minor = $yy_lefthand_side; |
$this->yystack[ $this->yyidx ] = $x; |
} else { |
$this->yy_shift($yyact, $yygoto, $yy_lefthand_side); |
} |
} elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) { |
$this->yy_accept(); |
} |
} |
public function yy_parse_failed() |
{ |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt); |
} |
while ($this->yyidx >= 0) { |
$this->yy_pop_parser_stack(); |
} |
} |
public function yy_syntax_error($yymajor, $TOKEN) |
{ |
// line 214 "../smarty/lexer/smarty_internal_templateparser.y" |
$this->internalError = true; |
$this->yymajor = $yymajor; |
$this->compiler->trigger_template_error(); |
} |
public function yy_accept() |
{ |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt); |
} |
while ($this->yyidx >= 0) { |
$this->yy_pop_parser_stack(); |
} |
// line 207 "../smarty/lexer/smarty_internal_templateparser.y" |
$this->successful = !$this->internalError; |
$this->internalError = false; |
$this->retvalue = $this->_retvalue; |
} |
public function doParse($yymajor, $yytokenvalue) |
{ |
$yyerrorhit = 0; /* True if yymajor has invoked an error */ |
if ($this->yyidx === null || $this->yyidx < 0) { |
$this->yyidx = 0; |
$this->yyerrcnt = -1; |
$x = new TP_yyStackEntry; |
$x->stateno = 0; |
$x->major = 0; |
$this->yystack = array(); |
$this->yystack[] = $x; |
} |
$yyendofinput = ($yymajor == 0); |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sInput %s\n", |
$this->yyTracePrompt, $this->yyTokenName[ $yymajor ]); |
} |
do { |
$yyact = $this->yy_find_shift_action($yymajor); |
if ($yymajor < self::YYERRORSYMBOL && |
!$this->yy_is_expected_token($yymajor)) { |
// force a syntax error |
$yyact = self::YY_ERROR_ACTION; |
} |
if ($yyact < self::YYNSTATE) { |
$this->yy_shift($yyact, $yymajor, $yytokenvalue); |
$this->yyerrcnt--; |
if ($yyendofinput && $this->yyidx >= 0) { |
$yymajor = 0; |
} else { |
$yymajor = self::YYNOCODE; |
} |
} elseif ($yyact < self::YYNSTATE + self::YYNRULE) { |
$this->yy_reduce($yyact - self::YYNSTATE); |
} elseif ($yyact === self::YY_ERROR_ACTION) { |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sSyntax Error!\n", |
$this->yyTracePrompt); |
} |
if (self::YYERRORSYMBOL) { |
if ($this->yyerrcnt < 0) { |
$this->yy_syntax_error($yymajor, $yytokenvalue); |
} |
$yymx = $this->yystack[ $this->yyidx ]->major; |
if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) { |
if ($this->yyTraceFILE) { |
fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", |
$this->yyTracePrompt, $this->yyTokenName[ $yymajor ]); |
} |
$this->yy_destructor($yymajor, $yytokenvalue); |
$yymajor = self::YYNOCODE; |
} else { |
while ($this->yyidx >= 0 && |
$yymx !== self::YYERRORSYMBOL && |
($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE |
) { |
$this->yy_pop_parser_stack(); |
} |
if ($this->yyidx < 0 || $yymajor == 0) { |
$this->yy_destructor($yymajor, $yytokenvalue); |
$this->yy_parse_failed(); |
$yymajor = self::YYNOCODE; |
} elseif ($yymx !== self::YYERRORSYMBOL) { |
$u2 = 0; |
$this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); |
} |
} |
$this->yyerrcnt = 3; |
$yyerrorhit = 1; |
} else { |
if ($this->yyerrcnt <= 0) { |
$this->yy_syntax_error($yymajor, $yytokenvalue); |
} |
$this->yyerrcnt = 3; |
$this->yy_destructor($yymajor, $yytokenvalue); |
if ($yyendofinput) { |
$this->yy_parse_failed(); |
} |
$yymajor = self::YYNOCODE; |
} |
} else { |
$this->yy_accept(); |
$yymajor = self::YYNOCODE; |
} |
} while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_testinstall.php |
---|
0,0 → 1,609 |
<?php |
/** |
* Smarty Internal TestInstall |
* Test Smarty installation |
* |
* @package Smarty |
* @subpackage Utilities |
* @author Uwe Tews |
*/ |
/** |
* TestInstall class |
* |
* @package Smarty |
* @subpackage Utilities |
*/ |
class Smarty_Internal_TestInstall |
{ |
/** |
* diagnose Smarty setup |
* If $errors is secified, the diagnostic report will be appended to the array, rather than being output. |
* |
* @param \Smarty $smarty |
* @param array $errors array to push results into rather than outputting them |
* |
* @return bool status, true if everything is fine, false else |
*/ |
public static function testInstall(Smarty $smarty, &$errors = null) |
{ |
$status = true; |
if ($errors === null) { |
echo "<PRE>\n"; |
echo "Smarty Installation test...\n"; |
echo "Testing template directory...\n"; |
} |
$_stream_resolve_include_path = function_exists('stream_resolve_include_path'); |
// test if all registered template_dir are accessible |
foreach ($smarty->getTemplateDir() as $template_dir) { |
$_template_dir = $template_dir; |
$template_dir = realpath($template_dir); |
// resolve include_path or fail existence |
if (!$template_dir) { |
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) { |
// try PHP include_path |
if ($_stream_resolve_include_path) { |
$template_dir = stream_resolve_include_path($_template_dir); |
} else { |
$template_dir = $smarty->ext->_getIncludePath->getIncludePath($_template_dir, null, $smarty); |
} |
if ($template_dir !== false) { |
if ($errors === null) { |
echo "$template_dir is OK.\n"; |
} |
continue; |
} else { |
$status = false; |
$message = |
"FAILED: $_template_dir does not exist (and couldn't be found in include_path either)"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'template_dir' ] = $message; |
} |
continue; |
} |
} else { |
$status = false; |
$message = "FAILED: $_template_dir does not exist"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'template_dir' ] = $message; |
} |
continue; |
} |
} |
if (!is_dir($template_dir)) { |
$status = false; |
$message = "FAILED: $template_dir is not a directory"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'template_dir' ] = $message; |
} |
} elseif (!is_readable($template_dir)) { |
$status = false; |
$message = "FAILED: $template_dir is not readable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'template_dir' ] = $message; |
} |
} else { |
if ($errors === null) { |
echo "$template_dir is OK.\n"; |
} |
} |
} |
if ($errors === null) { |
echo "Testing compile directory...\n"; |
} |
// test if registered compile_dir is accessible |
$__compile_dir = $smarty->getCompileDir(); |
$_compile_dir = realpath($__compile_dir); |
if (!$_compile_dir) { |
$status = false; |
$message = "FAILED: {$__compile_dir} does not exist"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'compile_dir' ] = $message; |
} |
} elseif (!is_dir($_compile_dir)) { |
$status = false; |
$message = "FAILED: {$_compile_dir} is not a directory"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'compile_dir' ] = $message; |
} |
} elseif (!is_readable($_compile_dir)) { |
$status = false; |
$message = "FAILED: {$_compile_dir} is not readable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'compile_dir' ] = $message; |
} |
} elseif (!is_writable($_compile_dir)) { |
$status = false; |
$message = "FAILED: {$_compile_dir} is not writable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'compile_dir' ] = $message; |
} |
} else { |
if ($errors === null) { |
echo "{$_compile_dir} is OK.\n"; |
} |
} |
if ($errors === null) { |
echo "Testing plugins directory...\n"; |
} |
// test if all registered plugins_dir are accessible |
// and if core plugins directory is still registered |
$_core_plugins_dir = realpath(dirname(__FILE__) . '/../plugins'); |
$_core_plugins_available = false; |
foreach ($smarty->getPluginsDir() as $plugin_dir) { |
$_plugin_dir = $plugin_dir; |
$plugin_dir = realpath($plugin_dir); |
// resolve include_path or fail existence |
if (!$plugin_dir) { |
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) { |
// try PHP include_path |
if ($_stream_resolve_include_path) { |
$plugin_dir = stream_resolve_include_path($_plugin_dir); |
} else { |
$plugin_dir = $smarty->ext->_getIncludePath->getIncludePath($_plugin_dir, null, $smarty); |
} |
if ($plugin_dir !== false) { |
if ($errors === null) { |
echo "$plugin_dir is OK.\n"; |
} |
continue; |
} else { |
$status = false; |
$message = "FAILED: $_plugin_dir does not exist (and couldn't be found in include_path either)"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'plugins_dir' ] = $message; |
} |
continue; |
} |
} else { |
$status = false; |
$message = "FAILED: $_plugin_dir does not exist"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'plugins_dir' ] = $message; |
} |
continue; |
} |
} |
if (!is_dir($plugin_dir)) { |
$status = false; |
$message = "FAILED: $plugin_dir is not a directory"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'plugins_dir' ] = $message; |
} |
} elseif (!is_readable($plugin_dir)) { |
$status = false; |
$message = "FAILED: $plugin_dir is not readable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'plugins_dir' ] = $message; |
} |
} elseif ($_core_plugins_dir && $_core_plugins_dir == realpath($plugin_dir)) { |
$_core_plugins_available = true; |
if ($errors === null) { |
echo "$plugin_dir is OK.\n"; |
} |
} else { |
if ($errors === null) { |
echo "$plugin_dir is OK.\n"; |
} |
} |
} |
if (!$_core_plugins_available) { |
$status = false; |
$message = "WARNING: Smarty's own libs/plugins is not available"; |
if ($errors === null) { |
echo $message . ".\n"; |
} elseif (!isset($errors[ 'plugins_dir' ])) { |
$errors[ 'plugins_dir' ] = $message; |
} |
} |
if ($errors === null) { |
echo "Testing cache directory...\n"; |
} |
// test if all registered cache_dir is accessible |
$__cache_dir = $smarty->getCacheDir(); |
$_cache_dir = realpath($__cache_dir); |
if (!$_cache_dir) { |
$status = false; |
$message = "FAILED: {$__cache_dir} does not exist"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'cache_dir' ] = $message; |
} |
} elseif (!is_dir($_cache_dir)) { |
$status = false; |
$message = "FAILED: {$_cache_dir} is not a directory"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'cache_dir' ] = $message; |
} |
} elseif (!is_readable($_cache_dir)) { |
$status = false; |
$message = "FAILED: {$_cache_dir} is not readable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'cache_dir' ] = $message; |
} |
} elseif (!is_writable($_cache_dir)) { |
$status = false; |
$message = "FAILED: {$_cache_dir} is not writable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'cache_dir' ] = $message; |
} |
} else { |
if ($errors === null) { |
echo "{$_cache_dir} is OK.\n"; |
} |
} |
if ($errors === null) { |
echo "Testing configs directory...\n"; |
} |
// test if all registered config_dir are accessible |
foreach ($smarty->getConfigDir() as $config_dir) { |
$_config_dir = $config_dir; |
// resolve include_path or fail existence |
if (!$config_dir) { |
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) { |
// try PHP include_path |
if ($_stream_resolve_include_path) { |
$config_dir = stream_resolve_include_path($_config_dir); |
} else { |
$config_dir = $smarty->ext->_getIncludePath->getIncludePath($_config_dir, null, $smarty); |
} |
if ($config_dir !== false) { |
if ($errors === null) { |
echo "$config_dir is OK.\n"; |
} |
continue; |
} else { |
$status = false; |
$message = "FAILED: $_config_dir does not exist (and couldn't be found in include_path either)"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'config_dir' ] = $message; |
} |
continue; |
} |
} else { |
$status = false; |
$message = "FAILED: $_config_dir does not exist"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'config_dir' ] = $message; |
} |
continue; |
} |
} |
if (!is_dir($config_dir)) { |
$status = false; |
$message = "FAILED: $config_dir is not a directory"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'config_dir' ] = $message; |
} |
} elseif (!is_readable($config_dir)) { |
$status = false; |
$message = "FAILED: $config_dir is not readable"; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'config_dir' ] = $message; |
} |
} else { |
if ($errors === null) { |
echo "$config_dir is OK.\n"; |
} |
} |
} |
if ($errors === null) { |
echo "Testing sysplugin files...\n"; |
} |
// test if sysplugins are available |
$source = SMARTY_SYSPLUGINS_DIR; |
if (is_dir($source)) { |
$expectedSysplugins = array( |
'smartycompilerexception.php' => true, |
'smartyexception.php' => true, |
'smarty_cacheresource.php' => true, |
'smarty_cacheresource_custom.php' => true, |
'smarty_cacheresource_keyvaluestore.php' => true, |
'smarty_data.php' => true, |
'smarty_internal_block.php' => true, |
'smarty_internal_cacheresource_file.php' => true, |
'smarty_internal_compilebase.php' => true, |
'smarty_internal_compile_append.php' => true, |
'smarty_internal_compile_assign.php' => true, |
'smarty_internal_compile_block.php' => true, |
'smarty_internal_compile_block_child.php' => true, |
'smarty_internal_compile_block_parent.php' => true, |
'smarty_internal_compile_child.php' => true, |
'smarty_internal_compile_parent.php' => true, |
'smarty_internal_compile_break.php' => true, |
'smarty_internal_compile_call.php' => true, |
'smarty_internal_compile_capture.php' => true, |
'smarty_internal_compile_config_load.php' => true, |
'smarty_internal_compile_continue.php' => true, |
'smarty_internal_compile_debug.php' => true, |
'smarty_internal_compile_eval.php' => true, |
'smarty_internal_compile_extends.php' => true, |
'smarty_internal_compile_for.php' => true, |
'smarty_internal_compile_foreach.php' => true, |
'smarty_internal_compile_function.php' => true, |
'smarty_internal_compile_if.php' => true, |
'smarty_internal_compile_include.php' => true, |
'smarty_internal_compile_include_php.php' => true, |
'smarty_internal_compile_insert.php' => true, |
'smarty_internal_compile_ldelim.php' => true, |
'smarty_internal_compile_make_nocache.php' => true, |
'smarty_internal_compile_nocache.php' => true, |
'smarty_internal_compile_private_block_plugin.php' => true, |
'smarty_internal_compile_private_foreachsection.php' => true, |
'smarty_internal_compile_private_function_plugin.php' => true, |
'smarty_internal_compile_private_modifier.php' => true, |
'smarty_internal_compile_private_object_block_function.php' => true, |
'smarty_internal_compile_private_object_function.php' => true, |
'smarty_internal_compile_private_php.php' => true, |
'smarty_internal_compile_private_print_expression.php' => true, |
'smarty_internal_compile_private_registered_block.php' => true, |
'smarty_internal_compile_private_registered_function.php' => true, |
'smarty_internal_compile_private_special_variable.php' => true, |
'smarty_internal_compile_rdelim.php' => true, |
'smarty_internal_compile_section.php' => true, |
'smarty_internal_compile_setfilter.php' => true, |
'smarty_internal_compile_shared_inheritance.php' => true, |
'smarty_internal_compile_while.php' => true, |
'smarty_internal_configfilelexer.php' => true, |
'smarty_internal_configfileparser.php' => true, |
'smarty_internal_config_file_compiler.php' => true, |
'smarty_internal_data.php' => true, |
'smarty_internal_debug.php' => true, |
'smarty_internal_errorhandler.php' => true, |
'smarty_internal_extension_handler.php' => true, |
'smarty_internal_method_addautoloadfilters.php' => true, |
'smarty_internal_method_adddefaultmodifiers.php' => true, |
'smarty_internal_method_append.php' => true, |
'smarty_internal_method_appendbyref.php' => true, |
'smarty_internal_method_assignbyref.php' => true, |
'smarty_internal_method_assignglobal.php' => true, |
'smarty_internal_method_clearallassign.php' => true, |
'smarty_internal_method_clearallcache.php' => true, |
'smarty_internal_method_clearassign.php' => true, |
'smarty_internal_method_clearcache.php' => true, |
'smarty_internal_method_clearcompiledtemplate.php' => true, |
'smarty_internal_method_clearconfig.php' => true, |
'smarty_internal_method_compileallconfig.php' => true, |
'smarty_internal_method_compilealltemplates.php' => true, |
'smarty_internal_method_configload.php' => true, |
'smarty_internal_method_createdata.php' => true, |
'smarty_internal_method_getautoloadfilters.php' => true, |
'smarty_internal_method_getconfigvariable.php' => true, |
'smarty_internal_method_getconfigvars.php' => true, |
'smarty_internal_method_getdebugtemplate.php' => true, |
'smarty_internal_method_getdefaultmodifiers.php' => true, |
'smarty_internal_method_getglobal.php' => true, |
'smarty_internal_method_getregisteredobject.php' => true, |
'smarty_internal_method_getstreamvariable.php' => true, |
'smarty_internal_method_gettags.php' => true, |
'smarty_internal_method_gettemplatevars.php' => true, |
'smarty_internal_method_literals.php' => true, |
'smarty_internal_method_loadfilter.php' => true, |
'smarty_internal_method_loadplugin.php' => true, |
'smarty_internal_method_mustcompile.php' => true, |
'smarty_internal_method_registercacheresource.php' => true, |
'smarty_internal_method_registerclass.php' => true, |
'smarty_internal_method_registerdefaultconfighandler.php' => true, |
'smarty_internal_method_registerdefaultpluginhandler.php' => true, |
'smarty_internal_method_registerdefaulttemplatehandler.php' => true, |
'smarty_internal_method_registerfilter.php' => true, |
'smarty_internal_method_registerobject.php' => true, |
'smarty_internal_method_registerplugin.php' => true, |
'smarty_internal_method_registerresource.php' => true, |
'smarty_internal_method_setautoloadfilters.php' => true, |
'smarty_internal_method_setdebugtemplate.php' => true, |
'smarty_internal_method_setdefaultmodifiers.php' => true, |
'smarty_internal_method_unloadfilter.php' => true, |
'smarty_internal_method_unregistercacheresource.php' => true, |
'smarty_internal_method_unregisterfilter.php' => true, |
'smarty_internal_method_unregisterobject.php' => true, |
'smarty_internal_method_unregisterplugin.php' => true, |
'smarty_internal_method_unregisterresource.php' => true, |
'smarty_internal_nocache_insert.php' => true, |
'smarty_internal_parsetree.php' => true, |
'smarty_internal_parsetree_code.php' => true, |
'smarty_internal_parsetree_dq.php' => true, |
'smarty_internal_parsetree_dqcontent.php' => true, |
'smarty_internal_parsetree_tag.php' => true, |
'smarty_internal_parsetree_template.php' => true, |
'smarty_internal_parsetree_text.php' => true, |
'smarty_internal_resource_eval.php' => true, |
'smarty_internal_resource_extends.php' => true, |
'smarty_internal_resource_file.php' => true, |
'smarty_internal_resource_php.php' => true, |
'smarty_internal_resource_registered.php' => true, |
'smarty_internal_resource_stream.php' => true, |
'smarty_internal_resource_string.php' => true, |
'smarty_internal_runtime_cachemodify.php' => true, |
'smarty_internal_runtime_cacheresourcefile.php' => true, |
'smarty_internal_runtime_capture.php' => true, |
'smarty_internal_runtime_codeframe.php' => true, |
'smarty_internal_runtime_filterhandler.php' => true, |
'smarty_internal_runtime_foreach.php' => true, |
'smarty_internal_runtime_getincludepath.php' => true, |
'smarty_internal_runtime_inheritance.php' => true, |
'smarty_internal_runtime_make_nocache.php' => true, |
'smarty_internal_runtime_tplfunction.php' => true, |
'smarty_internal_runtime_updatecache.php' => true, |
'smarty_internal_runtime_updatescope.php' => true, |
'smarty_internal_runtime_writefile.php' => true, |
'smarty_internal_smartytemplatecompiler.php' => true, |
'smarty_internal_template.php' => true, |
'smarty_internal_templatebase.php' => true, |
'smarty_internal_templatecompilerbase.php' => true, |
'smarty_internal_templatelexer.php' => true, |
'smarty_internal_templateparser.php' => true, |
'smarty_internal_testinstall.php' => true, |
'smarty_internal_undefined.php' => true, |
'smarty_resource.php' => true, |
'smarty_resource_custom.php' => true, |
'smarty_resource_recompiled.php' => true, |
'smarty_resource_uncompiled.php' => true, |
'smarty_security.php' => true, |
'smarty_template_cached.php' => true, |
'smarty_template_compiled.php' => true, |
'smarty_template_config.php' => true, |
'smarty_template_resource_base.php' => true, |
'smarty_template_source.php' => true, |
'smarty_undefined_variable.php' => true, |
'smarty_variable.php' => true, |
); |
$iterator = new DirectoryIterator($source); |
foreach ($iterator as $file) { |
if (!$file->isDot()) { |
$filename = $file->getFilename(); |
if (isset($expectedSysplugins[ $filename ])) { |
unset($expectedSysplugins[ $filename ]); |
} |
} |
} |
if ($expectedSysplugins) { |
$status = false; |
$message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expectedSysplugins)); |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'sysplugins' ] = $message; |
} |
} elseif ($errors === null) { |
echo "... OK\n"; |
} |
} else { |
$status = false; |
$message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory'; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'sysplugins_dir_constant' ] = $message; |
} |
} |
if ($errors === null) { |
echo "Testing plugin files...\n"; |
} |
// test if core plugins are available |
$source = SMARTY_PLUGINS_DIR; |
if (is_dir($source)) { |
$expectedPlugins = array( |
'block.textformat.php' => true, |
'function.counter.php' => true, |
'function.cycle.php' => true, |
'function.fetch.php' => true, |
'function.html_checkboxes.php' => true, |
'function.html_image.php' => true, |
'function.html_options.php' => true, |
'function.html_radios.php' => true, |
'function.html_select_date.php' => true, |
'function.html_select_time.php' => true, |
'function.html_table.php' => true, |
'function.mailto.php' => true, |
'function.math.php' => true, |
'modifier.capitalize.php' => true, |
'modifier.date_format.php' => true, |
'modifier.debug_print_var.php' => true, |
'modifier.escape.php' => true, |
'modifier.mb_wordwrap.php' => true, |
'modifier.regex_replace.php' => true, |
'modifier.replace.php' => true, |
'modifier.spacify.php' => true, |
'modifier.truncate.php' => true, |
'modifiercompiler.cat.php' => true, |
'modifiercompiler.count_characters.php' => true, |
'modifiercompiler.count_paragraphs.php' => true, |
'modifiercompiler.count_sentences.php' => true, |
'modifiercompiler.count_words.php' => true, |
'modifiercompiler.default.php' => true, |
'modifiercompiler.escape.php' => true, |
'modifiercompiler.from_charset.php' => true, |
'modifiercompiler.indent.php' => true, |
'modifiercompiler.lower.php' => true, |
'modifiercompiler.noprint.php' => true, |
'modifiercompiler.string_format.php' => true, |
'modifiercompiler.strip.php' => true, |
'modifiercompiler.strip_tags.php' => true, |
'modifiercompiler.to_charset.php' => true, |
'modifiercompiler.unescape.php' => true, |
'modifiercompiler.upper.php' => true, |
'modifiercompiler.wordwrap.php' => true, |
'outputfilter.trimwhitespace.php' => true, |
'shared.escape_special_chars.php' => true, |
'shared.literal_compiler_param.php' => true, |
'shared.make_timestamp.php' => true, |
'shared.mb_str_replace.php' => true, |
'shared.mb_unicode.php' => true, |
'variablefilter.htmlspecialchars.php' => true, |
); |
$iterator = new DirectoryIterator($source); |
foreach ($iterator as $file) { |
if (!$file->isDot()) { |
$filename = $file->getFilename(); |
if (isset($expectedPlugins[ $filename ])) { |
unset($expectedPlugins[ $filename ]); |
} |
} |
} |
if ($expectedPlugins) { |
$status = false; |
$message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expectedPlugins)); |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'plugins' ] = $message; |
} |
} elseif ($errors === null) { |
echo "... OK\n"; |
} |
} else { |
$status = false; |
$message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory'; |
if ($errors === null) { |
echo $message . ".\n"; |
} else { |
$errors[ 'plugins_dir_constant' ] = $message; |
} |
} |
if ($errors === null) { |
echo "Tests complete.\n"; |
echo "</PRE>\n"; |
} |
return $status; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_internal_undefined.php |
---|
0,0 → 1,67 |
<?php |
/** |
* Smarty Internal Undefined |
* |
* Class to handle undefined method calls or calls to obsolete runtime extensions |
* |
* @package Smarty |
* @subpackage PluginsInternal |
* @author Uwe Tews |
*/ |
class Smarty_Internal_Undefined |
{ |
/** |
* Name of undefined extension class |
* |
* @var string|null |
*/ |
public $class = null; |
/** |
* Smarty_Internal_Undefined constructor. |
* |
* @param null|string $class name of undefined extension class |
*/ |
public function __construct($class = null) |
{ |
$this->class = $class; |
} |
/** |
* Wrapper for obsolete class Smarty_Internal_Runtime_ValidateCompiled |
* |
* @param \Smarty_Internal_Template $tpl |
* @param array $properties special template properties |
* @param bool $cache flag if called from cache file |
* |
* @return bool false |
*/ |
public function decodeProperties(Smarty_Internal_Template $tpl, $properties, $cache = false) |
{ |
if ($cache) { |
$tpl->cached->valid = false; |
} else { |
$tpl->mustCompile = true; |
} |
return false; |
} |
/** |
* Call error handler for undefined method |
* |
* @param string $name unknown method-name |
* @param array $args argument array |
* |
* @return mixed |
* @throws SmartyException |
*/ |
public function __call($name, $args) |
{ |
if (isset($this->class)) { |
throw new SmartyException("undefined extension class '{$this->class}'"); |
} else { |
throw new SmartyException(get_class($args[ 0 ]) . "->{$name}() undefined method"); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_resource.php |
---|
0,0 → 1,262 |
<?php |
/** |
* Smarty Resource Plugin |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Resource Plugin |
* Base implementation for resource plugins |
* |
* @package Smarty |
* @subpackage TemplateResources |
* |
* @method renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template) |
* @method populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) |
* @method process(Smarty_Internal_Template $_smarty_tpl) |
*/ |
abstract class Smarty_Resource |
{ |
/** |
* resource types provided by the core |
* |
* @var array |
*/ |
public static $sysplugins = array( |
'file' => 'smarty_internal_resource_file.php', |
'string' => 'smarty_internal_resource_string.php', |
'extends' => 'smarty_internal_resource_extends.php', |
'stream' => 'smarty_internal_resource_stream.php', |
'eval' => 'smarty_internal_resource_eval.php', |
'php' => 'smarty_internal_resource_php.php' |
); |
/** |
* Source is bypassing compiler |
* |
* @var boolean |
*/ |
public $uncompiled = false; |
/** |
* Source must be recompiled on every occasion |
* |
* @var boolean |
*/ |
public $recompiled = false; |
/** |
* Flag if resource does implement populateCompiledFilepath() method |
* |
* @var bool |
*/ |
public $hasCompiledHandler = false; |
/** |
* Load Resource Handler |
* |
* @param Smarty $smarty smarty object |
* @param string $type name of the resource |
* |
* @throws SmartyException |
* @return Smarty_Resource Resource Handler |
*/ |
public static function load(Smarty $smarty, $type) |
{ |
// try smarty's cache |
if (isset($smarty->_cache[ 'resource_handlers' ][ $type ])) { |
return $smarty->_cache[ 'resource_handlers' ][ $type ]; |
} |
// try registered resource |
if (isset($smarty->registered_resources[ $type ])) { |
return $smarty->_cache[ 'resource_handlers' ][ $type ] = |
$smarty->registered_resources[ $type ] instanceof Smarty_Resource ? |
$smarty->registered_resources[ $type ] : new Smarty_Internal_Resource_Registered(); |
} |
// try sysplugins dir |
if (isset(self::$sysplugins[ $type ])) { |
$_resource_class = 'Smarty_Internal_Resource_' . ucfirst($type); |
return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class(); |
} |
// try plugins dir |
$_resource_class = 'Smarty_Resource_' . ucfirst($type); |
if ($smarty->loadPlugin($_resource_class)) { |
if (class_exists($_resource_class, false)) { |
return $smarty->_cache[ 'resource_handlers' ][ $type ] = new $_resource_class(); |
} else { |
$smarty->registerResource( |
$type, |
array( |
"smarty_resource_{$type}_source", "smarty_resource_{$type}_timestamp", |
"smarty_resource_{$type}_secure", "smarty_resource_{$type}_trusted" |
) |
); |
// give it another try, now that the resource is registered properly |
return self::load($smarty, $type); |
} |
} |
// try streams |
$_known_stream = stream_get_wrappers(); |
if (in_array($type, $_known_stream)) { |
// is known stream |
if (is_object($smarty->security_policy)) { |
$smarty->security_policy->isTrustedStream($type); |
} |
return $smarty->_cache[ 'resource_handlers' ][ $type ] = new Smarty_Internal_Resource_Stream(); |
} |
// TODO: try default_(template|config)_handler |
// give up |
throw new SmartyException("Unknown resource type '{$type}'"); |
} |
/** |
* extract resource_type and resource_name from template_resource and config_resource |
* |
* @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including). |
* |
* @param string $resource_name template_resource or config_resource to parse |
* @param string $default_resource the default resource_type defined in $smarty |
* |
* @return array with parsed resource name and type |
*/ |
public static function parseResourceName($resource_name, $default_resource) |
{ |
if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]/', $resource_name, $match)) { |
$type = $match[ 1 ]; |
$name = substr($resource_name, strlen($match[ 0 ])); |
} else { |
// no resource given, use default |
// or single character before the colon is not a resource type, but part of the filepath |
$type = $default_resource; |
$name = $resource_name; |
} |
return array($name, $type); |
} |
/** |
* modify template_resource according to resource handlers specifications |
* |
* @param \Smarty_Internal_Template|\Smarty $obj Smarty instance |
* @param string $template_resource template_resource to extract resource handler and |
* name of |
* |
* @return string unique resource name |
* @throws \SmartyException |
*/ |
public static function getUniqueTemplateName($obj, $template_resource) |
{ |
$smarty = $obj->_getSmartyObj(); |
list($name, $type) = self::parseResourceName($template_resource, $smarty->default_resource_type); |
// TODO: optimize for Smarty's internal resource types |
$resource = Smarty_Resource::load($smarty, $type); |
// go relative to a given template? |
$_file_is_dotted = $name[ 0 ] === '.' && ($name[ 1 ] === '.' || $name[ 1 ] === '/'); |
if ($obj->_isTplObj() && $_file_is_dotted |
&& ($obj->source->type === 'file' || $obj->parent->source->type === 'extends') |
) { |
$name = $smarty->_realpath(dirname($obj->parent->source->filepath) . DIRECTORY_SEPARATOR . $name); |
} |
return $resource->buildUniqueResourceName($smarty, $name); |
} |
/** |
* initialize Source Object for given resource |
* wrapper for backward compatibility to versions < 3.1.22 |
* Either [$_template] or [$smarty, $template_resource] must be specified |
* |
* @param Smarty_Internal_Template $_template template object |
* @param Smarty $smarty smarty object |
* @param string $template_resource resource identifier |
* |
* @return \Smarty_Template_Source Source Object |
* @throws \SmartyException |
*/ |
public static function source( |
Smarty_Internal_Template $_template = null, |
Smarty $smarty = null, |
$template_resource = null |
) { |
return Smarty_Template_Source::load($_template, $smarty, $template_resource); |
} |
/** |
* Load template's source into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
* @throws SmartyException if source cannot be loaded |
*/ |
abstract public function getContent(Smarty_Template_Source $source); |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
*/ |
abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null); |
/** |
* populate Source Object with timestamp and exists from Resource |
* |
* @param Smarty_Template_Source $source source object |
*/ |
public function populateTimestamp(Smarty_Template_Source $source) |
{ |
// intentionally left blank |
} |
/** |
* modify resource_name according to resource handlers specifications |
* |
* @param Smarty $smarty Smarty instance |
* @param string $resource_name resource_name to make unique |
* @param boolean $isConfig flag for config resource |
* |
* @return string unique resource name |
*/ |
public function buildUniqueResourceName(Smarty $smarty, $resource_name, $isConfig = false) |
{ |
if ($isConfig) { |
if (!isset($smarty->_joined_config_dir)) { |
$smarty->getTemplateDir(null, true); |
} |
return get_class($this) . '#' . $smarty->_joined_config_dir . '#' . $resource_name; |
} else { |
if (!isset($smarty->_joined_template_dir)) { |
$smarty->getTemplateDir(); |
} |
return get_class($this) . '#' . $smarty->_joined_template_dir . '#' . $resource_name; |
} |
} |
/* |
* Check if resource must check time stamps when when loading complied or cached templates. |
* Resources like 'extends' which use source components my disable timestamp checks on own resource. |
* |
* @return bool |
*/ |
/** |
* Determine basename for compiled filename |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return basename(preg_replace('![^\w]+!', '_', $source->name)); |
} |
/** |
* @return bool |
*/ |
public function checkTimestamps() |
{ |
return true; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_resource_custom.php |
---|
0,0 → 1,93 |
<?php |
/** |
* Smarty Resource Plugin |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Resource Plugin |
* Wrapper Implementation for custom resource plugins |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
abstract class Smarty_Resource_Custom extends Smarty_Resource |
{ |
/** |
* fetch template and its modification time from data source |
* |
* @param string $name template name |
* @param string &$source template source |
* @param integer &$mtime template modification timestamp (epoch) |
*/ |
abstract protected function fetch($name, &$source, &$mtime); |
/** |
* Fetch template's modification timestamp from data source |
* {@internal implementing this method is optional. |
* Only implement it if modification times can be accessed faster than loading the complete template source.}} |
* |
* @param string $name template name |
* |
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found |
*/ |
protected function fetchTimestamp($name) |
{ |
return null; |
} |
/** |
* populate Source Object with meta data from Resource |
* |
* @param Smarty_Template_Source $source source object |
* @param Smarty_Internal_Template $_template template object |
*/ |
public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null) |
{ |
$source->filepath = $source->type . ':' . substr(preg_replace('/[^A-Za-z0-9.]/', '', $source->name), 0, 25); |
$source->uid = sha1($source->type . ':' . $source->name); |
$mtime = $this->fetchTimestamp($source->name); |
if ($mtime !== null) { |
$source->timestamp = $mtime; |
} else { |
$this->fetch($source->name, $content, $timestamp); |
$source->timestamp = isset($timestamp) ? $timestamp : false; |
if (isset($content)) { |
$source->content = $content; |
} |
} |
$source->exists = !!$source->timestamp; |
} |
/** |
* Load template's source into current template object |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string template source |
* @throws SmartyException if source cannot be loaded |
*/ |
public function getContent(Smarty_Template_Source $source) |
{ |
$this->fetch($source->name, $content, $timestamp); |
if (isset($content)) { |
return $content; |
} |
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); |
} |
/** |
* Determine basename for compiled filename |
* |
* @param Smarty_Template_Source $source source object |
* |
* @return string resource's basename |
*/ |
public function getBasename(Smarty_Template_Source $source) |
{ |
return basename(substr(preg_replace('/[^A-Za-z0-9.]/', '', $source->name), 0, 25)); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_resource_recompiled.php |
---|
0,0 → 1,94 |
<?php |
/** |
* Smarty Resource Plugin |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Resource Plugin |
* Base implementation for resource plugins that don't compile cache |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
abstract class Smarty_Resource_Recompiled extends Smarty_Resource |
{ |
/** |
* Flag that it's an recompiled resource |
* |
* @var bool |
*/ |
public $recompiled = true; |
/** |
* Resource does implement populateCompiledFilepath() method |
* |
* @var bool |
*/ |
public $hasCompiledHandler = true; |
/** |
* compile template from source |
* |
* @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template |
* |
* @throws Exception |
*/ |
public function process(Smarty_Internal_Template $_smarty_tpl) |
{ |
$compiled = &$_smarty_tpl->compiled; |
$compiled->file_dependency = array(); |
$compiled->includes = array(); |
$compiled->nocache_hash = null; |
$compiled->unifunc = null; |
$level = ob_get_level(); |
ob_start(); |
$_smarty_tpl->loadCompiler(); |
// call compiler |
try { |
eval('?>' . $_smarty_tpl->compiler->compileTemplate($_smarty_tpl)); |
} catch (Exception $e) { |
unset($_smarty_tpl->compiler); |
while (ob_get_level() > $level) { |
ob_end_clean(); |
} |
throw $e; |
} |
// release compiler object to free memory |
unset($_smarty_tpl->compiler); |
ob_get_clean(); |
$compiled->timestamp = time(); |
$compiled->exists = true; |
} |
/** |
* populate Compiled Object with compiled filepath |
* |
* @param Smarty_Template_Compiled $compiled compiled object |
* @param Smarty_Internal_Template $_template template object |
* |
* @return void |
*/ |
public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) |
{ |
$compiled->filepath = false; |
$compiled->timestamp = false; |
$compiled->exists = false; |
} |
/* |
* Disable timestamp checks for recompiled resource. |
* |
* @return bool |
*/ |
/** |
* @return bool |
*/ |
public function checkTimestamps() |
{ |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_resource_uncompiled.php |
---|
0,0 → 1,49 |
<?php |
/** |
* Smarty Resource Plugin |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
/** |
* Smarty Resource Plugin |
* Base implementation for resource plugins that don't use the compiler |
* |
* @package Smarty |
* @subpackage TemplateResources |
*/ |
abstract class Smarty_Resource_Uncompiled extends Smarty_Resource |
{ |
/** |
* Flag that it's an uncompiled resource |
* |
* @var bool |
*/ |
public $uncompiled = true; |
/** |
* Resource does implement populateCompiledFilepath() method |
* |
* @var bool |
*/ |
public $hasCompiledHandler = true; |
/** |
* populate compiled object with compiled filepath |
* |
* @param Smarty_Template_Compiled $compiled compiled object |
* @param Smarty_Internal_Template $_template template object |
*/ |
public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template) |
{ |
$compiled->filepath = $_template->source->filepath; |
$compiled->timestamp = $_template->source->timestamp; |
$compiled->exists = $_template->source->exists; |
if ($_template->smarty->merge_compiled_includes || $_template->source->handler->checkTimestamps()) { |
$compiled->file_dependency[ $_template->source->uid ] = |
array($compiled->filepath, $compiled->timestamp, $_template->source->type,); |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_security.php |
---|
0,0 → 1,721 |
<?php |
/** |
* Smarty plugin |
* |
* @package Smarty |
* @subpackage Security |
* @author Uwe Tews |
*/ |
/** |
* FIXME: Smarty_Security API |
* - getter and setter instead of public properties would allow cultivating an internal cache properly |
* - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir |
* are immutable the cache is killed every time either of the variables change. That means that two distinct |
* Smarty objects with differing |
* $template_dir or $config_dir should NOT share the same Smarty_Security instance, |
* as this would lead to (severe) performance penalty! how should this be handled? |
*/ |
/** |
* This class does contain the security settings |
*/ |
class Smarty_Security |
{ |
/** |
* This determines how Smarty handles "<?php ... ?>" tags in templates. |
* possible values: |
* <ul> |
* <li>Smarty::PHP_PASSTHRU -> echo PHP tags as they are</li> |
* <li>Smarty::PHP_QUOTE -> escape tags as entities</li> |
* <li>Smarty::PHP_REMOVE -> remove php tags</li> |
* <li>Smarty::PHP_ALLOW -> execute php tags</li> |
* </ul> |
* |
* @var integer |
*/ |
public $php_handling = Smarty::PHP_PASSTHRU; |
/** |
* This is the list of template directories that are considered secure. |
* $template_dir is in this list implicitly. |
* |
* @var array |
*/ |
public $secure_dir = array(); |
/** |
* This is an array of directories where trusted php scripts reside. |
* {@link $security} is disabled during their inclusion/execution. |
* |
* @var array |
*/ |
public $trusted_dir = array(); |
/** |
* List of regular expressions (PCRE) that include trusted URIs |
* |
* @var array |
*/ |
public $trusted_uri = array(); |
/** |
* List of trusted constants names |
* |
* @var array |
*/ |
public $trusted_constants = array(); |
/** |
* This is an array of trusted static classes. |
* If empty access to all static classes is allowed. |
* If set to 'none' none is allowed. |
* |
* @var array |
*/ |
public $static_classes = array(); |
/** |
* This is an nested array of trusted classes and static methods. |
* If empty access to all static classes and methods is allowed. |
* Format: |
* array ( |
* 'class_1' => array('method_1', 'method_2'), // allowed methods listed |
* 'class_2' => array(), // all methods of class allowed |
* ) |
* If set to null none is allowed. |
* |
* @var array |
*/ |
public $trusted_static_methods = array(); |
/** |
* This is an array of trusted static properties. |
* If empty access to all static classes and properties is allowed. |
* Format: |
* array ( |
* 'class_1' => array('prop_1', 'prop_2'), // allowed properties listed |
* 'class_2' => array(), // all properties of class allowed |
* ) |
* If set to null none is allowed. |
* |
* @var array |
*/ |
public $trusted_static_properties = array(); |
/** |
* This is an array of trusted PHP functions. |
* If empty all functions are allowed. |
* To disable all PHP functions set $php_functions = null. |
* |
* @var array |
*/ |
public $php_functions = array('isset', 'empty', 'count', 'sizeof', 'in_array', 'is_array', 'time',); |
/** |
* This is an array of trusted PHP modifiers. |
* If empty all modifiers are allowed. |
* To disable all modifier set $php_modifiers = null. |
* |
* @var array |
*/ |
public $php_modifiers = array('escape', 'count', 'nl2br',); |
/** |
* This is an array of allowed tags. |
* If empty no restriction by allowed_tags. |
* |
* @var array |
*/ |
public $allowed_tags = array(); |
/** |
* This is an array of disabled tags. |
* If empty no restriction by disabled_tags. |
* |
* @var array |
*/ |
public $disabled_tags = array(); |
/** |
* This is an array of allowed modifier plugins. |
* If empty no restriction by allowed_modifiers. |
* |
* @var array |
*/ |
public $allowed_modifiers = array(); |
/** |
* This is an array of disabled modifier plugins. |
* If empty no restriction by disabled_modifiers. |
* |
* @var array |
*/ |
public $disabled_modifiers = array(); |
/** |
* This is an array of disabled special $smarty variables. |
* |
* @var array |
*/ |
public $disabled_special_smarty_vars = array(); |
/** |
* This is an array of trusted streams. |
* If empty all streams are allowed. |
* To disable all streams set $streams = null. |
* |
* @var array |
*/ |
public $streams = array('file'); |
/** |
* + flag if constants can be accessed from template |
* |
* @var boolean |
*/ |
public $allow_constants = true; |
/** |
* + flag if super globals can be accessed from template |
* |
* @var boolean |
*/ |
public $allow_super_globals = true; |
/** |
* max template nesting level |
* |
* @var int |
*/ |
public $max_template_nesting = 0; |
/** |
* current template nesting level |
* |
* @var int |
*/ |
private $_current_template_nesting = 0; |
/** |
* Cache for $resource_dir lookup |
* |
* @var array |
*/ |
protected $_resource_dir = array(); |
/** |
* Cache for $template_dir lookup |
* |
* @var array |
*/ |
protected $_template_dir = array(); |
/** |
* Cache for $config_dir lookup |
* |
* @var array |
*/ |
protected $_config_dir = array(); |
/** |
* Cache for $secure_dir lookup |
* |
* @var array |
*/ |
protected $_secure_dir = array(); |
/** |
* Cache for $php_resource_dir lookup |
* |
* @var array |
*/ |
protected $_php_resource_dir = null; |
/** |
* Cache for $trusted_dir lookup |
* |
* @var array |
*/ |
protected $_trusted_dir = null; |
/** |
* Cache for include path status |
* |
* @var bool |
*/ |
protected $_include_path_status = false; |
/** |
* Cache for $_include_array lookup |
* |
* @var array |
*/ |
protected $_include_dir = array(); |
/** |
* @param Smarty $smarty |
*/ |
public function __construct($smarty) |
{ |
$this->smarty = $smarty; |
} |
/** |
* Check if PHP function is trusted. |
* |
* @param string $function_name |
* @param object $compiler compiler object |
* |
* @return boolean true if function is trusted |
*/ |
public function isTrustedPhpFunction($function_name, $compiler) |
{ |
if (isset($this->php_functions) |
&& (empty($this->php_functions) || in_array($function_name, $this->php_functions)) |
) { |
return true; |
} |
$compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting"); |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if static class is trusted. |
* |
* @param string $class_name |
* @param object $compiler compiler object |
* |
* @return boolean true if class is trusted |
*/ |
public function isTrustedStaticClass($class_name, $compiler) |
{ |
if (isset($this->static_classes) |
&& (empty($this->static_classes) || in_array($class_name, $this->static_classes)) |
) { |
return true; |
} |
$compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting"); |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if static class method/property is trusted. |
* |
* @param string $class_name |
* @param string $params |
* @param object $compiler compiler object |
* |
* @return boolean true if class method is trusted |
*/ |
public function isTrustedStaticClassAccess($class_name, $params, $compiler) |
{ |
if (!isset($params[ 2 ])) { |
// fall back |
return $this->isTrustedStaticClass($class_name, $compiler); |
} |
if ($params[ 2 ] === 'method') { |
$allowed = $this->trusted_static_methods; |
$name = substr($params[ 0 ], 0, strpos($params[ 0 ], '(')); |
} else { |
$allowed = $this->trusted_static_properties; |
// strip '$' |
$name = substr($params[ 0 ], 1); |
} |
if (isset($allowed)) { |
if (empty($allowed)) { |
// fall back |
return $this->isTrustedStaticClass($class_name, $compiler); |
} |
if (isset($allowed[ $class_name ]) |
&& (empty($allowed[ $class_name ]) || in_array($name, $allowed[ $class_name ])) |
) { |
return true; |
} |
} |
$compiler->trigger_template_error("access to static class '{$class_name}' {$params[2]} '{$name}' not allowed by security setting"); |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if PHP modifier is trusted. |
* |
* @param string $modifier_name |
* @param object $compiler compiler object |
* |
* @return boolean true if modifier is trusted |
*/ |
public function isTrustedPhpModifier($modifier_name, $compiler) |
{ |
if (isset($this->php_modifiers) |
&& (empty($this->php_modifiers) || in_array($modifier_name, $this->php_modifiers)) |
) { |
return true; |
} |
$compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting"); |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if tag is trusted. |
* |
* @param string $tag_name |
* @param object $compiler compiler object |
* |
* @return boolean true if tag is trusted |
*/ |
public function isTrustedTag($tag_name, $compiler) |
{ |
// check for internal always required tags |
if (in_array( |
$tag_name, |
array( |
'assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin', |
'private_object_block_function', 'private_object_function', 'private_registered_function', |
'private_registered_block', 'private_special_variable', 'private_print_expression', |
'private_modifier' |
) |
) |
) { |
return true; |
} |
// check security settings |
if (empty($this->allowed_tags)) { |
if (empty($this->disabled_tags) || !in_array($tag_name, $this->disabled_tags)) { |
return true; |
} else { |
$compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", null, true); |
} |
} elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) { |
return true; |
} else { |
$compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", null, true); |
} |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if special $smarty variable is trusted. |
* |
* @param string $var_name |
* @param object $compiler compiler object |
* |
* @return boolean true if tag is trusted |
*/ |
public function isTrustedSpecialSmartyVar($var_name, $compiler) |
{ |
if (!in_array($var_name, $this->disabled_special_smarty_vars)) { |
return true; |
} else { |
$compiler->trigger_template_error( |
"special variable '\$smarty.{$var_name}' not allowed by security setting", |
null, |
true |
); |
} |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if modifier plugin is trusted. |
* |
* @param string $modifier_name |
* @param object $compiler compiler object |
* |
* @return boolean true if tag is trusted |
*/ |
public function isTrustedModifier($modifier_name, $compiler) |
{ |
// check for internal always allowed modifier |
if (in_array($modifier_name, array('default'))) { |
return true; |
} |
// check security settings |
if (empty($this->allowed_modifiers)) { |
if (empty($this->disabled_modifiers) || !in_array($modifier_name, $this->disabled_modifiers)) { |
return true; |
} else { |
$compiler->trigger_template_error( |
"modifier '{$modifier_name}' disabled by security setting", |
null, |
true |
); |
} |
} elseif (in_array($modifier_name, $this->allowed_modifiers) |
&& !in_array($modifier_name, $this->disabled_modifiers) |
) { |
return true; |
} else { |
$compiler->trigger_template_error( |
"modifier '{$modifier_name}' not allowed by security setting", |
null, |
true |
); |
} |
return false; // should not, but who knows what happens to the compiler in the future? |
} |
/** |
* Check if constants are enabled or trusted |
* |
* @param string $const constant name |
* @param object $compiler compiler object |
* |
* @return bool |
*/ |
public function isTrustedConstant($const, $compiler) |
{ |
if (in_array($const, array('true', 'false', 'null'))) { |
return true; |
} |
if (!empty($this->trusted_constants)) { |
if (!in_array(strtolower($const), $this->trusted_constants)) { |
$compiler->trigger_template_error("Security: access to constant '{$const}' not permitted"); |
return false; |
} |
return true; |
} |
if ($this->allow_constants) { |
return true; |
} |
$compiler->trigger_template_error("Security: access to constants not permitted"); |
return false; |
} |
/** |
* Check if stream is trusted. |
* |
* @param string $stream_name |
* |
* @return boolean true if stream is trusted |
* @throws SmartyException if stream is not trusted |
*/ |
public function isTrustedStream($stream_name) |
{ |
if (isset($this->streams) && (empty($this->streams) || in_array($stream_name, $this->streams))) { |
return true; |
} |
throw new SmartyException("stream '{$stream_name}' not allowed by security setting"); |
} |
/** |
* Check if directory of file resource is trusted. |
* |
* @param string $filepath |
* @param null|bool $isConfig |
* |
* @return bool true if directory is trusted |
* @throws \SmartyException if directory is not trusted |
*/ |
public function isTrustedResourceDir($filepath, $isConfig = null) |
{ |
if ($this->_include_path_status !== $this->smarty->use_include_path) { |
$_dir = |
$this->smarty->use_include_path ? $this->smarty->ext->_getIncludePath->getIncludePathDirs($this->smarty) : array(); |
if ($this->_include_dir !== $_dir) { |
$this->_updateResourceDir($this->_include_dir, $_dir); |
$this->_include_dir = $_dir; |
} |
$this->_include_path_status = $this->smarty->use_include_path; |
} |
$_dir = $this->smarty->getTemplateDir(); |
if ($this->_template_dir !== $_dir) { |
$this->_updateResourceDir($this->_template_dir, $_dir); |
$this->_template_dir = $_dir; |
} |
$_dir = $this->smarty->getConfigDir(); |
if ($this->_config_dir !== $_dir) { |
$this->_updateResourceDir($this->_config_dir, $_dir); |
$this->_config_dir = $_dir; |
} |
if ($this->_secure_dir !== $this->secure_dir) { |
$this->secure_dir = (array)$this->secure_dir; |
foreach ($this->secure_dir as $k => $d) { |
$this->secure_dir[ $k ] = $this->smarty->_realpath($d . DIRECTORY_SEPARATOR, true); |
} |
$this->_updateResourceDir($this->_secure_dir, $this->secure_dir); |
$this->_secure_dir = $this->secure_dir; |
} |
$addPath = $this->_checkDir($filepath, $this->_resource_dir); |
if ($addPath !== false) { |
$this->_resource_dir = array_merge($this->_resource_dir, $addPath); |
} |
return true; |
} |
/** |
* Check if URI (e.g. {fetch} or {html_image}) is trusted |
* To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}". |
* So "http://username:password@hello.world.example.org:8080/some-path?some=query-string" |
* is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}. |
* |
* @param string $uri |
* |
* @return boolean true if URI is trusted |
* @throws SmartyException if URI is not trusted |
* @uses $trusted_uri for list of patterns to match against $uri |
*/ |
public function isTrustedUri($uri) |
{ |
$_uri = parse_url($uri); |
if (!empty($_uri[ 'scheme' ]) && !empty($_uri[ 'host' ])) { |
$_uri = $_uri[ 'scheme' ] . '://' . $_uri[ 'host' ]; |
foreach ($this->trusted_uri as $pattern) { |
if (preg_match($pattern, $_uri)) { |
return true; |
} |
} |
} |
throw new SmartyException("URI '{$uri}' not allowed by security setting"); |
} |
/** |
* Check if directory of file resource is trusted. |
* |
* @param string $filepath |
* |
* @return boolean true if directory is trusted |
* @throws SmartyException if PHP directory is not trusted |
*/ |
public function isTrustedPHPDir($filepath) |
{ |
if (empty($this->trusted_dir)) { |
throw new SmartyException("directory '{$filepath}' not allowed by security setting (no trusted_dir specified)"); |
} |
// check if index is outdated |
if (!$this->_trusted_dir || $this->_trusted_dir !== $this->trusted_dir) { |
$this->_php_resource_dir = array(); |
$this->_trusted_dir = $this->trusted_dir; |
foreach ((array)$this->trusted_dir as $directory) { |
$directory = $this->smarty->_realpath($directory . '/', true); |
$this->_php_resource_dir[ $directory ] = true; |
} |
} |
$addPath = $this->_checkDir($filepath, $this->_php_resource_dir); |
if ($addPath !== false) { |
$this->_php_resource_dir = array_merge($this->_php_resource_dir, $addPath); |
} |
return true; |
} |
/** |
* Remove old directories and its sub folders, add new directories |
* |
* @param array $oldDir |
* @param array $newDir |
*/ |
private function _updateResourceDir($oldDir, $newDir) |
{ |
foreach ($oldDir as $directory) { |
// $directory = $this->smarty->_realpath($directory, true); |
$length = strlen($directory); |
foreach ($this->_resource_dir as $dir) { |
if (substr($dir, 0, $length) === $directory) { |
unset($this->_resource_dir[ $dir ]); |
} |
} |
} |
foreach ($newDir as $directory) { |
// $directory = $this->smarty->_realpath($directory, true); |
$this->_resource_dir[ $directory ] = true; |
} |
} |
/** |
* Check if file is inside a valid directory |
* |
* @param string $filepath |
* @param array $dirs valid directories |
* |
* @return array|bool |
* @throws \SmartyException |
*/ |
private function _checkDir($filepath, $dirs) |
{ |
$directory = dirname($this->smarty->_realpath($filepath, true)) . DIRECTORY_SEPARATOR; |
$_directory = array(); |
if (!preg_match('#[\\\\/][.][.][\\\\/]#', $directory)) { |
while (true) { |
// test if the directory is trusted |
if (isset($dirs[ $directory ])) { |
return $_directory; |
} |
// abort if we've reached root |
if (!preg_match('#[\\\\/][^\\\\/]+[\\\\/]$#', $directory)) { |
// give up |
break; |
} |
// remember the directory to add it to _resource_dir in case we're successful |
$_directory[ $directory ] = true; |
// bubble up one level |
$directory = preg_replace('#[\\\\/][^\\\\/]+[\\\\/]$#', DIRECTORY_SEPARATOR, $directory); |
} |
} |
// give up |
throw new SmartyException(sprintf('Smarty Security: not trusted file path \'%s\' ', $filepath)); |
} |
/** |
* Loads security class and enables security |
* |
* @param \Smarty $smarty |
* @param string|Smarty_Security $security_class if a string is used, it must be class-name |
* |
* @return \Smarty current Smarty instance for chaining |
* @throws \SmartyException when an invalid class name is provided |
*/ |
public static function enableSecurity(Smarty $smarty, $security_class) |
{ |
if ($security_class instanceof Smarty_Security) { |
$smarty->security_policy = $security_class; |
return $smarty; |
} elseif (is_object($security_class)) { |
throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security."); |
} |
if ($security_class === null) { |
$security_class = $smarty->security_class; |
} |
if (!class_exists($security_class)) { |
throw new SmartyException("Security class '$security_class' is not defined"); |
} elseif ($security_class !== 'Smarty_Security' && !is_subclass_of($security_class, 'Smarty_Security')) { |
throw new SmartyException("Class '$security_class' must extend Smarty_Security."); |
} else { |
$smarty->security_policy = new $security_class($smarty); |
} |
return $smarty; |
} |
/** |
* Start template processing |
* |
* @param $template |
* |
* @throws SmartyException |
*/ |
public function startTemplate($template) |
{ |
if ($this->max_template_nesting > 0 && $this->_current_template_nesting++ >= $this->max_template_nesting) { |
throw new SmartyException("maximum template nesting level of '{$this->max_template_nesting}' exceeded when calling '{$template->template_resource}'"); |
} |
} |
/** |
* Exit template processing |
*/ |
public function endTemplate() |
{ |
if ($this->max_template_nesting > 0) { |
$this->_current_template_nesting--; |
} |
} |
/** |
* Register callback functions call at start/end of template rendering |
* |
* @param \Smarty_Internal_Template $template |
*/ |
public function registerCallBacks(Smarty_Internal_Template $template) |
{ |
$template->startRenderCallbacks[] = array($this, 'startTemplate'); |
$template->endRenderCallbacks[] = array($this, 'endTemplate'); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_template_cached.php |
---|
0,0 → 1,257 |
<?php |
/** |
* Created by PhpStorm. |
* User: Uwe Tews |
* Date: 04.12.2014 |
* Time: 06:08 |
*/ |
/** |
* Smarty Resource Data Object |
* Cache Data Container for Template Files |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
class Smarty_Template_Cached extends Smarty_Template_Resource_Base |
{ |
/** |
* Cache Is Valid |
* |
* @var boolean |
*/ |
public $valid = null; |
/** |
* CacheResource Handler |
* |
* @var Smarty_CacheResource |
*/ |
public $handler = null; |
/** |
* Template Cache Id (Smarty_Internal_Template::$cache_id) |
* |
* @var string |
*/ |
public $cache_id = null; |
/** |
* saved cache lifetime in seconds |
* |
* @var integer |
*/ |
public $cache_lifetime = 0; |
/** |
* Id for cache locking |
* |
* @var string |
*/ |
public $lock_id = null; |
/** |
* flag that cache is locked by this instance |
* |
* @var bool |
*/ |
public $is_locked = false; |
/** |
* Source Object |
* |
* @var Smarty_Template_Source |
*/ |
public $source = null; |
/** |
* Nocache hash codes of processed compiled templates |
* |
* @var array |
*/ |
public $hashes = array(); |
/** |
* Flag if this is a cache resource |
* |
* @var bool |
*/ |
public $isCache = true; |
/** |
* create Cached Object container |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @throws \SmartyException |
*/ |
public function __construct(Smarty_Internal_Template $_template) |
{ |
$this->compile_id = $_template->compile_id; |
$this->cache_id = $_template->cache_id; |
$this->source = $_template->source; |
if (!class_exists('Smarty_CacheResource', false)) { |
include SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php'; |
} |
$this->handler = Smarty_CacheResource::load($_template->smarty); |
} |
/** |
* @param Smarty_Internal_Template $_template |
* |
* @return Smarty_Template_Cached |
*/ |
public static function load(Smarty_Internal_Template $_template) |
{ |
$_template->cached = new Smarty_Template_Cached($_template); |
$_template->cached->handler->populate($_template->cached, $_template); |
// caching enabled ? |
if (!$_template->caching || $_template->source->handler->recompiled |
) { |
$_template->cached->valid = false; |
} |
return $_template->cached; |
} |
/** |
* Render cache template |
* |
* @param \Smarty_Internal_Template $_template |
* @param bool $no_output_filter |
* |
* @throws \Exception |
*/ |
public function render(Smarty_Internal_Template $_template, $no_output_filter = true) |
{ |
if ($this->isCached($_template)) { |
if ($_template->smarty->debugging) { |
if (!isset($_template->smarty->_debug)) { |
$_template->smarty->_debug = new Smarty_Internal_Debug(); |
} |
$_template->smarty->_debug->start_cache($_template); |
} |
if (!$this->processed) { |
$this->process($_template); |
} |
$this->getRenderedTemplateCode($_template); |
if ($_template->smarty->debugging) { |
$_template->smarty->_debug->end_cache($_template); |
} |
return; |
} else { |
$_template->smarty->ext->_updateCache->updateCache($this, $_template, $no_output_filter); |
} |
} |
/** |
* Check if cache is valid, lock cache if required |
* |
* @param \Smarty_Internal_Template $_template |
* |
* @return bool flag true if cache is valid |
*/ |
public function isCached(Smarty_Internal_Template $_template) |
{ |
if ($this->valid !== null) { |
return $this->valid; |
} |
while (true) { |
while (true) { |
if ($this->exists === false || $_template->smarty->force_compile || $_template->smarty->force_cache) { |
$this->valid = false; |
} else { |
$this->valid = true; |
} |
if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_CURRENT |
&& $_template->cache_lifetime >= 0 && time() > ($this->timestamp + $_template->cache_lifetime) |
) { |
// lifetime expired |
$this->valid = false; |
} |
if ($this->valid && $_template->compile_check === Smarty::COMPILECHECK_ON |
&& $_template->source->getTimeStamp() > $this->timestamp |
) { |
$this->valid = false; |
} |
if ($this->valid || !$_template->smarty->cache_locking) { |
break; |
} |
if (!$this->handler->locked($_template->smarty, $this)) { |
$this->handler->acquireLock($_template->smarty, $this); |
break 2; |
} |
$this->handler->populate($this, $_template); |
} |
if ($this->valid) { |
if (!$_template->smarty->cache_locking || $this->handler->locked($_template->smarty, $this) === null) { |
// load cache file for the following checks |
if ($_template->smarty->debugging) { |
$_template->smarty->_debug->start_cache($_template); |
} |
if ($this->handler->process($_template, $this) === false) { |
$this->valid = false; |
} else { |
$this->processed = true; |
} |
if ($_template->smarty->debugging) { |
$_template->smarty->_debug->end_cache($_template); |
} |
} else { |
$this->is_locked = true; |
continue; |
} |
} else { |
return $this->valid; |
} |
if ($this->valid && $_template->caching === Smarty::CACHING_LIFETIME_SAVED |
&& $_template->cached->cache_lifetime >= 0 |
&& (time() > ($_template->cached->timestamp + $_template->cached->cache_lifetime)) |
) { |
$this->valid = false; |
} |
if ($_template->smarty->cache_locking) { |
if (!$this->valid) { |
$this->handler->acquireLock($_template->smarty, $this); |
} elseif ($this->is_locked) { |
$this->handler->releaseLock($_template->smarty, $this); |
} |
} |
return $this->valid; |
} |
return $this->valid; |
} |
/** |
* Process cached template |
* |
* @param Smarty_Internal_Template $_template template object |
* @param bool $update flag if called because cache update |
*/ |
public function process(Smarty_Internal_Template $_template, $update = false) |
{ |
if ($this->handler->process($_template, $this, $update) === false) { |
$this->valid = false; |
} |
if ($this->valid) { |
$this->processed = true; |
} else { |
$this->processed = false; |
} |
} |
/** |
* Read cache content from handler |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string|false content |
*/ |
public function read(Smarty_Internal_Template $_template) |
{ |
if (!$_template->source->handler->recompiled) { |
return $this->handler->readCachedContent($_template); |
} |
return false; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_template_compiled.php |
---|
0,0 → 1,257 |
<?php |
/** |
* Smarty Resource Data Object |
* Meta Data Container for Template Files |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
* @property string $content compiled content |
*/ |
class Smarty_Template_Compiled extends Smarty_Template_Resource_Base |
{ |
/** |
* nocache hash |
* |
* @var string|null |
*/ |
public $nocache_hash = null; |
/** |
* get a Compiled Object of this source |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return Smarty_Template_Compiled compiled object |
*/ |
public static function load($_template) |
{ |
$compiled = new Smarty_Template_Compiled(); |
if ($_template->source->handler->hasCompiledHandler) { |
$_template->source->handler->populateCompiledFilepath($compiled, $_template); |
} else { |
$compiled->populateCompiledFilepath($_template); |
} |
return $compiled; |
} |
/** |
* populate Compiled Object with compiled filepath |
* |
* @param Smarty_Internal_Template $_template template object |
**/ |
public function populateCompiledFilepath(Smarty_Internal_Template $_template) |
{ |
$source = &$_template->source; |
$smarty = &$_template->smarty; |
$this->filepath = $smarty->getCompileDir(); |
if (isset($_template->compile_id)) { |
$this->filepath .= preg_replace('![^\w]+!', '_', $_template->compile_id) . |
($smarty->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'); |
} |
// if use_sub_dirs, break file into directories |
if ($smarty->use_sub_dirs) { |
$this->filepath .= $source->uid[ 0 ] . $source->uid[ 1 ] . DIRECTORY_SEPARATOR . $source->uid[ 2 ] . |
$source->uid[ 3 ] . DIRECTORY_SEPARATOR . $source->uid[ 4 ] . $source->uid[ 5 ] . |
DIRECTORY_SEPARATOR; |
} |
$this->filepath .= $source->uid . '_'; |
if ($source->isConfig) { |
$this->filepath .= (int)$smarty->config_read_hidden + (int)$smarty->config_booleanize * 2 + |
(int)$smarty->config_overwrite * 4; |
} else { |
$this->filepath .= (int)$smarty->merge_compiled_includes + (int)$smarty->escape_html * 2 + |
(($smarty->merge_compiled_includes && $source->type === 'extends') ? |
(int)$smarty->extends_recursion * 4 : 0); |
} |
$this->filepath .= '.' . $source->type; |
$basename = $source->handler->getBasename($source); |
if (!empty($basename)) { |
$this->filepath .= '.' . $basename; |
} |
if ($_template->caching) { |
$this->filepath .= '.cache'; |
} |
$this->filepath .= '.php'; |
$this->timestamp = $this->exists = is_file($this->filepath); |
if ($this->exists) { |
$this->timestamp = filemtime($this->filepath); |
} |
} |
/** |
* render compiled template code |
* |
* @param Smarty_Internal_Template $_template |
* |
* @return string |
* @throws Exception |
*/ |
public function render(Smarty_Internal_Template $_template) |
{ |
// checks if template exists |
if (!$_template->source->exists) { |
$type = $_template->source->isConfig ? 'config' : 'template'; |
throw new SmartyException("Unable to load {$type} '{$_template->source->type}:{$_template->source->name}'"); |
} |
if ($_template->smarty->debugging) { |
if (!isset($_template->smarty->_debug)) { |
$_template->smarty->_debug = new Smarty_Internal_Debug(); |
} |
$_template->smarty->_debug->start_render($_template); |
} |
if (!$this->processed) { |
$this->process($_template); |
} |
if (isset($_template->cached)) { |
$_template->cached->file_dependency = |
array_merge($_template->cached->file_dependency, $this->file_dependency); |
} |
if ($_template->source->handler->uncompiled) { |
$_template->source->handler->renderUncompiled($_template->source, $_template); |
} else { |
$this->getRenderedTemplateCode($_template); |
} |
if ($_template->caching && $this->has_nocache_code) { |
$_template->cached->hashes[ $this->nocache_hash ] = true; |
} |
if ($_template->smarty->debugging) { |
$_template->smarty->_debug->end_render($_template); |
} |
} |
/** |
* load compiled template or compile from source |
* |
* @param Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template |
* |
* @throws Exception |
*/ |
public function process(Smarty_Internal_Template $_smarty_tpl) |
{ |
$source = &$_smarty_tpl->source; |
$smarty = &$_smarty_tpl->smarty; |
if ($source->handler->recompiled) { |
$source->handler->process($_smarty_tpl); |
} elseif (!$source->handler->uncompiled) { |
if (!$this->exists || $smarty->force_compile |
|| ($_smarty_tpl->compile_check && $source->getTimeStamp() > $this->getTimeStamp()) |
) { |
$this->compileTemplateSource($_smarty_tpl); |
$compileCheck = $_smarty_tpl->compile_check; |
$_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF; |
$this->loadCompiledTemplate($_smarty_tpl); |
$_smarty_tpl->compile_check = $compileCheck; |
} else { |
$_smarty_tpl->mustCompile = true; |
@include $this->filepath; |
if ($_smarty_tpl->mustCompile) { |
$this->compileTemplateSource($_smarty_tpl); |
$compileCheck = $_smarty_tpl->compile_check; |
$_smarty_tpl->compile_check = Smarty::COMPILECHECK_OFF; |
$this->loadCompiledTemplate($_smarty_tpl); |
$_smarty_tpl->compile_check = $compileCheck; |
} |
} |
$_smarty_tpl->_subTemplateRegister(); |
$this->processed = true; |
} |
} |
/** |
* compile template from source |
* |
* @param Smarty_Internal_Template $_template |
* |
* @throws Exception |
*/ |
public function compileTemplateSource(Smarty_Internal_Template $_template) |
{ |
$this->file_dependency = array(); |
$this->includes = array(); |
$this->nocache_hash = null; |
$this->unifunc = null; |
// compile locking |
if ($saved_timestamp = (!$_template->source->handler->recompiled && is_file($this->filepath))) { |
$saved_timestamp = $this->getTimeStamp(); |
touch($this->filepath); |
} |
// compile locking |
try { |
// call compiler |
$_template->loadCompiler(); |
$this->write($_template, $_template->compiler->compileTemplate($_template)); |
} catch (Exception $e) { |
// restore old timestamp in case of error |
if ($saved_timestamp && is_file($this->filepath)) { |
touch($this->filepath, $saved_timestamp); |
} |
unset($_template->compiler); |
throw $e; |
} |
// release compiler object to free memory |
unset($_template->compiler); |
} |
/** |
* Write compiled code by handler |
* |
* @param Smarty_Internal_Template $_template template object |
* @param string $code compiled code |
* |
* @return bool success |
* @throws \SmartyException |
*/ |
public function write(Smarty_Internal_Template $_template, $code) |
{ |
if (!$_template->source->handler->recompiled) { |
if ($_template->smarty->ext->_writeFile->writeFile($this->filepath, $code, $_template->smarty) === true) { |
$this->timestamp = $this->exists = is_file($this->filepath); |
if ($this->exists) { |
$this->timestamp = filemtime($this->filepath); |
return true; |
} |
} |
return false; |
} |
return true; |
} |
/** |
* Read compiled content from handler |
* |
* @param Smarty_Internal_Template $_template template object |
* |
* @return string content |
*/ |
public function read(Smarty_Internal_Template $_template) |
{ |
if (!$_template->source->handler->recompiled) { |
return file_get_contents($this->filepath); |
} |
return isset($this->content) ? $this->content : false; |
} |
/** |
* Load fresh compiled template by including the PHP file |
* HHVM requires a work around because of a PHP incompatibility |
* |
* @param \Smarty_Internal_Template $_smarty_tpl do not change variable name, is used by compiled template |
*/ |
private function loadCompiledTemplate(Smarty_Internal_Template $_smarty_tpl) |
{ |
if (function_exists('opcache_invalidate') |
&& (!function_exists('ini_get') || strlen(ini_get("opcache.restrict_api")) < 1) |
) { |
opcache_invalidate($this->filepath, true); |
} elseif (function_exists('apc_compile_file')) { |
apc_compile_file($this->filepath); |
} |
if (defined('HHVM_VERSION')) { |
eval('?>' . file_get_contents($this->filepath)); |
} else { |
include $this->filepath; |
} |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_template_config.php |
---|
0,0 → 1,100 |
<?php |
/** |
* Smarty Config Source Plugin |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
*/ |
/** |
* Smarty Config Resource Data Object |
* Meta Data Container for Template Files |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Uwe Tews |
*/ |
class Smarty_Template_Config extends Smarty_Template_Source |
{ |
/** |
* array of section names, single section or null |
* |
* @var null|string|array |
*/ |
public $config_sections = null; |
/** |
* scope into which the config variables shall be loaded |
* |
* @var int |
*/ |
public $scope = 0; |
/** |
* Flag that source is a config file |
* |
* @var bool |
*/ |
public $isConfig = true; |
/** |
* Name of the Class to compile this resource's contents with |
* |
* @var string |
*/ |
public $compiler_class = 'Smarty_Internal_Config_File_Compiler'; |
/** |
* Name of the Class to tokenize this resource's contents with |
* |
* @var string |
*/ |
public $template_lexer_class = 'Smarty_Internal_Configfilelexer'; |
/** |
* Name of the Class to parse this resource's contents with |
* |
* @var string |
*/ |
public $template_parser_class = 'Smarty_Internal_Configfileparser'; |
/** |
* initialize Source Object for given resource |
* Either [$_template] or [$smarty, $template_resource] must be specified |
* |
* @param Smarty_Internal_Template $_template template object |
* @param Smarty $smarty smarty object |
* @param string $template_resource resource identifier |
* |
* @return Smarty_Template_Config Source Object |
* @throws SmartyException |
*/ |
public static function load( |
Smarty_Internal_Template $_template = null, |
Smarty $smarty = null, |
$template_resource = null |
) { |
static $_incompatible_resources = array('extends' => true, 'php' => true); |
if ($_template) { |
$smarty = $_template->smarty; |
$template_resource = $_template->template_resource; |
} |
if (empty($template_resource)) { |
throw new SmartyException('Source: Missing name'); |
} |
// parse resource_name, load resource handler |
list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type); |
// make sure configs are not loaded via anything smarty can't handle |
if (isset($_incompatible_resources[ $type ])) { |
throw new SmartyException("Unable to use resource '{$type}' for config"); |
} |
$source = new Smarty_Template_Config($smarty, $template_resource, $type, $name); |
$source->handler->populate($source, $_template); |
if (!$source->exists && isset($smarty->default_config_handler_func)) { |
Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source); |
$source->handler->populate($source, $_template); |
} |
return $source; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_template_resource_base.php |
---|
0,0 → 1,152 |
<?php |
/** |
* Smarty Template Resource Base Object |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
abstract class Smarty_Template_Resource_Base |
{ |
/** |
* Compiled Filepath |
* |
* @var string |
*/ |
public $filepath = null; |
/** |
* Compiled Timestamp |
* |
* @var integer|bool |
*/ |
public $timestamp = false; |
/** |
* Compiled Existence |
* |
* @var boolean |
*/ |
public $exists = false; |
/** |
* Template Compile Id (Smarty_Internal_Template::$compile_id) |
* |
* @var string |
*/ |
public $compile_id = null; |
/** |
* Compiled Content Loaded |
* |
* @var boolean |
*/ |
public $processed = false; |
/** |
* unique function name for compiled template code |
* |
* @var string |
*/ |
public $unifunc = ''; |
/** |
* flag if template does contain nocache code sections |
* |
* @var bool |
*/ |
public $has_nocache_code = false; |
/** |
* resource file dependency |
* |
* @var array |
*/ |
public $file_dependency = array(); |
/** |
* Content buffer |
* |
* @var string |
*/ |
public $content = null; |
/** |
* Included sub templates |
* - index name |
* - value use count |
* |
* @var int[] |
*/ |
public $includes = array(); |
/** |
* Flag if this is a cache resource |
* |
* @var bool |
*/ |
public $isCache = false; |
/** |
* Process resource |
* |
* @param Smarty_Internal_Template $_template template object |
*/ |
abstract public function process(Smarty_Internal_Template $_template); |
/** |
* get rendered template content by calling compiled or cached template code |
* |
* @param \Smarty_Internal_Template $_template |
* @param string $unifunc function with template code |
* |
* @throws \Exception |
*/ |
public function getRenderedTemplateCode(Smarty_Internal_Template $_template, $unifunc = null) |
{ |
$smarty = &$_template->smarty; |
$_template->isRenderingCache = $this->isCache; |
$level = ob_get_level(); |
try { |
if (!isset($unifunc)) { |
$unifunc = $this->unifunc; |
} |
if (empty($unifunc) || !function_exists($unifunc)) { |
throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'"); |
} |
if ($_template->startRenderCallbacks) { |
foreach ($_template->startRenderCallbacks as $callback) { |
call_user_func($callback, $_template); |
} |
} |
$unifunc($_template); |
foreach ($_template->endRenderCallbacks as $callback) { |
call_user_func($callback, $_template); |
} |
$_template->isRenderingCache = false; |
} catch (Exception $e) { |
$_template->isRenderingCache = false; |
while (ob_get_level() > $level) { |
ob_end_clean(); |
} |
if (isset($smarty->security_policy)) { |
$smarty->security_policy->endTemplate(); |
} |
throw $e; |
} |
} |
/** |
* Get compiled time stamp |
* |
* @return int |
*/ |
public function getTimeStamp() |
{ |
if ($this->exists && !$this->timestamp) { |
$this->timestamp = filemtime($this->filepath); |
} |
return $this->timestamp; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_template_source.php |
---|
0,0 → 1,213 |
<?php |
/** |
* Smarty Resource Data Object |
* Meta Data Container for Template Files |
* |
* @package Smarty |
* @subpackage TemplateResources |
* @author Rodney Rehm |
*/ |
class Smarty_Template_Source |
{ |
/** |
* Unique Template ID |
* |
* @var string |
*/ |
public $uid = null; |
/** |
* Template Resource (Smarty_Internal_Template::$template_resource) |
* |
* @var string |
*/ |
public $resource = null; |
/** |
* Resource Type |
* |
* @var string |
*/ |
public $type = null; |
/** |
* Resource Name |
* |
* @var string |
*/ |
public $name = null; |
/** |
* Source Filepath |
* |
* @var string |
*/ |
public $filepath = null; |
/** |
* Source Timestamp |
* |
* @var integer |
*/ |
public $timestamp = null; |
/** |
* Source Existence |
* |
* @var boolean |
*/ |
public $exists = false; |
/** |
* Source File Base name |
* |
* @var string |
*/ |
public $basename = null; |
/** |
* The Components an extended template is made of |
* |
* @var \Smarty_Template_Source[] |
*/ |
public $components = null; |
/** |
* Resource Handler |
* |
* @var \Smarty_Resource |
*/ |
public $handler = null; |
/** |
* Smarty instance |
* |
* @var Smarty |
*/ |
public $smarty = null; |
/** |
* Resource is source |
* |
* @var bool |
*/ |
public $isConfig = false; |
/** |
* Template source content eventually set by default handler |
* |
* @var string |
*/ |
public $content = null; |
/** |
* Name of the Class to compile this resource's contents with |
* |
* @var string |
*/ |
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler'; |
/** |
* Name of the Class to tokenize this resource's contents with |
* |
* @var string |
*/ |
public $template_lexer_class = 'Smarty_Internal_Templatelexer'; |
/** |
* Name of the Class to parse this resource's contents with |
* |
* @var string |
*/ |
public $template_parser_class = 'Smarty_Internal_Templateparser'; |
/** |
* create Source Object container |
* |
* @param Smarty $smarty Smarty instance this source object belongs to |
* @param string $resource full template_resource |
* @param string $type type of resource |
* @param string $name resource name |
* |
* @throws \SmartyException |
* @internal param \Smarty_Resource $handler Resource Handler this source object communicates with |
*/ |
public function __construct(Smarty $smarty, $resource, $type, $name) |
{ |
$this->handler = |
isset($smarty->_cache[ 'resource_handlers' ][ $type ]) ? $smarty->_cache[ 'resource_handlers' ][ $type ] : |
Smarty_Resource::load($smarty, $type); |
$this->smarty = $smarty; |
$this->resource = $resource; |
$this->type = $type; |
$this->name = $name; |
} |
/** |
* initialize Source Object for given resource |
* Either [$_template] or [$smarty, $template_resource] must be specified |
* |
* @param Smarty_Internal_Template $_template template object |
* @param Smarty $smarty smarty object |
* @param string $template_resource resource identifier |
* |
* @return Smarty_Template_Source Source Object |
* @throws SmartyException |
*/ |
public static function load( |
Smarty_Internal_Template $_template = null, |
Smarty $smarty = null, |
$template_resource = null |
) { |
if ($_template) { |
$smarty = $_template->smarty; |
$template_resource = $_template->template_resource; |
} |
if (empty($template_resource)) { |
throw new SmartyException('Source: Missing name'); |
} |
// parse resource_name, load resource handler, identify unique resource name |
if (preg_match('/^([A-Za-z0-9_\-]{2,})[:]([\s\S]*)$/', $template_resource, $match)) { |
$type = $match[ 1 ]; |
$name = $match[ 2 ]; |
} else { |
// no resource given, use default |
// or single character before the colon is not a resource type, but part of the filepath |
$type = $smarty->default_resource_type; |
$name = $template_resource; |
} |
// create new source object |
$source = new Smarty_Template_Source($smarty, $template_resource, $type, $name); |
$source->handler->populate($source, $_template); |
if (!$source->exists && isset($_template->smarty->default_template_handler_func)) { |
Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source); |
$source->handler->populate($source, $_template); |
} |
return $source; |
} |
/** |
* Get source time stamp |
* |
* @return int |
*/ |
public function getTimeStamp() |
{ |
if (!isset($this->timestamp)) { |
$this->handler->populateTimestamp($this); |
} |
return $this->timestamp; |
} |
/** |
* Get source content |
* |
* @return string |
* @throws \SmartyException |
*/ |
public function getContent() |
{ |
return isset($this->content) ? $this->content : $this->handler->getContent($this); |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_undefined_variable.php |
---|
0,0 → 1,33 |
<?php |
/** |
* class for undefined variable object |
* This class defines an object for undefined variable handling |
* |
* @package Smarty |
* @subpackage Template |
*/ |
class Smarty_Undefined_Variable extends Smarty_Variable |
{ |
/** |
* Returns null for not existing properties |
* |
* @param string $name |
* |
* @return null |
*/ |
public function __get($name) |
{ |
return null; |
} |
/** |
* Always returns an empty string. |
* |
* @return string |
*/ |
public function __toString() |
{ |
return ''; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smarty_variable.php |
---|
0,0 → 1,47 |
<?php |
/** |
* class for the Smarty variable object |
* This class defines the Smarty variable object |
* |
* @package Smarty |
* @subpackage Template |
*/ |
class Smarty_Variable |
{ |
/** |
* template variable |
* |
* @var mixed |
*/ |
public $value = null; |
/** |
* if true any output of this variable will be not cached |
* |
* @var boolean |
*/ |
public $nocache = false; |
/** |
* create Smarty variable object |
* |
* @param mixed $value the value to assign |
* @param boolean $nocache if true any output of this variable will be not cached |
*/ |
public function __construct($value = null, $nocache = false) |
{ |
$this->value = $value; |
$this->nocache = $nocache; |
} |
/** |
* <<magic>> String conversion |
* |
* @return string |
*/ |
public function __toString() |
{ |
return (string)$this->value; |
} |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smartycompilerexception.php |
---|
0,0 → 1,45 |
<?php |
/** |
* Smarty compiler exception class |
* |
* @package Smarty |
*/ |
class SmartyCompilerException extends SmartyException |
{ |
/** |
* @return string |
*/ |
public function __toString() |
{ |
return ' --> Smarty Compiler: ' . $this->message . ' <-- '; |
} |
/** |
* The line number of the template error |
* |
* @type int|null |
*/ |
public $line = null; |
/** |
* The template source snippet relating to the error |
* |
* @type string|null |
*/ |
public $source = null; |
/** |
* The raw text of the error message |
* |
* @type string|null |
*/ |
public $desc = null; |
/** |
* The resource identifier or template name |
* |
* @type string|null |
*/ |
public $template = null; |
} |
/web/acc/manager/vnstat/smarty/sysplugins/smartyexception.php |
---|
0,0 → 1,19 |
<?php |
/** |
* Smarty exception class |
* |
* @package Smarty |
*/ |
class SmartyException extends Exception |
{ |
public static $escape = false; |
/** |
* @return string |
*/ |
public function __toString() |
{ |
return ' --> Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- '; |
} |
} |
/web/acc/manager/vnstat/templates/module_footer.tpl |
---|
0,0 → 1,12 |
<footer class="footer"> |
<div class="container"> |
<span class="text-muted">Generated by 'vnstat-dashboard' |
</span> |
</div> |
</footer> |
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> |
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> |
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> |
{include file="module_graph_js.tpl"} |
</body> |
</html> |
/web/acc/manager/vnstat/templates/module_footer.tpl.orig |
---|
0,0 → 1,16 |
<footer class="footer"> |
<div class="container"> |
<span class="text-muted">Copyright (C) {$year} Alexander Marston - |
<a href="https://github.com/alexandermarston/vnstat-dashboard">vnstat-dashboard</a> |
</span> |
</div> |
</footer> |
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> |
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> |
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> |
{include file="module_graph_js.tpl"} |
</body> |
</html> |
/web/acc/manager/vnstat/templates/module_graph.tpl |
---|
0,0 → 1,27 |
<div class="container"> |
<ul class="nav nav-tabs" id="graphTab" role="tablist"> |
<li class="nav-item"> |
<a class="nav-link active" id="hourly-graph-tab" data-toggle="tab" href="#hourly-graph" role="tab" aria-controls="hourly-graph" aria-selected="true">Hourly Graph</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="daily-graph-tab" data-toggle="tab" href="#daily-graph" role="tab" aria-controls="daily-graph" aria-selected="false">Daily Graph</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="monthly-graph-tab" data-toggle="tab" href="#monthly-graph" role="tab" aria-controls="monthly-graph" aria-selected="false">Monthly Graph</a> |
</li> |
</ul> |
<div class="tab-content"> |
<div class="tab-pane fade show active" id="hourly-graph" role="tabpanel" aria-labelledby="hourly-graph-tab"> |
<div id="hourlyNetworkTrafficGraph" style="height: 300px;"></div> |
</div> |
<div class="tab-pane fade" id="daily-graph" role="tabpanel" aria-labelledby="daily-graph-tab"> |
<div id="dailyNetworkTrafficGraph" style="height: 300px;"></div> |
</div> |
<div class="tab-pane fade" id="monthly-graph" role="tabpanel" aria-labelledby="monthly-graph-tab"> |
<div id="monthlyNetworkTrafficGraph" style="height: 300px;"></div> |
</div> |
</div> |
</div> |
/web/acc/manager/vnstat/templates/module_graph_js.tpl |
---|
0,0 → 1,154 |
<script type="text/javascript"> |
google.charts.load('current', { packages: [ 'bar' ] }); |
google.charts.load("current", { packages: [ 'corechart' ] }); |
google.charts.setOnLoadCallback(drawHourlyChart); |
google.charts.setOnLoadCallback(drawDailyChart); |
google.charts.setOnLoadCallback(drawMonthlyChart); |
function drawHourlyChart() |
{ |
var data = new google.visualization.DataTable(); |
data.addColumn('date', 'Hour'); |
data.addColumn('number', 'Traffic In'); |
data.addColumn('number', 'Traffic Out'); |
data.addColumn('number', 'Total Traffic'); |
data.addRows([ |
{foreach from=$hourlyGraphData key=key item=value} |
[new {$value.label}, {$value.rx}, {$value.tx}, {$value.total}], |
{/foreach} |
]); |
let options = { |
title: 'Hourly Network Traffic', |
orientation: 'horizontal', |
legend: { position: 'right' }, |
explorer: { |
axis: 'horizontal', |
maxZoomIn: 4.0, |
maxZoomOut: 3.0 |
}, |
vAxis: { |
title: 'Data', |
format: '##.## {$hourlyLargestPrefix}' |
}, |
hAxis: { |
title: 'Hour', |
format: 'HH:mm', |
direction: -1, |
ticks: [ |
{foreach from=$hourlyGraphData key=key item=value} |
new {$value.label}, |
{/foreach} |
] |
} |
}; |
var formatDate = new google.visualization.DateFormat({ pattern: 'dd/MM/yyyy HH:mm' }); |
formatDate.format(data, 0); |
var formatNumber = new google.visualization.NumberFormat({ pattern: '##.## {$hourlyLargestPrefix}' }); |
formatNumber.format(data, 1); |
formatNumber.format(data, 2); |
formatNumber.format(data, 3); |
let chart = new google.visualization.BarChart(document.getElementById('hourlyNetworkTrafficGraph')); |
chart.draw(data, google.charts.Bar.convertOptions(options)); |
} |
function drawDailyChart() |
{ |
var data = new google.visualization.DataTable(); |
data.addColumn('date', 'Day'); |
data.addColumn('number', 'Traffic In'); |
data.addColumn('number', 'Traffic Out'); |
data.addColumn('number', 'Total Traffic'); |
data.addRows([ |
{foreach from=$dailyGraphData key=key item=value} |
[new {$value.label}, {$value.rx}, {$value.tx}, {$value.total}], |
{/foreach} |
]); |
let options = { |
title: 'Daily Network Traffic', |
orientation: 'horizontal', |
legend: { position: 'right' }, |
explorer: { |
axis: 'horizontal', |
maxZoomIn: 4.0, |
maxZoomOut: 3.0 |
}, |
vAxis: { |
title: 'Data', |
format: '##.## {$dailyLargestPrefix}' |
}, |
hAxis: { |
title: 'Day', |
format: 'dd/MM/YYYY', |
direction: -1 |
} |
}; |
var formatDate = new google.visualization.DateFormat({ pattern: 'dd/MM/yyyy' }); |
formatDate.format(data, 0); |
var formatNumber = new google.visualization.NumberFormat({ pattern: '##.## {$dailyLargestPrefix}' }); |
formatNumber.format(data, 1); |
formatNumber.format(data, 2); |
formatNumber.format(data, 3); |
let chart = new google.visualization.BarChart(document.getElementById('dailyNetworkTrafficGraph')); |
chart.draw(data, google.charts.Bar.convertOptions(options)); |
} |
function drawMonthlyChart() |
{ |
var data = new google.visualization.DataTable(); |
data.addColumn('date', 'Month'); |
data.addColumn('number', 'Traffic In'); |
data.addColumn('number', 'Traffic Out'); |
data.addColumn('number', 'Total Traffic'); |
data.addRows([ |
{foreach from=$monthlyGraphData key=key item=value} |
[new {$value.label}, {$value.rx}, {$value.tx}, {$value.total}], |
{/foreach} |
]); |
let options = { |
title: 'Monthly Network Traffic', |
orientation: 'horizontal', |
legend: { position: 'right' }, |
explorer: { |
axis: 'horizontal', |
maxZoomIn: 4.0, |
maxZoomOut: 3.0 |
}, |
vAxis: { |
title: 'Data', |
format: '##.## {$monthlyLargestPrefix}' |
}, |
hAxis: { |
title: 'Month', |
format: 'MMMM YYYY', |
direction: -1 |
} |
}; |
var formatDate = new google.visualization.DateFormat({ pattern: 'MMMM YYYY' }); |
formatDate.format(data, 0); |
var formatNumber = new google.visualization.NumberFormat({ pattern: '##.## {$monthlyLargestPrefix}' }); |
formatNumber.format(data, 1); |
formatNumber.format(data, 2); |
formatNumber.format(data, 3); |
let chart = new google.visualization.BarChart(document.getElementById('monthlyNetworkTrafficGraph')); |
chart.draw(data, google.charts.Bar.convertOptions(options)); |
} |
</script> |
/web/acc/manager/vnstat/templates/module_header.tpl |
---|
0,0 → 1,12 |
<!DOCTYPE html> |
<html lang="en"> |
<head> |
<title>Network Traffic</title> |
<meta charset="UTF-8"> |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
<!-- Bootstrap CSS --> |
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> |
<!-- Custom CSS --> |
<link rel="stylesheet" href="./assets/css/style.css"> |
</head> |
<body> |
/web/acc/manager/vnstat/templates/module_header.tpl.orig |
---|
0,0 → 1,33 |
<!DOCTYPE html> |
<html lang="en"> |
<head> |
<title>Network Traffic</title> |
<meta charset="UTF-8"> |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
<!-- Bootstrap CSS --> |
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> |
<!-- Custom CSS --> |
<link rel="stylesheet" href="./assets/css/style.css"> |
</head> |
<body> |
<nav class="navbar sticky-top navbar-light bg-light"> |
<div class="container"> |
<a class="navbar-brand" href="#">Network Traffic ({$current_interface})</a> |
<div class="dropdown"> |
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
Interface Selection |
</button> |
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> |
{foreach from=$interface_list item=value} |
<a class="dropdown-item" href="?i={$value}">{$value}</a> |
{/foreach} |
</div> |
</div> |
</div> |
</nav> |
/web/acc/manager/vnstat/templates/module_table.tpl |
---|
0,0 → 1,110 |
<div class="container"> |
<ul class="nav nav-tabs" id="tableTab" role="tablist"> |
<li class="nav-item"> |
<a class="nav-link active" id="hourly-table-tab" data-toggle="tab" href="#hourly-table" role="tab" aria-controls="hourly-table" aria-selected="true">Hourly</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="daily-table-tab" data-toggle="tab" href="#daily-table" role="tab" aria-controls="daily-table" aria-selected="false">Daily</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="monthly-table-tab" data-toggle="tab" href="#monthly-table" role="tab" aria-controls="monthly-table" aria-selected="false">Monthly</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="top10-table-tab" data-toggle="tab" href="#top10-table" role="tab" aria-controls="top10-table" aria-selected="false">Top 10</a> |
</li> |
</ul> |
<div class="tab-content" id="tableTabContent"> |
<div class="tab-pane fade show active" id="hourly-table" role="tabpanel" aria-labelledby="hourly-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Hour</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
{foreach from=$hourlyTableData key=key item=value} |
<tr> |
<td>{$value.label}</td> |
<td>{$value.rx}</td> |
<td>{$value.tx}</td> |
<td>{$value.total}</td> |
</tr> |
{/foreach} |
</tbody> |
</table> |
</div> |
<div class="tab-pane fade" id="daily-table" role="tabpanel" aria-labelledby="daily-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Day</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
{foreach from=$dailyTableData key=key item=value} |
<tr> |
<td>{$value.label}</td> |
<td>{$value.rx}</td> |
<td>{$value.tx}</td> |
<td>{$value.total}</td> |
</tr> |
{/foreach} |
</tbody> |
</table> |
</div> |
<div class="tab-pane fade" id="monthly-table" role="tabpanel" aria-labelledby="monthly-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Month</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
{foreach from=$monthlyTableData key=key item=value} |
<tr> |
<td>{$value.label}</td> |
<td>{$value.rx}</td> |
<td>{$value.tx}</td> |
<td>{$value.total}</td> |
</tr> |
{/foreach} |
</tbody> |
</table> |
</div> |
<div class="tab-pane fade" id="top10-table" role="tabpanel" aria-labelledby="top10-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Day</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
{foreach from=$top10TableData key=key item=value} |
<tr> |
<td>{$value.label}</td> |
<td>{$value.rx}</td> |
<td>{$value.tx}</td> |
<td>{$value.total}</td> |
</tr> |
{/foreach} |
</tbody> |
</table> |
</div> |
</div> |
</div> |
/web/acc/manager/vnstat/templates/site_index.tpl |
---|
0,0 → 1,7 |
{include file="module_header.tpl"} |
{include file="module_graph.tpl"} |
{include file="module_table.tpl"} |
{include file="module_footer.tpl"} |
/web/acc/manager/vnstat/templates_c/0d0c6b8d28b17c4ffaf65435e1e6cc17f87d6e6d_0.file.module_graph_js.tpl.php |
---|
0,0 → 1,228 |
<?php |
/* Smarty version 3.1.34-dev-7, created on 2020-04-11 17:23:34 |
from '/var/www/html/acc/manager/vnstat/templates/module_graph_js.tpl' */ |
/* @var Smarty_Internal_Template $_smarty_tpl */ |
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array ( |
'version' => '3.1.34-dev-7', |
'unifunc' => 'content_5e91ef06853392_40488972', |
'has_nocache_code' => false, |
'file_dependency' => |
array ( |
'0d0c6b8d28b17c4ffaf65435e1e6cc17f87d6e6d' => |
array ( |
0 => '/var/www/html/acc/manager/vnstat/templates/module_graph_js.tpl', |
1 => 1586598464, |
2 => 'file', |
), |
), |
'includes' => |
array ( |
), |
),false)) { |
function content_5e91ef06853392_40488972 (Smarty_Internal_Template $_smarty_tpl) { |
?> <?php echo '<script'; ?> |
type="text/javascript"> |
google.charts.load('current', { packages: [ 'bar' ] }); |
google.charts.load("current", { packages: [ 'corechart' ] }); |
google.charts.setOnLoadCallback(drawHourlyChart); |
google.charts.setOnLoadCallback(drawDailyChart); |
google.charts.setOnLoadCallback(drawMonthlyChart); |
function drawHourlyChart() |
{ |
var data = new google.visualization.DataTable(); |
data.addColumn('date', 'Hour'); |
data.addColumn('number', 'Traffic In'); |
data.addColumn('number', 'Traffic Out'); |
data.addColumn('number', 'Total Traffic'); |
data.addRows([ |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['hourlyGraphData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
[new <?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
], |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
]); |
let options = { |
title: 'Hourly Network Traffic', |
orientation: 'horizontal', |
legend: { position: 'right' }, |
explorer: { |
axis: 'horizontal', |
maxZoomIn: 4.0, |
maxZoomOut: 3.0 |
}, |
vAxis: { |
title: 'Data', |
format: '##.## <?php echo $_smarty_tpl->tpl_vars['hourlyLargestPrefix']->value;?> |
' |
}, |
hAxis: { |
title: 'Hour', |
format: 'HH:mm', |
direction: -1, |
ticks: [ |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['hourlyGraphData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
new <?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
, |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
] |
} |
}; |
var formatDate = new google.visualization.DateFormat({ pattern: 'dd/MM/yyyy HH:mm' }); |
formatDate.format(data, 0); |
var formatNumber = new google.visualization.NumberFormat({ pattern: '##.## <?php echo $_smarty_tpl->tpl_vars['hourlyLargestPrefix']->value;?> |
' }); |
formatNumber.format(data, 1); |
formatNumber.format(data, 2); |
formatNumber.format(data, 3); |
let chart = new google.visualization.BarChart(document.getElementById('hourlyNetworkTrafficGraph')); |
chart.draw(data, google.charts.Bar.convertOptions(options)); |
} |
function drawDailyChart() |
{ |
var data = new google.visualization.DataTable(); |
data.addColumn('date', 'Day'); |
data.addColumn('number', 'Traffic In'); |
data.addColumn('number', 'Traffic Out'); |
data.addColumn('number', 'Total Traffic'); |
data.addRows([ |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['dailyGraphData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
[new <?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
], |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
]); |
let options = { |
title: 'Daily Network Traffic', |
orientation: 'horizontal', |
legend: { position: 'right' }, |
explorer: { |
axis: 'horizontal', |
maxZoomIn: 4.0, |
maxZoomOut: 3.0 |
}, |
vAxis: { |
title: 'Data', |
format: '##.## <?php echo $_smarty_tpl->tpl_vars['dailyLargestPrefix']->value;?> |
' |
}, |
hAxis: { |
title: 'Day', |
format: 'dd/MM/YYYY', |
direction: -1 |
} |
}; |
var formatDate = new google.visualization.DateFormat({ pattern: 'dd/MM/yyyy' }); |
formatDate.format(data, 0); |
var formatNumber = new google.visualization.NumberFormat({ pattern: '##.## <?php echo $_smarty_tpl->tpl_vars['dailyLargestPrefix']->value;?> |
' }); |
formatNumber.format(data, 1); |
formatNumber.format(data, 2); |
formatNumber.format(data, 3); |
let chart = new google.visualization.BarChart(document.getElementById('dailyNetworkTrafficGraph')); |
chart.draw(data, google.charts.Bar.convertOptions(options)); |
} |
function drawMonthlyChart() |
{ |
var data = new google.visualization.DataTable(); |
data.addColumn('date', 'Month'); |
data.addColumn('number', 'Traffic In'); |
data.addColumn('number', 'Traffic Out'); |
data.addColumn('number', 'Total Traffic'); |
data.addRows([ |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['monthlyGraphData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
[new <?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
, <?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
], |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
]); |
let options = { |
title: 'Monthly Network Traffic', |
orientation: 'horizontal', |
legend: { position: 'right' }, |
explorer: { |
axis: 'horizontal', |
maxZoomIn: 4.0, |
maxZoomOut: 3.0 |
}, |
vAxis: { |
title: 'Data', |
format: '##.## <?php echo $_smarty_tpl->tpl_vars['monthlyLargestPrefix']->value;?> |
' |
}, |
hAxis: { |
title: 'Month', |
format: 'MMMM YYYY', |
direction: -1 |
} |
}; |
var formatDate = new google.visualization.DateFormat({ pattern: 'MMMM YYYY' }); |
formatDate.format(data, 0); |
var formatNumber = new google.visualization.NumberFormat({ pattern: '##.## <?php echo $_smarty_tpl->tpl_vars['monthlyLargestPrefix']->value;?> |
' }); |
formatNumber.format(data, 1); |
formatNumber.format(data, 2); |
formatNumber.format(data, 3); |
let chart = new google.visualization.BarChart(document.getElementById('monthlyNetworkTrafficGraph')); |
chart.draw(data, google.charts.Bar.convertOptions(options)); |
} |
<?php echo '</script'; ?> |
> |
<?php } |
} |
/web/acc/manager/vnstat/templates_c/1e81c22f2b2d1f91cd03aa4725f8c35f066935d4_0.file.module_header.tpl.php |
---|
0,0 → 1,37 |
<?php |
/* Smarty version 3.1.34-dev-7, created on 2020-04-11 18:15:21 |
from '/var/www/html/acc/manager/vnstat/templates/module_header.tpl' */ |
/* @var Smarty_Internal_Template $_smarty_tpl */ |
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array ( |
'version' => '3.1.34-dev-7', |
'unifunc' => 'content_5e91fb29228383_96978558', |
'has_nocache_code' => false, |
'file_dependency' => |
array ( |
'1e81c22f2b2d1f91cd03aa4725f8c35f066935d4' => |
array ( |
0 => '/var/www/html/acc/manager/vnstat/templates/module_header.tpl', |
1 => 1586625139, |
2 => 'file', |
), |
), |
'includes' => |
array ( |
), |
),false)) { |
function content_5e91fb29228383_96978558 (Smarty_Internal_Template $_smarty_tpl) { |
?><!DOCTYPE html> |
<html lang="en"> |
<head> |
<title>Network Traffic</title> |
<meta charset="UTF-8"> |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
<!-- Bootstrap CSS --> |
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> |
<!-- Custom CSS --> |
<link rel="stylesheet" href="./assets/css/style.css"> |
</head> |
<body> |
<?php } |
} |
/web/acc/manager/vnstat/templates_c/2b2bc100a3154406caafbf0c1dff8bf361bd6b94_0.file.site_index.tpl.php |
---|
0,0 → 1,39 |
<?php |
/* Smarty version 3.1.34-dev-7, created on 2020-04-11 17:23:34 |
from '/var/www/html/acc/manager/vnstat/templates/site_index.tpl' */ |
/* @var Smarty_Internal_Template $_smarty_tpl */ |
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array ( |
'version' => '3.1.34-dev-7', |
'unifunc' => 'content_5e91ef068214d4_12711736', |
'has_nocache_code' => false, |
'file_dependency' => |
array ( |
'2b2bc100a3154406caafbf0c1dff8bf361bd6b94' => |
array ( |
0 => '/var/www/html/acc/manager/vnstat/templates/site_index.tpl', |
1 => 1586598464, |
2 => 'file', |
), |
), |
'includes' => |
array ( |
'file:module_header.tpl' => 1, |
'file:module_graph.tpl' => 1, |
'file:module_table.tpl' => 1, |
'file:module_footer.tpl' => 1, |
), |
),false)) { |
function content_5e91ef068214d4_12711736 (Smarty_Internal_Template $_smarty_tpl) { |
$_smarty_tpl->_subTemplateRender("file:module_header.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false); |
?> |
<?php $_smarty_tpl->_subTemplateRender("file:module_graph.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false); |
?> |
<?php $_smarty_tpl->_subTemplateRender("file:module_table.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false); |
?> |
<?php $_smarty_tpl->_subTemplateRender("file:module_footer.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false); |
} |
} |
/web/acc/manager/vnstat/templates_c/2f5e32e2f04fabdfea23a29aa98d7ff7e7a2fbf4_0.file.module_table.tpl.php |
---|
0,0 → 1,179 |
<?php |
/* Smarty version 3.1.34-dev-7, created on 2020-04-11 17:23:34 |
from '/var/www/html/acc/manager/vnstat/templates/module_table.tpl' */ |
/* @var Smarty_Internal_Template $_smarty_tpl */ |
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array ( |
'version' => '3.1.34-dev-7', |
'unifunc' => 'content_5e91ef0683e7a5_23211614', |
'has_nocache_code' => false, |
'file_dependency' => |
array ( |
'2f5e32e2f04fabdfea23a29aa98d7ff7e7a2fbf4' => |
array ( |
0 => '/var/www/html/acc/manager/vnstat/templates/module_table.tpl', |
1 => 1586598464, |
2 => 'file', |
), |
), |
'includes' => |
array ( |
), |
),false)) { |
function content_5e91ef0683e7a5_23211614 (Smarty_Internal_Template $_smarty_tpl) { |
?> <div class="container"> |
<ul class="nav nav-tabs" id="tableTab" role="tablist"> |
<li class="nav-item"> |
<a class="nav-link active" id="hourly-table-tab" data-toggle="tab" href="#hourly-table" role="tab" aria-controls="hourly-table" aria-selected="true">Hourly</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="daily-table-tab" data-toggle="tab" href="#daily-table" role="tab" aria-controls="daily-table" aria-selected="false">Daily</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="monthly-table-tab" data-toggle="tab" href="#monthly-table" role="tab" aria-controls="monthly-table" aria-selected="false">Monthly</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="top10-table-tab" data-toggle="tab" href="#top10-table" role="tab" aria-controls="top10-table" aria-selected="false">Top 10</a> |
</li> |
</ul> |
<div class="tab-content" id="tableTabContent"> |
<div class="tab-pane fade show active" id="hourly-table" role="tabpanel" aria-labelledby="hourly-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Hour</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['hourlyTableData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
<tr> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
</td> |
</tr> |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
</tbody> |
</table> |
</div> |
<div class="tab-pane fade" id="daily-table" role="tabpanel" aria-labelledby="daily-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Day</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['dailyTableData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
<tr> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
</td> |
</tr> |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
</tbody> |
</table> |
</div> |
<div class="tab-pane fade" id="monthly-table" role="tabpanel" aria-labelledby="monthly-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Month</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['monthlyTableData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
<tr> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
</td> |
</tr> |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
</tbody> |
</table> |
</div> |
<div class="tab-pane fade" id="top10-table" role="tabpanel" aria-labelledby="top10-table-tab"> |
<table class="table table-bordered"> |
<thead> |
<tr> |
<th>Day</th> |
<th>Received</th> |
<th>Sent</th> |
<th>Total</th> |
</tr> |
</thead> |
<tbody> |
<?php |
$_from = $_smarty_tpl->smarty->ext->_foreach->init($_smarty_tpl, $_smarty_tpl->tpl_vars['top10TableData']->value, 'value', false, 'key'); |
$_smarty_tpl->tpl_vars['value']->do_else = true; |
if ($_from !== null) foreach ($_from as $_smarty_tpl->tpl_vars['key']->value => $_smarty_tpl->tpl_vars['value']->value) { |
$_smarty_tpl->tpl_vars['value']->do_else = false; |
?> |
<tr> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['label'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['rx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['tx'];?> |
</td> |
<td><?php echo $_smarty_tpl->tpl_vars['value']->value['total'];?> |
</td> |
</tr> |
<?php |
} |
$_smarty_tpl->smarty->ext->_foreach->restore($_smarty_tpl, 1);?> |
</tbody> |
</table> |
</div> |
</div> |
</div> |
<?php } |
} |
/web/acc/manager/vnstat/templates_c/553ce6260759b1d4166e3cb1ffe0a8ac55227d7c_0.file.module_graph.tpl.php |
---|
0,0 → 1,52 |
<?php |
/* Smarty version 3.1.34-dev-7, created on 2020-04-11 17:23:34 |
from '/var/www/html/acc/manager/vnstat/templates/module_graph.tpl' */ |
/* @var Smarty_Internal_Template $_smarty_tpl */ |
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array ( |
'version' => '3.1.34-dev-7', |
'unifunc' => 'content_5e91ef0682f914_56965249', |
'has_nocache_code' => false, |
'file_dependency' => |
array ( |
'553ce6260759b1d4166e3cb1ffe0a8ac55227d7c' => |
array ( |
0 => '/var/www/html/acc/manager/vnstat/templates/module_graph.tpl', |
1 => 1586598464, |
2 => 'file', |
), |
), |
'includes' => |
array ( |
), |
),false)) { |
function content_5e91ef0682f914_56965249 (Smarty_Internal_Template $_smarty_tpl) { |
?> <div class="container"> |
<ul class="nav nav-tabs" id="graphTab" role="tablist"> |
<li class="nav-item"> |
<a class="nav-link active" id="hourly-graph-tab" data-toggle="tab" href="#hourly-graph" role="tab" aria-controls="hourly-graph" aria-selected="true">Hourly Graph</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="daily-graph-tab" data-toggle="tab" href="#daily-graph" role="tab" aria-controls="daily-graph" aria-selected="false">Daily Graph</a> |
</li> |
<li class="nav-item"> |
<a class="nav-link" id="monthly-graph-tab" data-toggle="tab" href="#monthly-graph" role="tab" aria-controls="monthly-graph" aria-selected="false">Monthly Graph</a> |
</li> |
</ul> |
<div class="tab-content"> |
<div class="tab-pane fade show active" id="hourly-graph" role="tabpanel" aria-labelledby="hourly-graph-tab"> |
<div id="hourlyNetworkTrafficGraph" style="height: 300px;"></div> |
</div> |
<div class="tab-pane fade" id="daily-graph" role="tabpanel" aria-labelledby="daily-graph-tab"> |
<div id="dailyNetworkTrafficGraph" style="height: 300px;"></div> |
</div> |
<div class="tab-pane fade" id="monthly-graph" role="tabpanel" aria-labelledby="monthly-graph-tab"> |
<div id="monthlyNetworkTrafficGraph" style="height: 300px;"></div> |
</div> |
</div> |
</div> |
<?php } |
} |
/web/acc/manager/vnstat/templates_c/5a392efaa6cf5a3bce2bfeb15f87c356ee77a3c2_0.file.module_footer.tpl.php |
---|
0,0 → 1,45 |
<?php |
/* Smarty version 3.1.34-dev-7, created on 2020-04-11 18:15:41 |
from '/var/www/html/acc/manager/vnstat/templates/module_footer.tpl' */ |
/* @var Smarty_Internal_Template $_smarty_tpl */ |
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array ( |
'version' => '3.1.34-dev-7', |
'unifunc' => 'content_5e91fb3d487197_56844188', |
'has_nocache_code' => false, |
'file_dependency' => |
array ( |
'5a392efaa6cf5a3bce2bfeb15f87c356ee77a3c2' => |
array ( |
0 => '/var/www/html/acc/manager/vnstat/templates/module_footer.tpl', |
1 => 1586625338, |
2 => 'file', |
), |
), |
'includes' => |
array ( |
'file:module_graph_js.tpl' => 1, |
), |
),false)) { |
function content_5e91fb3d487197_56844188 (Smarty_Internal_Template $_smarty_tpl) { |
?> <footer class="footer"> |
<div class="container"> |
<span class="text-muted">Generated by 'vnstat-dashboard' |
</span> |
</div> |
</footer> |
<?php echo '<script'; ?> |
type="text/javascript" src="https://www.gstatic.com/charts/loader.js"><?php echo '</script'; ?> |
> |
<?php echo '<script'; ?> |
src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"><?php echo '</script'; ?> |
> |
<?php echo '<script'; ?> |
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"><?php echo '</script'; ?> |
> |
<?php $_smarty_tpl->_subTemplateRender("file:module_graph_js.tpl", $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, $_smarty_tpl->cache_lifetime, array(), 0, false); |
?> |
</body> |
</html> |
<?php } |
} |
/web/acc/manager/vnstat.php |
---|
0,0 → 1,37 |
<?php |
$Language = 'en'; |
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { |
$Langue = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); |
$Language = strtolower(substr(chop($Langue[0]), 0, 2)); |
} |
if ($Language === 'fr') { |
$l_title = "Trafic global"; } |
else { |
$l_title = "Global trafic"; } |
?> |
<!DOCTYPE html> |
<html> |
<header> |
<link rel="stylesheet" href="htdocs/style.css"> |
</header> |
<body> |
<table border=0 cellspacing=0 cellpadding=0 class="tableTopACC"> |
<tbody class="tbodyAcc" > |
<tr> |
<th class="thBasicACC"> |
<?php echo $l_title; ?> |
</th> |
</tr> |
</tbody> |
<tr bgcolor="#FFCC66" class="trSizeACC"> |
<td class="tdSizeACC"> |
<img src="/images/pix.gif" width="1" height="2"> |
</td> |
</tr> |
</table> |
<div > |
<iframe class="ACCiframe" src="vnstat/index.php"> |
</iframe> |
</div> |
</body> |
</html> |
/web/acc/menu.php |
---|
139,7 → 139,7 |
<meta charset="utf-8"> |
<title>Menu - ALCASAR</title> |
<link rel="stylesheet" type="text/css" href="/css/style.css"> |
<link rel="stylesheet" type="text/css" href="/css/acc.css"> |
<link rel="stylesheet" type="text/css" href="/css/menu.css"> |
<script src="/js/jquery.min.js"></script> |
<script> |
$(document).ready(function () { |
206,7 → 206,7 |
<li><div class="caret"></div><a href="manager/htdocs/user_stats.php" target="REXY2"><?= $l_stat_user_day ?></a></li> |
<li><div class="caret"></div><a href="manager/htdocs/accounting.php" target="REXY2"><?= $l_stat_con ?></a></li> |
<li><div class="caret"></div><a href="manager/htdocs/stats.php" target="REXY2"><?= $l_stat_daily ?></a></li> |
<li><div class="caret"></div><a href="manager/stats/index.php" target="REXY2"><?= $l_stat_global_network ?></a></li> |
<li><div class="caret"></div><a href="manager/vnstat.php" target="REXY2"><?= $l_stat_global_network ?></a></li> |
<li><div class="caret"></div><a href="manager/nfsen.php" target="REXY2"><?= $l_stat_detail_network ?></a></li> |
<li><div class="caret"></div><a href="manager/htdocs/security.php" target="REXY2"><?= $l_security ?></a></li> |
</ul> |
/web/autoregistrationinfo.php |
---|
112,13 → 112,13 |
<head> |
<meta charset="utf-8"> |
<title>Auto enregistrement</title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<!-- DataTables CSS --> |
<link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.css"> |
<link rel="stylesheet" type="text/css" href="/css/jquery.dataTables.css"> |
<!-- jQuery --> |
<script charset="utf8" src="../js/jquery.min.js"></script> |
<script charset="utf8" src="/js/jquery.min.js"></script> |
<!-- DataTables --> |
<script charset="utf8" src="../js/jquery.dataTables.js"></script> |
<script charset="utf8" src="/js/jquery.dataTables.js"></script> |
<script> |
function timedRefresh(timeoutPeriod) { |
var interval = setInterval(refreshPage, timeoutPeriod); |
/web/css/index_style.css |
---|
File deleted |
/web/css/bootstrap.min.css.map |
---|
File deleted |
\ No newline at end of file |
/web/css/bootstrap-theme.min.css.map |
---|
File deleted |
\ No newline at end of file |
/web/css/intercepts.css |
---|
File deleted |
/web/css/acc.css |
---|
File deleted |
/web/css/bootstrap.min.css |
---|
File deleted |
\ No newline at end of file |
/web/css/style_intercept.css |
---|
File deleted |
/web/css/bootstrap-3.3.7.min.css |
---|
0,0 → 1,6 |
/*! |
* Bootstrap v3.3.7 (http://getbootstrap.com) |
* Copyright 2011-2016 Twitter, Inc. |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} |
/*# sourceMappingURL=bootstrap.min.css.map */ |
/web/css/bootstrap-3.3.7.theme.min.css |
---|
0,0 → 1,6 |
/*! |
* Bootstrap v3.3.7 (http://getbootstrap.com) |
* Copyright 2011-2016 Twitter, Inc. |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
*/.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} |
/*# sourceMappingURL=bootstrap-theme.min.css.map */ |
/web/css/bootstrap-min.css |
---|
0,0 → 1,0 |
link bootstrap-3.3.7.min.css |
Property changes: |
Added: svn:special |
+* |
\ No newline at end of property |
/web/css/error.css |
---|
0,0 → 1,697 |
/* |
CSS for ALCASAR interception page |
Auteur : Stéphane ERARD |
Licence : GNU GPL |
*/ |
/* règles générales */ |
/* Couleurs de polices */ |
:link, :visited, :hover:link, :hover:visited, H2, #box_url, #box_refuse { |
color: #000000; |
} |
BODY, H, #boite-logon { |
color: #666666; |
} |
#acces_controle, .log_out { |
color: white; |
} |
/* Style de police */ |
BODY, :link, :visited, :hover:link, :hover:visited { |
font-family: "DejaVu Sans"; |
} |
INPUT, #box_url { |
font-family: arial; |
} |
#acces_controle, #box_url, #cadre_titre SPAN { |
font-weight: bold; |
} |
.box_menu :link , .box_menu :visited, .box_menu :hover:link, .box_menu :hover:visited { |
text-decoration: none; |
} |
/*Couleurs de fond */ |
BODY { |
background-color: #666666; |
} |
INPUT, #contenu_acces, #contenu_error, #logon, #auth_reussi { |
background-color: #ffffff; |
} |
/* Règles des balises HTML */ |
H1, H2, #aide-certif { |
text-align: center; |
padding: 0px; |
margin: 3px; |
} |
P, UL, LI{ |
text-align: justify; |
} |
BODY { |
background-image: url(/images/fond.png); |
background-repeat: repeat-x; |
text-align: center; |
font-size: 12px; |
margin: 0px; |
} |
H1 { |
font-size: 55px; |
} |
H2 { |
font-size: 30px; |
} |
H6, #aide-certif{ |
font-size: 100%; |
} |
UL { |
margin: 5px; |
padding-bottom: 5px; |
padding-left: 10px; |
padding-right: 115px; |
padding-top: 5px; |
} |
LI { |
list-style-type: square; |
padding-top: 2px; |
} |
TABLE { |
font-size: 90%; |
} |
IMG { |
height: 150px; |
} |
INPUT { |
border: #666666 1px solid; |
padding: 2px; |
font-family: arial; |
height: 22px; |
} |
/* taille et position des logos */ |
#logo-alcasar { |
position: absolute; |
bottom: 25px; |
right: 5px; |
height: 130px; |
} |
#logo-organ { |
position: relative; |
top: 0px; |
right: -10px; |
max-width: 150px; |
max-height: 150px; |
} |
/* placement et proportion de la boite de saisie et de l'aide */ |
/* pour desktop */ |
.mobile-only { |
display: none; |
} |
#logon { |
position: relative; |
width: 620px; |
top: 20px; |
/* ombrage css3*/ |
-moz-box-shadow: 0px 0px 12px #000; |
-webkit-box-shadow: 0px 0px 12px #000; |
box-shadow: 0px 0px 12px #000; |
} |
#boite-logon { |
background-image: linear-gradient(#efefef, #d5d5d5); |
padding: 10px; |
width: 420px; |
height: 189px; |
} |
#boite-logon TD { |
padding-top: 10px; |
padding-left: 30px; |
} |
#boite-info { |
border: 0px; |
margin-top: 25px; |
width: 580px; |
padding-top: 10px; |
} |
#username_input, |
#password_input { |
align: left; |
} |
/* hide placeholders for desktops */ |
::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: transparent; |
} |
:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: transparent; |
} |
::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: transparent; |
} |
:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: transparent; |
} |
input::placeholder { |
color: transparent; |
} |
textarea::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: transparent; |
} |
textarea:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: transparent; |
} |
textarea::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: transparent; |
} |
textarea:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: transparent; |
} |
textarea::placeholder { |
color: transparent; |
} |
/* pour mobile */ |
@media (max-width: 900px) |
{ |
.desktop-only { |
display: none; |
} |
#logon { |
position: relative; |
width: 100%; |
top: 10px; |
/* ombrage css3*/ |
-moz-box-shadow: 0px 0px 12px #000; |
-webkit-box-shadow: 0px 0px 12px #000; |
box-shadow: 0px 0px 12px #000; |
} |
#boite-logon { |
background-image: linear-gradient(#efefef, #d5d5d5); |
padding: 10px; |
width: 90%; |
height: 189px; |
} |
#boite-logon TD { |
padding-top: 10px; |
} |
input[type="text"] |
{ |
font-size:30px; |
color: grey; |
} |
input[type="password"] |
{ |
font-size:30px; |
color: grey; |
} |
#boite-logon INPUT { |
border: #666666 1px solid; |
padding: 2px; |
font-family: arial; |
height: 30px; |
} |
#authenticate-button { |
font-size: 30px; |
} |
#boite-info { |
border: 0px; |
margin-top: 25px; |
width: 580px; |
padding-top: 10px; |
} |
#username_input, |
#password_input { |
align: center; |
} |
/* Placeholders */ |
::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: lightgrey; |
} |
:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: lightgrey; |
} |
::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: lightgrey; |
} |
:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: lightgrey; |
} |
input::placeholder { |
color: lightgrey; |
} |
textarea::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: lightgrey; |
} |
textarea:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: lightgrey; |
} |
textarea::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: lightgrey; |
} |
textarea:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: lightgrey; |
} |
textarea::placeholder { |
color: lightgrey; |
} |
} |
/*boite de dialogue de deconnection*/ |
/* pour desktop */ |
.mobile-only { |
display: none; |
} |
#contenu_acces { |
position: relative; |
width: 640px; |
height: 400px; |
top: -20px; |
padding-top: 0px; |
margin-left: auto; |
margin-right: auto; |
z-index: 1; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 10px #000; |
-webkit-box-shadow: 1px 1px 10px #000; |
box-shadow: 1px 1px 10px #000; |
} |
#cadre_titre{ |
position: relative; |
width: 730px; |
height: 98px; |
margin-top: 40px; |
margin-left: auto; |
margin-right: auto; |
z-index: 2; |
/* ombrage css3 */ |
-moz-box-shadow: 1px 4px 10px #000; |
-webkit-box-shadow: 1px 4px 10px #000; |
box-shadow: 1px 4px 10px #000; |
} |
#boite_logo{ |
position: absolute; |
top: -30px; |
left: -50px; |
width: 150px; |
height: 150px; |
z-index: 2; |
} |
/* pour mobile */ |
@media (max-width: 900px) |
{ |
.desktop-only { |
display: none; |
} |
.mobile-only { |
display: inline; |
} |
#contenu_acces { |
position: relative; |
width: 90%; |
height: 400px; |
top: -20px; |
padding-top: 0px; |
margin-left: auto; |
margin-right: auto; |
z-index: 1; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 10px #000; |
-webkit-box-shadow: 1px 1px 10px #000; |
box-shadow: 1px 1px 10px #000; |
} |
#cadre_titre{ |
position: relative; |
width: 100%; |
height: 98px; |
margin-top: 40px; |
margin-left: auto; |
margin-right: auto; |
z-index: 2; |
/* ombrage css3 */ |
-moz-box-shadow: 1px 4px 10px #000; |
-webkit-box-shadow: 1px 4px 10px #000; |
box-shadow: 1px 4px 10px #000; |
} |
#boite_logo{ |
position: absolute; |
top: -30px; |
left: -10px; |
width: 150px; |
height: 150px; |
z-index: 2; |
} |
} |
#auth_reussi { |
width: 450px; |
margin-top: 12px; |
padding-top: 5px; |
padding-left: 10px; |
padding-right: 10px; |
padding-bottom: 0px; |
} |
.text_auth { |
font-size: 20px; |
} |
.lien_deco { |
text-align: center; |
font-size: 18px; |
margin-bottom: 15px; |
} |
.log_out { |
font-size: 24px; |
text-align: center; |
margin-top: 30px; |
} |
#boite-logon, #auth_reussi, #logon { |
border: 1px #efefef solid; |
/* ombrage css3*/ |
-moz-box-shadow: 0px 0px 6px #000; |
-webkit-box-shadow: 0px 0px 6px #000; |
box-shadow: 0px 0px 6px #000; |
} |
#liens_redir { |
position: relative; |
bottom: -100px; |
left: 90px; |
text-align: center; |
} |
#liens_redir P A { |
font-size: 12px; |
text-align: center; |
margin: 15px; |
} |
/* style de la page accès controlé*/ |
#cadre_titre .titre_controle { |
background-image: url(/images/fond-bandeau.png); |
background-repeat: repeat-x; |
} |
#cadre_titre .titre_refus { |
background-image: url(/images/fond-bandeau-rouge.png); |
background-repeat: repeat-x; |
} |
#acces_controle { |
text-align: center; |
font-size: 40px; |
padding-top: 25px; |
padding-bottom: 27px; |
margin: 0px; |
} |
#logo_acces { |
position: relative; |
top: 0px; |
left: 0px; |
} |
#contenu_error { |
position: relative; |
width: 640px; |
height: auto; |
top: -20px; |
padding-top: 40px; |
padding-bottom: 40px; |
padding-left: 40px; |
padding-right: 40px; |
margin-left: auto; |
margin-right: auto; |
z-index: 1; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 10px #000; |
-webkit-box-shadow: 1px 1px 10px #000; |
box-shadow: 1px 1px 10px #000; |
} |
#logo_acces IMG, #box_refuse IMG { |
width: 95px; |
height: 95px; |
} |
/* Boite des liens*/ |
#box_url { |
position: relative; |
top: 35px; |
text-align: right; |
font-size: 14px; |
margin-right: 20px; |
} |
#cadre_titre SPAN { |
position: absolute; |
top: 70px; |
width: 510px; |
left: 110px; |
font-size: 14px; |
color: red; |
text-align: center; |
border: 2px red solid; |
padding: 2px; |
background-color: white; |
} |
#contenu_acces SPAN { |
position: relative; |
bottom: -150px; |
font-family: "courier new"; |
} |
#contenu_error SPAN { |
position: relative; |
bottom: -150px; |
font-family: "courier new"; |
} |
#box_refuse { |
font-size: 16px; |
margin-left: 130px; |
margin-right: 20px; |
margin-top: 40px; |
width: 460px; |
} |
#box_refuse IMG { |
position: absolute; |
top: -10px; |
left: -110px; |
} |
#box_refuse { |
position: relative; |
top: 55px; |
} |
.box_menu IMG { |
position: absolute; |
width: 70px; |
height: 70px; |
top: -25px; |
} |
.box_menu, #logon , #contenu_acces, #contenu_error, #acces_controle, #cadre_titre, #box_info{ |
/* Arrondi CSS3 Firefox*/ |
-moz-border-radius: 10px; |
/* Arrondi CSS3 Autres Nav*/ |
border-radius: 10px; |
} |
.box_menu { |
position: absolute; |
height: 35px; |
width: 310px; |
background-image: url(/images/fond-bdd.png); |
background-repeat: repeat-x; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
} |
.div-cache { |
visibility: hidden; |
position: absolute; |
top: -1000px; |
} |
#box_conn { |
top: 120px; |
} |
#box_certif { |
top: 190px; |
} |
#box_mdp { |
top: 260px; |
} |
#box_acc { |
top: 330px; |
} |
#box_certif, #box_acc { |
left: 60px; |
text-align: right; |
} |
#box_conn, #box_mdp { |
left: 20px; |
text-align: left; |
} |
#box_conn IMG, #box_mdp IMG { |
left: 5px; |
} |
#box_certif IMG, #box_acc IMG { |
right: 5px; |
} |
#box_conn SPAN, #box_certif SPAN, #box_mdp SPAN, #box_acc SPAN { |
position: relative; |
font-size: 12px; |
font-weight: bold; |
top: 10px; |
} |
#box_conn SPAN, #box_mdp SPAN { |
margin-left: 80px; |
} |
#box_certif SPAN, #box_acc SPAN { |
margin-right: 80px; |
} |
/*Animation visuel des cadres liens (Gecko et ie9)*/ |
#box_conn:hover, #box_certif:hover, #box_mdp:hover, #box_acc:hover { |
/* cursor: pointer;*/ |
background-image: url(/images/fond-bdd_rouge.png); |
background-repeat: repeat-x; |
/* ombrage CSS3 */ |
-moz-box-shadow: 0px 0px 0px #fff; |
-webkit-box-shadow: 0px 0px 0px #fff; |
box-shadow: 0px 0px 0px #fff; |
} |
#box_conn:hover a, #box_certif:hover a, #box_mdp:hover a, #box_acc:hover a, .box_menu a:hover, .box_menu a:visited:hover, #box_info :link:hover, #box_info :visited:hover { |
color: red; |
} |
/* overwrite default rules for disabled menu boxes */ |
.box_menu.box-menu-disabled { |
opacity: .2; |
} |
.box_menu.box-menu-disabled:hover a { |
color: #000000 !important; |
cursor: not-allowed !important; |
} |
.box_menu.box-menu-disabled:hover { |
cursor: not-allowed !important; |
background-image: url(/images/fond-bdd.png) !important; |
background-repeat: repeat-x !important; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666 !important; |
-webkit-box-shadow: 1px 1px 6px #666 !important; |
box-shadow: 1px 1px 6px #666 !important; |
} |
/*Mise en page de la bulle d'info (coté droit)*/ |
#box_info H2 { |
font-size: 14px; |
margin: 10px auto; |
} |
#box_info P { |
font-size: 11px; |
margin: 10px; |
} |
#box_info IMG { |
position: absolute; |
bottom: -60px; |
right: 10px; |
height: 120px; |
} |
#box_info { |
position: absolute; |
top: 118px; |
right: 20px; |
width: 230px; |
height: 250px; |
background-color: #efefef; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
} |
#box_info :link, #box_info :visited { |
text-decoration: none; |
} |
#box_info UL{ |
text-align: left; |
padding : 0 0 0 15px; |
margin : 10px; |
} |
#box_info LI{ |
text-align: left; |
font-size: 10px; |
list-style-type : disc; |
padding : 0 0 0 0; |
} |
#authorized_domain{ |
height: 40px; |
width: 450px; |
text-align: left; |
display: block; |
/* border: 1px solid red;*/ |
margin-right: 50px; |
} |
#authorized_domain LI{ |
text-align: center; |
list-style-type : none; |
margin-right : 10px; |
display: block; |
float: left; |
} |
#corner { |
position: fixed; |
bottom: 0; |
right: 0; |
} |
#adm { |
display: block; |
width: 100px; |
height: 100px; |
} |
.corn IMG:hover { |
position: absolute; |
width: 100px; |
height: 100px; |
top: 0px; |
left: 0px; |
} |
.corn IMG { |
position: absolute; |
width: 50px; |
height: 50px; |
top: 75px; |
left: 75px; |
transition: .2s; |
} |
/web/css/index.css |
---|
0,0 → 1,324 |
html { |
background: url(/images/background.jpg) no-repeat center center fixed; |
-webkit-background-size: cover; |
-moz-background-size: cover; |
-o-background-size: cover; |
background-size: cover; |
} |
body { |
} |
.error-margin { |
margin-left: 0; |
margin-right: 0; |
} |
#gui { |
min-width: 452px; |
/* |
position: relative; |
top: 3vh; |
max-width: 950px;*/ |
} |
.explanation_net_pb { |
color: red; |
margin-bottom: 2px; |
font-size: calc(12px + 0.2vw); |
} |
#contenu_acces { |
border-bottom-left-radius: 10px; |
border-bottom-right-radius: 10px; |
/* get the main box under banner*/ |
padding-top: 5px; |
z-index: 5; |
top: -5px; |
/* ombrage css3 */ |
-moz-box-shadow: 1px 4px 10px #000; |
-webkit-box-shadow: 1px 4px 10px #000; |
box-shadow: 0px 10px 10px #000; |
} |
/* style de la page accès controlé*/ |
.banner { |
z-index:10; |
display: flex; |
align-items: center; |
margin-top: 5vh; |
position: relative; |
background-image: linear-gradient(black,#222222); |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
border-radius: 10px; |
} |
#cadre_titre .titre_controle { |
color: white; |
font-size: calc(20px + 2.2vw); |
} |
#cadre_titre .titre_refus { |
color: red; |
font-size: calc(20px + 2.2vw); |
} |
#acces_controle { |
text-align: center; |
font-size: calc(20px + 1.5vw); |
padding-top: 25px; |
padding-bottom: 32px; |
margin: 0px; |
} |
@media(max-width:420px) { |
#acces_controle { |
text-align: left !important; |
} |
} |
.domain_allowed_title { |
margin-bottom: 0px; |
} |
/* Style de police */ |
BODY, :link, :visited, :hover:link, :hover:visited { |
font-family: "DejaVu Sans"; |
} |
INPUT, #box_url { |
font-family: arial; |
} |
#acces_controle, #box_url, #cadre_titre SPAN { |
font-weight: bold; |
} |
.box_menu :link , .box_menu :visited, .box_menu :hover:link, .box_menu :hover:visited { |
text-decoration: none; |
color: black; |
font-size: calc(14px + 0.2vw); |
font-weight: bold; |
} |
.box_menu:hover { |
background-color: rgba(5,55,64,0.2); |
} |
.box_menu { |
display: flex; |
align-items: center; |
height: 60px; |
position: relative; |
background-color: #efefef; |
padding: 10px; |
border-radius: 10px; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
margin-top: 30px; |
margin-bottom: 30px; |
} |
.box_menu SPAN { |
display: flex; |
align-items: center; |
} |
.box_menu A{ |
position: absolute; |
left: calc(100px + 1vw); |
} |
.box_menu IMG { |
width: calc(80px + 1vw); |
} |
.img-organisme{ |
margin-top: 1vh; |
margin-bottom: 1vh; |
margin-right: auto; |
margin-left: auto; |
} |
/* shift menu items left and right in an alternating fashion if enough space: */ |
@media(min-width:500px){ |
.box_menu { |
max-width: 90%; |
} |
.box_menu_right { |
max-width: 90%; |
left: 10%; |
} |
.box_menu_right A { |
right: 100px !important; |
left: 5% !important; |
} |
.box_menu_right IMG { |
position: absolute; |
top: -18px; |
right: 0px; |
} |
} |
#box_infos IMG { |
position: absolute; |
bottom: -15px; |
right: 0px; |
width: 80px; |
} |
.div-cache { |
visibility: hidden; |
position: absolute; |
top: -1000px; |
} |
/*Couleurs de fond */ |
INPUT, #contenu_acces, #contenu_error, #logon, #auth_reussi { |
background-color: #ffffff; |
} |
/* Règles des balises HTML */ |
H1, H2, #aide-certif { |
text-align: center; |
padding: 0px; |
margin: 3px; |
} |
P, UL, LI{ |
text-align: justify; |
} |
BODY { |
text-align: center; |
font-size: 12px; |
margin: 0px; |
} |
H1 { |
font-size: 55px; |
} |
H2 { |
font-size: 30px; |
} |
H6, #aide-certif{ |
font-size: 100%; |
} |
UL { |
padding-left: 20px; |
margin: 0px; |
margin-bottom: 5px; |
} |
LI { |
list-style-type: square; |
} |
TABLE { |
font-size: 90%; |
} |
INPUT { |
border: #666666 1px solid; |
padding: 2px; |
font-family: arial; |
height: 22px; |
} |
#contenu_acces SPAN { |
font-family: "courier new"; |
} |
#contenu_error SPAN { |
font-family: "courier new"; |
} |
.info-box-container { |
margin-top: 30px; |
margin-bottom: 30px; |
height: 100%; |
} |
#box_infos { |
background-color: #efefef; |
padding-left: 10px; |
padding-right: 10px; |
padding-top: 5px; |
padding-bottom: 5px; |
border-radius: 10px; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
} |
/* When the the infobox goes bellow the main one (col-xs), it gets a dynamic height*/ |
@media(max-width:768px){ |
#box_infos { |
height:100%; |
} |
} |
.box_infos_titles { |
font-size: calc(14px + 0.15vw); |
font-weight: bold; |
color: black; |
margin-top: 5px; |
} |
.box_infos_explanations { |
font-size: calc(13px + 0.11vw); |
margin-bottom: 0px; |
} |
.box_infos_titles A { |
color: black; |
} |
/* |
#box_infos :link, #box_info :visited { |
text-decoration: none; |
} |
#box_infos IMG { |
max-width: 100px; |
} |
#box_infos h2 { |
color: black; |
font-weight: bold; |
font-size: calc(14px + 0.4vw); |
margin-bottom: 5px; |
} |
#box_infos P { |
font-size: calc(12px + 0.3vw); |
} |
#box_infos A { |
color: black; |
font-weight: bold; |
}*/ |
#corner { |
position: fixed; |
bottom: 0; |
right: 0; |
} |
#adm { |
display: block; |
width: 100px; |
height: 100px; |
} |
.corn IMG:hover { |
position: absolute; |
width: 100px; |
height: 100px; |
top: 0px; |
left: 0px; |
} |
.corn IMG { |
position: absolute; |
width: 50px; |
height: 50px; |
top: 75px; |
left: 75px; |
transition: .2s; |
} |
/web/css/intercept.css |
---|
1,697 → 1,115 |
/* |
CSS for ALCASAR interception page |
Auteur : Stéphane ERARD |
Licence : GNU GPL |
*/ |
/* règles générales */ |
/* Couleurs de polices */ |
:link, :visited, :hover:link, :hover:visited, H2, #box_url, #box_refuse { |
color: #000000; |
} |
BODY, H, #boite-logon { |
color: #666666; |
} |
#acces_controle, .log_out { |
color: white; |
} |
/* Style de police */ |
BODY, :link, :visited, :hover:link, :hover:visited { |
font-family: "DejaVu Sans"; |
} |
INPUT, #box_url { |
font-family: arial; |
} |
#acces_controle, #box_url, #cadre_titre SPAN { |
font-weight: bold; |
} |
.box_menu :link , .box_menu :visited, .box_menu :hover:link, .box_menu :hover:visited { |
text-decoration: none; |
} |
/*Couleurs de fond */ |
BODY { |
background-color: #666666; |
} |
INPUT, #contenu_acces, #contenu_error, #logon, #auth_reussi { |
background-color: #ffffff; |
} |
/* Règles des balises HTML */ |
H1, H2, #aide-certif { |
text-align: center; |
padding: 0px; |
margin: 3px; |
} |
P, UL, LI{ |
text-align: justify; |
} |
BODY { |
background-image: url(/images/fond.png); |
background-repeat: repeat-x; |
text-align: center; |
font-size: 12px; |
margin: 0px; |
} |
H1 { |
font-size: 55px; |
} |
H2 { |
font-size: 30px; |
} |
H6, #aide-certif{ |
font-size: 100%; |
} |
UL { |
margin: 5px; |
padding-bottom: 5px; |
padding-left: 10px; |
padding-right: 115px; |
padding-top: 5px; |
} |
LI { |
list-style-type: square; |
padding-top: 2px; |
} |
TABLE { |
font-size: 90%; |
} |
IMG { |
height: 150px; |
} |
INPUT { |
border: #666666 1px solid; |
padding: 2px; |
font-family: arial; |
height: 22px; |
} |
/* taille et position des logos */ |
#logo-alcasar { |
position: absolute; |
bottom: 25px; |
right: 5px; |
height: 130px; |
} |
#logo-organ { |
position: relative; |
top: 0px; |
right: -10px; |
max-width: 150px; |
max-height: 150px; |
} |
/* placement et proportion de la boite de saisie et de l'aide */ |
/* pour desktop */ |
.mobile-only { |
display: none; |
} |
#logon { |
position: relative; |
width: 620px; |
top: 20px; |
/* ombrage css3*/ |
-moz-box-shadow: 0px 0px 12px #000; |
-webkit-box-shadow: 0px 0px 12px #000; |
box-shadow: 0px 0px 12px #000; |
} |
#boite-logon { |
background-image: linear-gradient(#efefef, #d5d5d5); |
padding: 10px; |
width: 420px; |
height: 189px; |
} |
#boite-logon TD { |
padding-top: 10px; |
padding-left: 30px; |
} |
#boite-info { |
border: 0px; |
margin-top: 25px; |
width: 580px; |
padding-top: 10px; |
} |
#username_input, |
#password_input { |
align: left; |
} |
/* hide placeholders for desktops */ |
::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: transparent; |
} |
:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: transparent; |
} |
::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: transparent; |
} |
:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: transparent; |
} |
input::placeholder { |
color: transparent; |
} |
textarea::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: transparent; |
} |
textarea:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: transparent; |
} |
textarea::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: transparent; |
} |
textarea:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: transparent; |
} |
textarea::placeholder { |
color: transparent; |
} |
/* pour mobile */ |
@media (max-width: 900px) |
{ |
.desktop-only { |
display: none; |
} |
#logon { |
position: relative; |
width: 100%; |
top: 10px; |
/* ombrage css3*/ |
-moz-box-shadow: 0px 0px 12px #000; |
-webkit-box-shadow: 0px 0px 12px #000; |
box-shadow: 0px 0px 12px #000; |
} |
#boite-logon { |
background-image: linear-gradient(#efefef, #d5d5d5); |
padding: 10px; |
width: 90%; |
height: 189px; |
} |
#boite-logon TD { |
padding-top: 10px; |
} |
input[type="text"] |
{ |
font-size:30px; |
color: grey; |
} |
input[type="password"] |
{ |
font-size:30px; |
color: grey; |
} |
#boite-logon INPUT { |
border: #666666 1px solid; |
padding: 2px; |
font-family: arial; |
height: 30px; |
} |
#authenticate-button { |
font-size: 30px; |
} |
#boite-info { |
border: 0px; |
margin-top: 25px; |
width: 580px; |
padding-top: 10px; |
} |
#username_input, |
#password_input { |
align: center; |
} |
/* Placeholders */ |
::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: lightgrey; |
} |
:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: lightgrey; |
} |
::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: lightgrey; |
} |
:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: lightgrey; |
} |
input::placeholder { |
color: lightgrey; |
} |
textarea::-webkit-input-placeholder { |
/* WebKit browsers */ |
color: lightgrey; |
} |
textarea:-moz-placeholder { |
/* Mozilla Firefox 4 to 18 */ |
color: lightgrey; |
} |
textarea::-moz-placeholder { |
/* Mozilla Firefox 19+ */ |
color: lightgrey; |
} |
textarea:-ms-input-placeholder { |
/* Internet Explorer 10+ */ |
color: lightgrey; |
} |
textarea::placeholder { |
color: lightgrey; |
} |
} |
/*boite de dialogue de deconnection*/ |
/* pour desktop */ |
.mobile-only { |
display: none; |
} |
#contenu_acces { |
position: relative; |
width: 640px; |
height: 400px; |
top: -20px; |
padding-top: 0px; |
margin-left: auto; |
margin-right: auto; |
z-index: 1; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 10px #000; |
-webkit-box-shadow: 1px 1px 10px #000; |
box-shadow: 1px 1px 10px #000; |
} |
#cadre_titre{ |
position: relative; |
width: 730px; |
height: 98px; |
margin-top: 40px; |
margin-left: auto; |
margin-right: auto; |
z-index: 2; |
/* ombrage css3 */ |
-moz-box-shadow: 1px 4px 10px #000; |
-webkit-box-shadow: 1px 4px 10px #000; |
box-shadow: 1px 4px 10px #000; |
} |
#boite_logo{ |
position: absolute; |
top: -30px; |
left: -50px; |
width: 150px; |
height: 150px; |
z-index: 2; |
} |
/* pour mobile */ |
@media (max-width: 900px) |
{ |
.desktop-only { |
display: none; |
} |
.mobile-only { |
display: inline; |
} |
#contenu_acces { |
position: relative; |
width: 90%; |
height: 400px; |
top: -20px; |
padding-top: 0px; |
margin-left: auto; |
margin-right: auto; |
z-index: 1; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 10px #000; |
-webkit-box-shadow: 1px 1px 10px #000; |
box-shadow: 1px 1px 10px #000; |
} |
#cadre_titre{ |
position: relative; |
width: 100%; |
height: 98px; |
margin-top: 40px; |
margin-left: auto; |
margin-right: auto; |
z-index: 2; |
/* ombrage css3 */ |
-moz-box-shadow: 1px 4px 10px #000; |
-webkit-box-shadow: 1px 4px 10px #000; |
box-shadow: 1px 4px 10px #000; |
} |
#boite_logo{ |
position: absolute; |
top: -30px; |
left: -10px; |
width: 150px; |
height: 150px; |
z-index: 2; |
} |
} |
#auth_reussi { |
width: 450px; |
margin-top: 12px; |
padding-top: 5px; |
padding-left: 10px; |
padding-right: 10px; |
padding-bottom: 0px; |
} |
.text_auth { |
font-size: 20px; |
} |
.lien_deco { |
text-align: center; |
font-size: 18px; |
margin-bottom: 15px; |
} |
.log_out { |
font-size: 24px; |
text-align: center; |
margin-top: 30px; |
} |
#boite-logon, #auth_reussi, #logon { |
border: 1px #efefef solid; |
/* ombrage css3*/ |
-moz-box-shadow: 0px 0px 6px #000; |
-webkit-box-shadow: 0px 0px 6px #000; |
box-shadow: 0px 0px 6px #000; |
} |
#liens_redir { |
position: relative; |
bottom: -100px; |
left: 90px; |
text-align: center; |
} |
#liens_redir P A { |
font-size: 12px; |
text-align: center; |
margin: 15px; |
} |
/* style de la page accès controlé*/ |
#cadre_titre .titre_controle { |
background-image: url(/images/fond-bandeau.png); |
background-repeat: repeat-x; |
} |
#cadre_titre .titre_refus { |
background-image: url(/images/fond-bandeau-rouge.png); |
background-repeat: repeat-x; |
} |
#acces_controle { |
text-align: center; |
font-size: 40px; |
padding-top: 25px; |
padding-bottom: 27px; |
margin: 0px; |
} |
#logo_acces { |
position: relative; |
top: 0px; |
left: 0px; |
} |
#contenu_error { |
position: relative; |
width: 640px; |
height: auto; |
top: -20px; |
padding-top: 40px; |
padding-bottom: 40px; |
padding-left: 40px; |
padding-right: 40px; |
margin-left: auto; |
margin-right: auto; |
z-index: 1; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 10px #000; |
-webkit-box-shadow: 1px 1px 10px #000; |
box-shadow: 1px 1px 10px #000; |
} |
#logo_acces IMG, #box_refuse IMG { |
width: 95px; |
height: 95px; |
} |
/* Boite des liens*/ |
#box_url { |
position: relative; |
top: 35px; |
text-align: right; |
font-size: 14px; |
margin-right: 20px; |
} |
#cadre_titre SPAN { |
position: absolute; |
top: 70px; |
width: 510px; |
left: 110px; |
font-size: 14px; |
color: red; |
text-align: center; |
border: 2px red solid; |
padding: 2px; |
background-color: white; |
} |
#contenu_acces SPAN { |
position: relative; |
bottom: -150px; |
font-family: "courier new"; |
} |
#contenu_error SPAN { |
position: relative; |
bottom: -150px; |
font-family: "courier new"; |
} |
#box_refuse { |
font-size: 16px; |
margin-left: 130px; |
margin-right: 20px; |
margin-top: 40px; |
width: 460px; |
} |
#box_refuse IMG { |
position: absolute; |
top: -10px; |
left: -110px; |
} |
#box_refuse { |
position: relative; |
top: 55px; |
} |
.box_menu IMG { |
position: absolute; |
width: 70px; |
height: 70px; |
top: -25px; |
} |
.box_menu, #logon , #contenu_acces, #contenu_error, #acces_controle, #cadre_titre, #box_info{ |
/* Arrondi CSS3 Firefox*/ |
-moz-border-radius: 10px; |
/* Arrondi CSS3 Autres Nav*/ |
border-radius: 10px; |
} |
.box_menu { |
position: absolute; |
height: 35px; |
width: 310px; |
background-image: url(/images/fond-bdd.png); |
background-repeat: repeat-x; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
} |
.div-cache { |
visibility: hidden; |
position: absolute; |
top: -1000px; |
} |
#box_conn { |
top: 120px; |
} |
#box_certif { |
top: 190px; |
} |
#box_mdp { |
top: 260px; |
} |
#box_acc { |
top: 330px; |
} |
#box_certif, #box_acc { |
left: 60px; |
text-align: right; |
} |
#box_conn, #box_mdp { |
left: 20px; |
text-align: left; |
} |
#box_conn IMG, #box_mdp IMG { |
left: 5px; |
} |
#box_certif IMG, #box_acc IMG { |
right: 5px; |
} |
#box_conn SPAN, #box_certif SPAN, #box_mdp SPAN, #box_acc SPAN { |
position: relative; |
font-size: 12px; |
font-weight: bold; |
top: 10px; |
} |
#box_conn SPAN, #box_mdp SPAN { |
margin-left: 80px; |
} |
#box_certif SPAN, #box_acc SPAN { |
margin-right: 80px; |
} |
/*Animation visuel des cadres liens (Gecko et ie9)*/ |
#box_conn:hover, #box_certif:hover, #box_mdp:hover, #box_acc:hover { |
/* cursor: pointer;*/ |
background-image: url(/images/fond-bdd_rouge.png); |
background-repeat: repeat-x; |
/* ombrage CSS3 */ |
-moz-box-shadow: 0px 0px 0px #fff; |
-webkit-box-shadow: 0px 0px 0px #fff; |
box-shadow: 0px 0px 0px #fff; |
} |
#box_conn:hover a, #box_certif:hover a, #box_mdp:hover a, #box_acc:hover a, .box_menu a:hover, .box_menu a:visited:hover, #box_info :link:hover, #box_info :visited:hover { |
color: red; |
} |
/* overwrite default rules for disabled menu boxes */ |
.box_menu.box-menu-disabled { |
opacity: .2; |
} |
.box_menu.box-menu-disabled:hover a { |
color: #000000 !important; |
cursor: not-allowed !important; |
} |
.box_menu.box-menu-disabled:hover { |
cursor: not-allowed !important; |
background-image: url(/images/fond-bdd.png) !important; |
background-repeat: repeat-x !important; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666 !important; |
-webkit-box-shadow: 1px 1px 6px #666 !important; |
box-shadow: 1px 1px 6px #666 !important; |
} |
/*Mise en page de la bulle d'info (coté droit)*/ |
#box_info H2 { |
font-size: 14px; |
margin: 10px auto; |
} |
#box_info P { |
font-size: 11px; |
margin: 10px; |
} |
#box_info IMG { |
position: absolute; |
bottom: -60px; |
right: 10px; |
height: 120px; |
} |
#box_info { |
position: absolute; |
top: 118px; |
right: 20px; |
width: 230px; |
height: 250px; |
background-color: #efefef; |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
} |
#box_info :link, #box_info :visited { |
text-decoration: none; |
} |
#box_info UL{ |
text-align: left; |
padding : 0 0 0 15px; |
margin : 10px; |
} |
#box_info LI{ |
text-align: left; |
font-size: 10px; |
list-style-type : disc; |
padding : 0 0 0 0; |
} |
#authorized_domain{ |
height: 40px; |
width: 450px; |
text-align: left; |
display: block; |
/* border: 1px solid red;*/ |
margin-right: 50px; |
} |
#authorized_domain LI{ |
text-align: center; |
list-style-type : none; |
margin-right : 10px; |
display: block; |
float: left; |
} |
#corner { |
position: fixed; |
bottom: 0; |
right: 0; |
} |
#adm { |
display: block; |
width: 100px; |
height: 100px; |
} |
.corn IMG:hover { |
position: absolute; |
width: 100px; |
height: 100px; |
top: 0px; |
left: 0px; |
} |
.corn IMG { |
position: absolute; |
width: 50px; |
height: 50px; |
top: 75px; |
left: 75px; |
transition: .2s; |
} |
html { |
background: url(/images/background.jpg) no-repeat center center fixed; |
-webkit-background-size: cover; |
-moz-background-size: cover; |
-o-background-size: cover; |
background-size: cover; |
min-width: 450px; |
} |
BODY { |
font-color:#FFFFFF; |
color:#FFFFFF; |
} |
.error-margin { |
margin-left:0px; |
margin-right:0px; |
} |
.banner { |
z-index: 10; |
position: relative; |
margin-top: 5vh; |
background-image: linear-gradient(black,#222222); |
/* ombrage CSS3 */ |
-moz-box-shadow: 1px 1px 6px #666; |
-webkit-box-shadow: 1px 1px 6px #666; |
box-shadow: 1px 1px 6px #666; |
border-radius: 10px; |
} |
.background-form { |
background-color: white; |
border-radius:10px; |
box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.7); |
color: black; |
padding-top: 20px; |
top: -20px; |
z-index: 5; |
} |
.organisme { |
font-size: calc(25px + 3vw); |
text-align: center; |
margin-top: 15px; |
margin-bottom: 15px; |
font-weight: bold; |
} |
.titre-controle-acces { |
font-size: calc(18px + 2vw); |
text-align: center; |
} |
.titre-erreur { |
font-size: calc(11px + 0.8vw); |
text-align: center; |
margin: 0px; |
color: red; |
} |
.login-failed-reply { |
font-size: calc(10px + 0.6vw); |
margin-bottom: calc(10px + 0.1vw); |
} |
.inputs { |
display: flex; |
align-items: center; |
} |
#authorized_domain { |
font-size: calc(10px + 0.5vw); |
margin-top: 5px; |
} |
#boite-info { |
width: 100%; |
} |
.boite-info-titre { |
font-size: calc(20px + 0.3vw); |
} |
.boite-info-text { |
font-size: calc(13px + 0.25vw); |
} |
.boite-info-spacing { |
margin-top: 10px; |
margin-bottom: 10px; |
display: flex; |
align-items: center; |
} |
.row_button { |
margin-bottom: 5px; |
} |
.autoregistration_sms { |
text-align: center; |
font-size: calc(10px + 0.3vw); |
margin-bottom: 20px; |
} |
.button { |
font-size: calc(15px + 0.5vw); |
} |
.vertical-align { |
display: flex; |
align-items: center; |
} |
.img-xs-bottom { |
margin-left: auto; |
margin-right: auto; |
height: 150px; |
} |
/web/css/menu.css |
---|
0,0 → 1,48 |
/* |
* ACC: ALCASAR Control Center |
* Menu-style |
*/ |
.menu ul { |
margin: 0; |
padding: 0; |
list-style-type: none; |
display: none; |
} |
.menu > ul { |
display: block; |
} |
.menu > ul > li { |
margin-left: 0; |
} |
.menu li { |
padding: 2px; |
margin-left: 10px; |
text-align: left; |
} |
.menu li a:hover { |
color: black; |
} |
.menu li.active > a { |
color: black; |
font-weight: bold; |
} |
.menu li.active > ul { |
display: block; |
} |
.menu li .caret { |
background-image: url('/images/right.gif'); |
background-repeat: no-repeat; |
background-size: 10px; |
background-position: 0 center; |
display: inline-block; |
width: 10px; |
height: 10px; |
} |
.menu li.active .caret { |
background-image: url('/images/right2.gif'); |
} |
.menu li.active > .caret { |
background-image: url('/images/down2.gif'); |
} |
/web/css/style.css |
---|
87,3 → 87,26 |
.schedule-header tr th:first-child { |
background-color: transparent; |
} |
/* |
* Panel |
*/ |
.panel { |
width: 100%; |
border-spacing: 0; |
border-collapse: collapse; |
} |
.panel .panel-header { |
border-bottom: 2px solid #FFCC66; |
padding: 0; |
font-family: "DejaVu Sans"; |
font-size: small; |
text-align: center; |
font-weight: bold; |
color: #EFEFEF; |
background-color: #666666; |
} |
.panel .panel-body { |
border: 2px ridge black; |
overflow: auto; |
} |
/web/error.php |
---|
261,7 → 261,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - <?= $l_error; ?></title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
</head> |
<body> |
<div id="cadre_titre" class="titre_refus"> |
/web/errors/error-400.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-401.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-403.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-404.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-405.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-408.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-410.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-411.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-413.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-414.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-415.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-500.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-501.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-502.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-503.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/errors/error-506.html |
---|
6,7 → 6,7 |
<head> |
<meta charset="UTF-8"> |
<title>ALCASAR - </title> |
<link rel="stylesheet" type="text/css" href="/css/style_intercept.css"> |
<link rel="stylesheet" type="text/css" href="/css/error.css"> |
<script type="text/javascript" src="/js/i18n.js"></script> |
<script type="text/javascript" src="/js/error_translate.js"></script> |
</head> |
/web/index.php |
---|
546,7 → 546,7 |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
<title>ALCASAR - <?= $l_title ?></title> |
<link type="text/css" href="<?= ((!$direct_access) ? "//$hostname" : '') ?>/css/bootstrap.min.css" rel="stylesheet"> |
<link type="text/css" href="/css/index_style.css" rel="stylesheet"> |
<link type="text/css" href="/css/index.css" rel="stylesheet"> |
</head> |
<body> |
/web/intercept.php |
---|
538,7 → 538,7 |
} |
</script> |
<link rel="stylesheet" href="/css/bootstrap.min.css" type="text/css"> |
<link rel="stylesheet" href="/css/intercepts.css" type="text/css"> |
<link rel="stylesheet" href="/css/intercept.css" type="text/css"> |
</head> |
<body onLoad="javascript:doOnLoad(<?= $result ?>,'<?= $userurl ?>','<?= $redirurl ?>','<?= $adminurl ?>','<?= $timeleft ?>')"> |
/web/password.php |
---|
199,14 → 199,13 |
<meta charset="UTF-8"> |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
<title>ALCASAR - <?= $l_title ?></title> |
<!--<link type="text/css" href="/css/index_style.css" rel="stylesheet">--> |
<link rel="stylesheet" href="css/pwdmeter.css" type="text/css"> |
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css"> |
<link rel="stylesheet" href="css/pass.css" type="text/css"> |
<link rel="stylesheet" href="/css/pwdmeter.css" type="text/css"> |
<link rel="stylesheet" href="/css/bootstrap.min.css" type="text/css"> |
<link rel="stylesheet" href="/css/pass.css" type="text/css"> |
<!--[if lt IE 7]> |
<link rel="stylesheet" href="css/ie.css" type="text/css"> |
<![endif]--> |
<script src="js/pwdmeter.js"></script> |
<script src="/js/pwdmeter.js"></script> |
</head> |
<body> |
<div class="col-xs-12 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2" id="gui"> |