forked from halo-battle/game
Version 1.0a
This commit is contained in:
parent
e391f66774
commit
6a19363758
908 changed files with 22193 additions and 17408 deletions
6
includes/classement/conf.php
Normal file
6
includes/classement/conf.php
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
// Script by Keiran
|
||||
|
||||
/* info pagination */
|
||||
$nombreDestatsParPage = 30; // nombre d'users affichés sur la page
|
||||
?>
|
||||
284
includes/classement/fonctions.php
Normal file
284
includes/classement/fonctions.php
Normal file
|
|
@ -0,0 +1,284 @@
|
|||
<?php
|
||||
//Script by Keiran
|
||||
|
||||
function techno1( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$cristal += ceil(pow(2,$n)*500);
|
||||
$hydrogene += ceil(pow(2,$n)*150);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno2( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*500);
|
||||
$cristal += ceil(pow(2,$n)*750);
|
||||
$hydrogene += ceil(pow(2,$n)*100);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno3( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*2500);
|
||||
$cristal += ceil(pow(2,$n)*500);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno4( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*4000);
|
||||
$cristal += ceil(pow(2,$n)*1500);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno5( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*2000);
|
||||
$cristal += ceil(pow(2,$n)*1500);
|
||||
$hydrogene += ceil(pow(2,$n)*300);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno6( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*1400);
|
||||
$cristal += ceil(pow(2,$n)*400);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno7( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*3000);
|
||||
$cristal += ceil(pow(2,$n)*2100);
|
||||
$hydrogene += ceil(pow(2,$n)*750);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno8( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*5000);
|
||||
$cristal += ceil(pow(2,$n)*4000);
|
||||
$hydrogene += ceil(pow(2,$n)*1500);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno9( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*800);
|
||||
$cristal += ceil(pow(2,$n)*1000);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno10( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*2600);
|
||||
$cristal += ceil(pow(2,$n)*2600);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
function techno11( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(3,$n)*5200);
|
||||
$cristal += ceil(pow(3,$n)*4250);
|
||||
$hydrogene += ceil(pow(3,$n)*850);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°1 : Purificateur de métal/Générateur de Métal/Usine de métallurgie ; planete.mine_m
|
||||
|
||||
function batiment1( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(1.5,$n)*68);
|
||||
$cristal += ceil(pow(1.5,$n)*17);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°2 : Purificateur de cristal/Générateur de Cristal/Usine de cristal ; planete.mine_m
|
||||
|
||||
function batiment2( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(1.6,$n)*53);
|
||||
$cristal += ceil(pow(1.6,$n)*27);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°3 : Ionisateur/Générateur d'Hydrogène/Synchronisateur d'hydrogène ; planete.mine_h
|
||||
|
||||
function batiment3( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(1.5,$n)*242);
|
||||
$cristal += ceil(pow(1.5,$n)*72);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°4 : Centrale solaire/Générateur d'Energie/Centrale solaire ; planete.centrale_s
|
||||
|
||||
function batiment4( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(1.5,$n)*92);
|
||||
$cristal += ceil(pow(1.5,$n)*37);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°5 : Centrale de fusion/0/Centrale énergétique ; planete.centrale_f
|
||||
|
||||
function batiment5( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(1.73,$n)*800);
|
||||
$cristal += ceil(pow(1.73,$n)*420);
|
||||
$hydrogene += ceil(pow(1.68,$n)*285);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal + $hydrogene;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
// Batiment n°6 : Oeil des prophètes/0/Base radar ; planete.centrale_f
|
||||
|
||||
function batiment6( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*750);
|
||||
$cristal += ceil(pow(2,$n)*500);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°7 : Centre de recherches/Centre de recherches/Centre de recherches ; planete.labo
|
||||
|
||||
function batiment7( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*200);
|
||||
$cristal += ceil(pow(2,$n)*150);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
// Batiment n°8 : Chantier terrestre/Chantier terrestre/Chantier terrestre ; planete.chantier_terrestre
|
||||
|
||||
function batiment8( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*520);
|
||||
$cristal += ceil(pow(2,$labo)*150);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°9 : Chantier spatial/Chantier spatial/Chantier spatial ; planete.chantier_spatial
|
||||
|
||||
function batiment9( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*600);
|
||||
$cristal += ceil(pow(2,$n)*450);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°11 : Entrepôt/Entrepôt/Silo de stockage ; planete.silo
|
||||
|
||||
function batiment11( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(2,$n)*400);
|
||||
$cristal += ceil(pow(2,$n)*260);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
|
||||
// Batiment n°12 : Centrale informatique/0/Centrale informatique ; planete.centre_info
|
||||
|
||||
function batiment12( $nactuel ) {
|
||||
$n = 0;
|
||||
while( $n <= $nactuel ) {
|
||||
$metal += ceil(pow(1.7,$n)*600);
|
||||
$cristal += ceil(pow(1.7,$n)*420);
|
||||
$hydrogene += ceil(pow(1.7,$n)*100);
|
||||
$n++;
|
||||
}
|
||||
$ressources = $cristal + $metal;
|
||||
return $ressources;
|
||||
}
|
||||
|
||||
?>
|
||||
3
includes/classement/footer.php
Normal file
3
includes/classement/footer.php
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
</body>
|
||||
</html>
|
||||
8
includes/classement/header.php
Normal file
8
includes/classement/header.php
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||
<title>Document sans titre</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
60
includes/common.php
Normal file
60
includes/common.php
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
define("_FCORE",$_SERVER["DOCUMENT_ROOT"].'/includes/onyx/');
|
||||
define("_FDIR",'hbn');
|
||||
|
||||
define('VERSION', '1.0b');
|
||||
|
||||
//Constante permettant de savoir si les attaques sont désactivées ou non
|
||||
define("ATTAQUES", false);
|
||||
//Définition des limites de la galaxie
|
||||
define("MAX_AMAS", 3);
|
||||
define("MAX_SYSTEME", 99);
|
||||
define("MAX_PLANETE", 12);
|
||||
|
||||
require_once(_FCORE."kernel.php");
|
||||
require_once(_FCORE."../function.php");
|
||||
|
||||
//On démarre la session
|
||||
$sess = new session();
|
||||
$sess->load();
|
||||
|
||||
//On prépare le gestionnaire de templates
|
||||
$template = new Smarty();
|
||||
|
||||
$template->template_dir = _FCORE.'templates/templates/';
|
||||
$template->compile_dir = _FCORE.'templates/templates_c/';
|
||||
$template->config_dir = _FCORE.'templates/configs/';
|
||||
$template->cache_dir = _FCORE.'templates/cache/';
|
||||
|
||||
$template->assign('date',strftime("%A %d %B %Y %H:%M"));
|
||||
$template->assign('datehb',str_replace('.','',strftime("/%a %d %b %Y/%H%M %S")));
|
||||
|
||||
$link2 = array_map(create_function('$var','return(url($var,TRUE));'),$config['link']);
|
||||
$link_menu = array_map(create_function('$var','return(url($var,TRUE));'),$config['menu']);
|
||||
$link_menua = array_map(create_function('$var','return(url($var,TRUE));'),$config['menuadmin']);
|
||||
$link['lastNewsn'] = "csnu";
|
||||
$link = array_map('url',$link);
|
||||
$all_link = array_merge($link,$link2);
|
||||
|
||||
$template->assign('link',$all_link);
|
||||
$template->assign('menu',$link_menu);
|
||||
$template->assign('menua',$link_menua);
|
||||
|
||||
//$HEADER = '<div class="centre" style="position: absolute; z-index: 100;"><table style="margin-left: auto; margin-right: auto; background: #FFCC00;"><tr><td style="background: #FFCC99;"><font color="#FF0000"><b><u>Attention :</u> Mise à jour en cours, certaines pages risquent d\'être inactives ou buggées quelques temps</b></font></td></tr></table></div>';
|
||||
$HEADER = '';
|
||||
|
||||
$nanite = 0;
|
||||
|
||||
$PUB = '<script type="text/javascript"><!--
|
||||
google_ad_client = "pub-8183761828268957";
|
||||
//468x60, date de création 20/11/07
|
||||
google_ad_slot = "9088855275";
|
||||
google_ad_width = 468;
|
||||
google_ad_height = 60;
|
||||
//--></script>
|
||||
<script type="text/javascript"
|
||||
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
|
||||
</script><br />';
|
||||
?>
|
||||
83
includes/constructions.php
Normal file
83
includes/constructions.php
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
include_once('Class/class.gerefile.php');
|
||||
|
||||
//Batiments
|
||||
if (empty($queryPlanete['file_bat'])) $file = new gererFile($queryUser['prodfile']+2);
|
||||
else $file = unserialize($queryPlanete['file_bat']);
|
||||
|
||||
$cons = $file->pret();
|
||||
$nbc = count($cons);
|
||||
$out = "";
|
||||
for($i=0 ; $i<$nbc ; $i++) {
|
||||
$var = $batimentVAR[$cons[$i][0]];
|
||||
$nb = $queryPlanete[$var] + $cons[$i][1];
|
||||
if ($i != 0) $out .= ", ";
|
||||
$out .= "`$var` = '$nb'";
|
||||
}
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
if (!empty($out)) {
|
||||
$out .= ',';
|
||||
mysql_query("UPDATE `planete` SET $out `file_bat` = '$export' WHERE `id` = '$idPlan';");
|
||||
}
|
||||
|
||||
|
||||
//Technologies
|
||||
if (empty($queryPlanete['file_tech'])) $file = new gererFile($queryUser['prodfile']+2);
|
||||
else $file = unserialize($queryPlanete['file_tech']);
|
||||
|
||||
$cons = $file->pret();
|
||||
$nbc = count($cons);
|
||||
$out = "";
|
||||
for($i=0 ; $i<$nbc ; $i++) {
|
||||
$var = $technoloVAR[$cons[$i][0]];
|
||||
$nb = $queryUser[$var] + $cons[$i][1];
|
||||
if ($i != 0) $out .= ", ";
|
||||
$out .= "`$var` = '$nb'";
|
||||
}
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
if (!empty($out)) {
|
||||
mysql_query("UPDATE `user` SET $out WHERE `id` = '$id_user';");
|
||||
mysql_query("UPDATE `planete` SET `file_tech` = '$export' WHERE `id` = '$idPlan';");
|
||||
}
|
||||
|
||||
|
||||
//Vaisseaux
|
||||
if (empty($queryPlanete['file_vais'])) $file = new gererFile($queryUser['prodfile']+2);
|
||||
else $file = unserialize($queryPlanete['file_vais']);
|
||||
|
||||
$cons = $file->pret();
|
||||
$nbc = count($cons);
|
||||
$out = "";
|
||||
for($i=0 ; $i<$nbc ; $i++) {
|
||||
$var = $nomvaisnVAR[$cons[$i][0]];
|
||||
$nb = $cons[$i][1];
|
||||
if ($i != 0) $out .= ", ";
|
||||
$out .= "`$var` = `$var` + '$nb'";
|
||||
}
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
if (!empty($out)) {
|
||||
$out .= ',';
|
||||
mysql_query("UPDATE `planete` SET $out `file_vais` = '$export' WHERE `id` = '$idPlan';");
|
||||
}
|
||||
|
||||
|
||||
//Terrestre & défenses
|
||||
if (empty($queryPlanete['file_ter'])) $file = new gererFile($queryUser['prodfile']+2);
|
||||
else $file = unserialize($queryPlanete['file_ter']);
|
||||
|
||||
$cons = $file->pret();
|
||||
$nbc = count($cons);
|
||||
$out = "";
|
||||
for($i=0 ; $i<$nbc ; $i++) {
|
||||
$var = $nomterrnVAR[$cons[$i][0]];
|
||||
$nb = $cons[$i][1];
|
||||
if ($i != 0) $out .= ", ";
|
||||
$out .= "`$var` = `$var` + '$nb'";
|
||||
}
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
if (!empty($out)) {
|
||||
$out .= ',';
|
||||
mysql_query("UPDATE `planete` SET $out `file_ter` = '$export' WHERE `id` = '$idPlan';");
|
||||
}
|
||||
?>
|
||||
63
includes/fermerServeur.php
Normal file
63
includes/fermerServeur.php
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
// Définition des paramètres de fermeture du serveur
|
||||
$fermerServeur_auth = 9;
|
||||
$fermerServeur_causeR = 0;
|
||||
$fermerServeur_timeS = 1200840191;
|
||||
$duree = 5*60;
|
||||
$fermerServeur_timeE = $fermerServeur_timeS + $duree;
|
||||
$fermerServeur_ouverture = ''; // ... jusqu'à environ %c heure de Paris. DEFINIR PLUTÔT LES TIMEE ET TIMES
|
||||
$fermerServeur_lien = '';
|
||||
|
||||
// Calcul du temps de la maintenance
|
||||
$durer = $fermerServeur_timeE - $fermerServeur_timeS;
|
||||
$jours = intval($durer/86400);
|
||||
$heures = intval(($durer/86400-intval($durer/86400))*24);
|
||||
$minutes = intval((($durer/86400-intval($durer/86400))*24-intval(($durer/86400-intval($durer/86400))*24))*60);
|
||||
$secondes = intval(((($durer/86400-intval($durer/86400))*24-intval(($durer/86400-intval($durer/86400))*24))*60-intval((($durer/86400-intval($durer/86400))*24-intval(($durer/86400-intval($durer/86400))*24))*60))*60);
|
||||
if ($durer > 0 && $jours > 0) $durer = $jours.' jour(s), '.$heures.' heure(s), '.$minutes.' minutes(s)';
|
||||
elseif ($durer > 0 && $heures > 0) $durer = $heures.' heure(s), '.$minutes.' minutes(s)';
|
||||
elseif ($durer > 0) $durer = $minutes.' minutes(s)';
|
||||
else $durer = '';
|
||||
|
||||
if (empty($fermerServeur_lien)) $fermerServeur_lien = 'http://www.halo-battle.s-fr.com/forum/index.php';
|
||||
if (!ereg('http://',$fermerServeur_lien)) $fermerServeur_lien = 'http://www.halo-battle.s-fr.com/forum/'.$fermerServeur_lien;
|
||||
|
||||
if ($fermerServeur_timeE < time() && !empty($fermerServeur_timeE)) $fermerServeur_auth = 0;
|
||||
|
||||
if ($fermerServeur_causeR == 0 && $fermerServeur_timeS < time() && ($fermerServeur_timeE > time() || empty($fermerServeur_timeE))) {
|
||||
$fermerServeur_Titre = 'Serveur en maintenance';
|
||||
if ($fermerServeur_timeE != 0 && $fermerServeur_timeE-time() >= 86400) $ouvr = 'jusqu\'au '.date('d/m/y',$fermerServeur_timeE).' à '.date('H:i',$fermerServeur_timeE).' heure de Paris';
|
||||
elseif ($fermerServeur_timeE != 0) $ouvr = 'jusqu\'à '.date('H:i',$fermerServeur_timeE).' heure de Paris';
|
||||
elseif (!empty($fermerServeur_ouverture)) $ouvr = 'jusqu\'à environ '.$fermerServeur_ouverture.' heure de Paris';
|
||||
else $ouvr = 'durant quelques minutes';
|
||||
if (!empty($durer)) $durer = '<br /><br /><u>Durée de la phase de maintenance :</u> '.$durer;
|
||||
$fermerServeur_Contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible '.$ouvr.'.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire la <a href="'.$fermerServeur_lien.'" class="lien">HB Weekly Update sur le forum du jeu</a>.'.$durer.'<br /><br />Merci de votre compréhension';
|
||||
}
|
||||
elseif ($fermerServeur_causeR == 0 && ($fermerServeur_timeE > time() || empty($fermerServeur_timeE))) {
|
||||
$fermerServeur_Titre = 'Prévision de maintenance du serveur';
|
||||
if ($fermerServeur_timeS != 0 && $fermerServeur_timeS-time() >= 86400) $ouvr = 'le '.date('d/m/y',$fermerServeur_timeS).' à '.date('H:i',$fermerServeur_timeS).' heure de Paris';
|
||||
elseif ($fermerServeur_timeS != 0) $ouvr = 'à '.date('H:i',$fermerServeur_timeS).' heure de Paris';
|
||||
else $ouvr = 'dans quelques minutes';
|
||||
if (!empty($durer)) $durer = '<br /><br /><u>Durée de la phase de maintenance :</u> '.$durer;
|
||||
$fermerServeur_Contenu = 'Une phase de maintenance du serveur va être effectuée '.$ouvr.'.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire la <a href="'.$fermerServeur_lien.'" class="lien">HB Weekly Update sur le forum du jeu</a> lors de sa parution.'.$durer.'<br /><br />Merci de votre compréhension';
|
||||
}
|
||||
elseif ($fermerServeur_causeR == 1 && $fermerServeur_timeS < time() && ($fermerServeur_timeE > time() || empty($fermerServeur_timeE))) {
|
||||
$fermerServeur_Titre = 'Serveur en maintenance exceptionnelle';
|
||||
if ($fermerServeur_timeE != 0 && $fermerServeur_timeE-time() >= 86400) $ouvr = 'jusqu\'au '.date('d/m/y',$fermerServeur_timeE).' à '.date('H:i',$fermerServeur_timeE).' heure de Paris';
|
||||
elseif ($fermerServeur_timeE != 0) $ouvr = 'jusqu\'à '.date('H:i',$fermerServeur_timeE).' heure de Paris';
|
||||
elseif (!empty($fermerServeur_ouverture)) $ouvr = 'jusqu\'à environ '.$fermerServeur_ouverture.' heure de Paris';
|
||||
else $ouvr = 'durant quelques minutes';
|
||||
if (!empty($durer)) $durer = '<br /><br /><u>Durée de la phase de maintenance :</u> '.$durer;
|
||||
$fermerServeur_Contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible '.$ouvr.'.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire l\'<a href="'.$fermerServeur_lien.'" class="lien">annonce officielle de cette maintenance sur le forum du jeu</a>.'.$durer.'<br /><br />Merci de votre compréhension';
|
||||
}
|
||||
elseif ($fermerServeur_causeR == 1 && ($fermerServeur_timeE > time() || empty($fermerServeur_timeE))) {
|
||||
$fermerServeur_Titre = 'Prévision d\'une maintenance exceptionnelle du serveur';
|
||||
if ($fermerServeur_timeS != 0 && $fermerServeur_timeS-time() >= 86400) $ouvr = 'le '.date('d/m/y',$fermerServeur_timeS).' à '.date('H:i',$fermerServeur_timeS).' heure de Paris';
|
||||
elseif ($fermerServeur_timeS != 0) $ouvr = 'à '.date('H:i',$fermerServeur_timeS).' heure de Paris';
|
||||
else $ouvr = 'dans quelques minutes';
|
||||
if (!empty($durer)) $durer = '<br /><br /><u>Durée de la phase de maintenance :</u> '.$durer;
|
||||
$fermerServeur_Contenu = 'Une phase de maintenance du serveur va être effectuée exceptionnellement '.$ouvr.'.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire les <a href="'.$fermerServeur_lien.'" class="lien">annonces officielles sur le forum du jeu</a>.'.$durer.'<br /><br />Merci de votre compréhension';
|
||||
}
|
||||
|
||||
$HEADER .= '<div class="centre" style="position: absolute; z-index: 100;"><table style="margin-left: auto; margin-right: auto; background: #FFCC00;"><tr><td style="background: #FFCC99;"><font color="#FF0000"><b><u>Serveur en maintenance :</u> Le serveur est actuellement dans une phase de mise à jour. Certaines pages risquent d\'être inactives ou buggées quelques temps</b></font> Réouverture dans '.($fermerServeur_timeE-time()).' secondes</td></tr></table></div>';
|
||||
?>
|
||||
300
includes/flottes.php
Normal file
300
includes/flottes.php
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
<?php
|
||||
set_time_limit(0);
|
||||
|
||||
/* ! ATTENTION ! NE PAS FAIRE DE REFERENCE A UNE DONNEE DU FICHIER BDD.PHP OU
|
||||
* DE L'UTILISATEUR COURANT CAR LE SCRIPT EST LANCE PAR L'ATTAQUANT ET PAR
|
||||
* L'ATTAQUé.
|
||||
*/
|
||||
|
||||
require_once('Class/class.rapport.php');
|
||||
|
||||
function resteVaisseau($tableau){
|
||||
$ct = count($tableau);
|
||||
for ($i = 0; $i < $ct; $i++) {
|
||||
if (!empty($tableau[$i])) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$Hgalaxie = $queryPlanete["galaxie"];
|
||||
$Hss = $queryPlanete["ss"];
|
||||
$Hposition = $queryPlanete["position"];
|
||||
|
||||
$table = $config['db_prefix'].'flottes';
|
||||
$req = $chapeau->query("SELECT * FROM `$table` WHERE `id_user` = '$id_user' OR (`end_galaxie` = '$Hgalaxie' AND `end_ss` = '$Hss' AND `end_position` = '$Hposition')");
|
||||
for ($i=0 ; $i<$chapeau->num_rows ; $i++) {
|
||||
$resultat = $req[$i];
|
||||
$id_flotte = $resultat['id'];
|
||||
$mission = $resultat['mission'];
|
||||
$end_galaxie = $resultat['end_galaxie'];
|
||||
$end_ss = $resultat['end_ss'];
|
||||
$end_position = $resultat['end_position'];
|
||||
$temps = $resultat['start_time'] + $resultat['end_time'];
|
||||
if ($resultat['effectue'] != 1 && time() >= $resultat['start_time'] + $resultat['end_time'] && !empty($resultat['end_time'])) {
|
||||
|
||||
//Mission attaquer
|
||||
if ($mission == 1) {
|
||||
require_once('Class/class.combat.php');
|
||||
$table = $config['db_prefix'].'planete';
|
||||
$resultatT = $chapeau->unique_query("SELECT `debris_met`, `debris_cri` FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
|
||||
if ($resultat['effectue'] == 2) {
|
||||
$table = $config['db_prefix'].'flottes_combats';
|
||||
$resultatC = $chapeau->unique_query("SELECT * FROM `$table` WHERE `refflotte` = '$id_flotte'");
|
||||
if (!$resultatC) die('Erreur dans le script de combat, <a href="mailto:admin@halo-battle.s-fr.com">contactez d\'urgence un administrateur</a> !');
|
||||
if (time() >= $resultatC['timestamp']) {
|
||||
//On récupère le combat
|
||||
$combat = unserialize($resultatC['serialize']);
|
||||
|
||||
//Mise à jour des tactiques
|
||||
if (!empty($resultatC['tactiqueAT'])) $combat->changerTactiqueAT($resultatC['tactiqueAT']);
|
||||
if (!empty($resultatC['tactiqueEN'])) $combat->changerTactiqueEN($resultatC['tactiqueEN']);
|
||||
|
||||
while($combat->timestamp <= time()) {
|
||||
//On passe le tour
|
||||
$combat->Ntour++;
|
||||
|
||||
//Détermine qui est le tour : attaquant ou défenseur
|
||||
if (floor($combat->Ntour/2) == $combat->Ntour/2) { //Le tour est paire : tour attaquant
|
||||
$arraytactique = tactique($combat->ATtactique);
|
||||
if (@$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3]), true), true) == 0) { //Attaquant vainceur
|
||||
mysql_query("DELETE FROM `flottes_combats` WHERE `refflotte` = '$id_flotte'");
|
||||
mysql_query("UPDATE `flottes` SET ".$combat->exportAT(true).", `effectue` = '1', `ret_time` = ".$combat->timestamp." WHERE `id` = '$id_flotte'");
|
||||
mysql_query("UPDATE `planete` SET ".$combat->exportEN()." WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
$send = $combat->genRapport(true, true);
|
||||
}
|
||||
else $send = $combat->genRapport(false);
|
||||
}
|
||||
else { //Le tour est impaire : tour défenseur
|
||||
$arraytactique = tactique($combat->ENtactique);
|
||||
if (@$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3]), false), false) == 0) { //Défenseur vainceur
|
||||
mysql_query("DELETE FROM `flottes_combats` WHERE `refflotte` = '$id_flotte'");
|
||||
mysql_query("DELETE FROM `flottes` WHERE `id` = '$id_flotte'");
|
||||
mysql_query("UPDATE `planete` SET ".$combat->exportEN()." WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
$send = $combat->genRapport(true, false);
|
||||
}
|
||||
else $send = $combat->genRapport(false);
|
||||
}
|
||||
|
||||
//On envoie les rapports aux joueurs concernés
|
||||
$temps = $combat->timestamp;
|
||||
mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[2])."', '', 'Combat', '".$send[0]."', '$temps')") or die ("erreur sql ".mysql_error());
|
||||
mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[3])."', '', 'Combat', '".$send[1]."', '$temps')") or die ("erreur sql ".mysql_error());
|
||||
|
||||
//Prévision du prochain tour
|
||||
$combat->timestamp += 300;
|
||||
}
|
||||
$timestamp_suite = $combat->timestamp;
|
||||
|
||||
$debriM = $combat->debriM + $resultatT['debris_met'];
|
||||
$debriC = $combat->debriC + $resultatT['debris_cri'];
|
||||
|
||||
$combat->debriM = 0;
|
||||
$combat->debriC = 0;
|
||||
|
||||
//On sérialise la classe pour l'exporter
|
||||
$serialise = serialize($combat);
|
||||
|
||||
//On enregistre le combat dans la base de données
|
||||
mysql_query("UPDATE `flottes_combats` SET `serialize` = '$serialise', `tactiqueAT` = '0', `tactiqueEN` = '0', `timestamp` = '$timestamp_suite' WHERE `refflotte` = '$id_flotte'");
|
||||
mysql_query("UPDATE `planete` SET `debris_met` = '$debriM', `debris_cri` = '$debriC' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
}
|
||||
}
|
||||
else {
|
||||
//On place la flotte en attente
|
||||
$table = $config['db_prefix'].'flottes';
|
||||
$chapeau->query("UPDATE `$table` SET `effectue` = '2' WHERE `id` = '$id_flotte'");
|
||||
|
||||
//On trouve les variables nécessaire pour le combat : vaisseaux, défenses, ...
|
||||
$table = $config['db_prefix'].'planete';
|
||||
$resultatDef = $chapeau->unique_query("SELECT * FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
|
||||
//On déclare le combat
|
||||
$combat = new Combat($resultat, $resultatDef, $resultatDef);
|
||||
|
||||
//Définition des tactiques par défaut pour les deux combatants
|
||||
$table = $config['db_prefix'].'user';
|
||||
|
||||
$resultatU = $chapeau->unique_query("SELECT `combatAT_tactique` FROM `$table` WHERE `id` = '".$resultat['id_user']."'");
|
||||
if (empty($resultat['tactiqueAT'])) $combat->changerTactiqueAT($resultatU['combatAT_tactique']);
|
||||
else $combat->changerTactiqueAT($resultat['tactiqueAT']);
|
||||
|
||||
$resultatU = mysql_query("SELECT combatDE_tactique FROM `$table` WHERE `id` = '".$resultatDef['id_user']."'");
|
||||
if (empty($resultat['tactiqueEN'])) $combat->changerTactiqueEN($resultatU['combatDE_tactique']);
|
||||
else $combat->changerTactiqueEN($resultat['tactiqueEN']);
|
||||
|
||||
//Lancement de l'attaque
|
||||
if (@$combat->attaquerVais($combat->calcAttaque(100,true),true) == 0) { //Attaquant vainceur
|
||||
mysql_query("DELETE FROM `flottes_combats` WHERE `refflotte` = '$id_flotte'");
|
||||
mysql_query("UPDATE `flottes` SET ".$combat->exportAT(true).", `effectue` = '1', `ret_time` = ".$combat->timestamp." WHERE `id` = '$id_flotte'");
|
||||
mysql_query("UPDATE `planete` SET ".$combat->exportEN()." WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
$send = $combat->genRapport(true, true);
|
||||
}
|
||||
else $send = $combat->genRapport(false);
|
||||
|
||||
//On envoie les rapports aux joueurs concernés
|
||||
$temps = $combat->timestamp;
|
||||
mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[2])."', '', 'Combat', '".$send[0]."', '$temps')");
|
||||
mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[3])."', '', 'Combat', '".$send[1]."', '$temps')");
|
||||
|
||||
|
||||
//Prévision du prochain tour
|
||||
$combat->timestamp += 300;
|
||||
$timestamp_suite = $combat->timestamp;
|
||||
|
||||
$debriM = $combat->debriM + $resultatT['debris_met'];
|
||||
$debriC = $combat->debriC + $resultatT['debris_cri'];
|
||||
|
||||
$combat->debriM = 0;
|
||||
$combat->debriC = 0;
|
||||
|
||||
//On sérialise la classe pour l'exporter
|
||||
$serialise = serialize($combat);
|
||||
|
||||
//On enregistre le combat dans la base de données
|
||||
mysql_query("INSERT INTO `flottes_combats` VALUES(NULL, '".$resultat['id']."', '$timestamp_suite', '$serialise', '0', '0')");
|
||||
mysql_query("UPDATE `planete` SET `debris_met` = '$debriM', `debris_cri` = '$debriC' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
}
|
||||
}
|
||||
//Mission Transporter
|
||||
elseif ($mission == 2) {
|
||||
$table = $config['db_prefix'].'planete';
|
||||
$resultatT = $chapeau->unique_query("SELECT `metal`, `cristal`, `hydrogene` FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
$Cmetal = $resultat['contenu_metal'] + $resultatT['metal'];
|
||||
$Ccristal = $resultat['contenu_cristal'] + $resultatT['cristal'];
|
||||
$Chydrogene = $resultat['contenu_hydrogene'] + $resultatT['hydrogene'];
|
||||
$table = $config['db_prefix'].'planete';
|
||||
$chapeau->query("UPDATE `$table` SET `metal` = '$Cmetal', `cristal` = '$Ccristal', `hydrogene` = '$Chydrogene' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
$table = $config['db_prefix'].'flottes';
|
||||
$chapeau->query("UPDATE `$table` SET `effectue` = '1', `contenu_metal` = '0', `contenu_cristal` = '0', `contenu_hydrogene` = '0' WHERE `id` = '$id_flotte'");
|
||||
|
||||
$message = mysql_real_escape_string('Vos vaisseaux ont déposés '.$resultat['contenu_metal'].' de métal, '.$resultat['contenu_cristal'].' de cristal et '.$resultat['contenu_hydrogene'].' d\'hydrogène aux coordonnées '.$end_galaxie.':'.$end_ss.':'.$end_position);
|
||||
$chapeau->query("INSERT INTO mail VALUES('', '1', '".trouvNom($id_user)."', '', 'Transport', '$message', '$temps')");
|
||||
}
|
||||
//Mission Coloniser
|
||||
elseif ($mission == 3) {
|
||||
$table = $config['db_prefix'].'planete';
|
||||
$chapeau->query("SELECT * FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
if (!$chapeau->num_rows > 0) {
|
||||
$time = time();
|
||||
$cases = mt_rand(125,222);
|
||||
$image = mt_rand(1,15);
|
||||
$Cmetal = $resultat['contenu_metal'] + 1000;
|
||||
$Ccristal = $resultat['contenu_cristal'] + 700;
|
||||
$Chydrogene = $resultat['contenu_hydrogene'];
|
||||
|
||||
//Calcul de l'isolement
|
||||
$nbPlan = count($queryPlanetes);
|
||||
switch($nbPlan){
|
||||
case 11: $tps = 2; break;
|
||||
case 12: $tps = 4; break;
|
||||
case 13: $tps = 6; break;
|
||||
case 14: $tps = 8; break;
|
||||
case 15: $tps = 12; break;
|
||||
case 16: $tps = 16; break;
|
||||
case 17: $tps = 20; break;
|
||||
default: $tps = 24;
|
||||
}
|
||||
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
|
||||
$fin = $debut + $tps * 3600;
|
||||
|
||||
$chapeau->query("INSERT INTO planete (`id_user`, `isolement`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`, `hydrogene`) VALUES ('$id_user', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene')");
|
||||
|
||||
if ($resultat['nb_vais'] == 1) {
|
||||
$resultat['nb_vais'] = -1;
|
||||
$chapeau->query("DELETE FROM `flottes` WHERE `id` = '$id_flotte'");
|
||||
}
|
||||
else $chapeau->query("UPDATE `flottes` SET `effectue` = '1', `vaisseau_3` = `vaisseau_3` - 1, `nb_vais` = `nb_vais` - 1, `contenu_metal` = '0', `contenu_cristal` = '0', `contenu_hydrogene` = '0' WHERE `id` = '$id_flotte'");
|
||||
|
||||
$message = 'Votre vaisseau a atteint la planète ['.$end_galaxie.':'.$end_ss.':'.$end_position.'] et commence la colonisation';
|
||||
$chapeau->query("INSERT INTO `mail` VALUES('', '1', '".trouvNom($resultat['id_user'])."', '', 'Colonisation', '$message', '$temps')");
|
||||
}
|
||||
else $chapeau->query("INSERT INTO `mail` VALUES('', '1', '".trouvNom($resultat['id_user'])."', '', 'Colonisation', 'Nous n''avons pas pu coloniser la planète [$end_galaxie:$end_ss:$end_position] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.', '$temps')");
|
||||
}
|
||||
//Mission Recycler
|
||||
elseif ($mission == 4) {
|
||||
$resultatT = $chapeau->unique_query("SELECT * FROM `planete` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
if ($resultatT) {
|
||||
$resultat['contenu_max'] -= (vais_conso($resultat['end_time'], count($resultat['nb_vais']))*$resultat['vitesse']*5) + $resultat['contenu_metal'] + $resultat['contenu_cristal'] + $resultat['contenu_hydrogene'];
|
||||
|
||||
$debris_met = $resultatT['debris_met'];
|
||||
$debris_cri = $resultatT['debris_cri'];
|
||||
$capacite = $resultat['contenu_max'];
|
||||
if ($debris_met+$debris_cri > $capacite) {
|
||||
$a = floor($capacite/2);
|
||||
$b = floor($capacite/2);
|
||||
if ($a > $debris_met && $b > $debris_cri) {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
else if ($a > $debris_met) {
|
||||
$a = $debris_met;
|
||||
$b = ($capacite - $a);
|
||||
if ($b > $debris_cri) $b = $debris_cri;
|
||||
}
|
||||
else if ($b > $debris_cri) {
|
||||
$b = $debris_cri;
|
||||
$a = ($capacite - $b);
|
||||
if ($a > $debris_met) $a = $debris_met;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
$Cmetal = $a + $resultat['contenu_metal'];
|
||||
$Ccristal = $b + $resultat['contenu_cristal'];
|
||||
$debris_met -= $a;
|
||||
$debris_cri -= $b;
|
||||
|
||||
$chapeau->query("UPDATE `flottes` SET `effectue` = '1', `contenu_metal` = '$Cmetal', `contenu_cristal` = '$Ccristal' WHERE `id` = '$id_flotte'");
|
||||
$chapeau->query("UPDATE `planete` SET `debris_met` = '$debris_met', `debris_cri` = '$debris_cri' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
|
||||
$message = 'Vos vaisseaux récoltent '.$a.' de métal et '.$b.' de cristal aux coordonnées '.$end_galaxie.':'.$end_ss.':'.$end_position;
|
||||
$chapeau->query("INSERT INTO mail VALUES('', '1', '".trouvNom($resultat['id_user'])."', '', 'Recyclage', '$message', '$temps')");
|
||||
}
|
||||
}
|
||||
elseif ($mission == 5) {
|
||||
$nbsondes = $resultat['vaisseau_3'];
|
||||
$resultatT = $chapeau->unique_query("SELECT * FROM `planete` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'");
|
||||
$id_user = $resultatT['id_user'];
|
||||
$id_att = $resultat['id_user'];
|
||||
$resultatUD = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '$id_user';");
|
||||
$resultatUA = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '$id_att';");
|
||||
|
||||
$diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2);
|
||||
$rapport = new Rapport($mission, $id_att, $id_user, $resultat['start_time'] + $resultat['end_time']);
|
||||
if ($diffNiveau < 0) {
|
||||
$rapport->addInfo($resultatT, 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
}
|
||||
if ($diffNiveau >= 0) $rapport->addInfo($resultatT, 0);
|
||||
if ($diffNiveau >= 1) $rapport->addInfo(true, 1);
|
||||
if ($diffNiveau >= 2) $rapport->addInfo(true, 2);
|
||||
if ($diffNiveau >= 3) $rapport->addInfo(true, 3);
|
||||
if ($diffNiveau >= 4) $rapport->addInfo($resultatUD, 4);
|
||||
if ($diffNiveau >= 5) $rapport->addInfo(true, 5);
|
||||
|
||||
$chapeau->query("UPDATE `flottes` SET `effectue` = '1' WHERE `id` = '$id_flotte'");
|
||||
$rapport->send();
|
||||
}
|
||||
}
|
||||
if ($resultat['nb_vais'] >= 0 && time() >= $resultat['start_time'] + $resultat['end_time'] * 2 && !empty($resultat['end_time']) && $resultat['mission'] != 0 && ($resultat['mission'] != 1 || (!empty($resultat['ret_time']) && time() >= $resultat['ret_time'] + $resultat['end_time']))) {
|
||||
$start_galaxie = $resultat['start_galaxie'];
|
||||
$start_ss = $resultat['start_ss'];
|
||||
$start_position = $resultat['start_position'];
|
||||
$id_flotte = $resultat['id'];
|
||||
$reqP = mysql_query("SELECT * FROM planete WHERE `id_user` = '$id_user' AND `galaxie` = '$start_galaxie' AND `ss` = '$start_ss' AND `position` = '$start_position'") or die ("erreur sql ".mysql_error());
|
||||
$resultatP = mysql_fetch_array($reqP);
|
||||
$metal = $resultat['contenu_metal'] + $resultatP['metal'];
|
||||
$cristal = $resultat['contenu_cristal'] + $resultatP['cristal'];
|
||||
$hydrogene = $resultat['contenu_hydrogene'] + $resultatP['hydrogene'];
|
||||
for($i = 1; $i <= 12; $i++) {
|
||||
${'Pvaisseaux_'.$i} = $resultatP['vaisseau_'.$i] + $resultat['vaisseau_'.$i];
|
||||
mysql_query("UPDATE `planete` SET `vaisseau_$i` = '${'Pvaisseaux_'.$i}' WHERE `id_user` = '$id_user' AND `galaxie` = '$start_galaxie' AND `ss` = '$start_ss' AND `position` = '$start_position'");
|
||||
}
|
||||
mysql_query("UPDATE `planete` SET `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id_user` = '$id_user' AND `galaxie` = '$start_galaxie' AND `ss` = '$start_ss' AND `position` = '$start_position'");
|
||||
mysql_query("DELETE FROM `flottes` WHERE `id_user` = '$id_user' AND `id` = '$id_flotte'");
|
||||
}
|
||||
}
|
||||
?>
|
||||
180
includes/function.php
Normal file
180
includes/function.php
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
<?php
|
||||
function trouvNom($id_user){
|
||||
$req = mysql_query("SELECT pseudo FROM user WHERE `id` = '$id_user'");
|
||||
$resultat = mysql_fetch_array($req);
|
||||
return $resultat['pseudo'];
|
||||
}
|
||||
|
||||
function trouvInfo($id_user, $info){
|
||||
$req = mysql_query("SELECT `$info` FROM user WHERE `id` = '$id_user'");
|
||||
$resultat = mysql_fetch_array($req);
|
||||
return $resultat[$info];
|
||||
}
|
||||
|
||||
function affTemp($secondes){
|
||||
$heures = intval($secondes/3600);
|
||||
$minutes = intval($secondes/60-($heures*60));
|
||||
if ($minutes < 10) $minutes = '0'.$minutes;
|
||||
$seconde = $secondes-($heures*3600)-($minutes*60);
|
||||
if ($seconde < 10) $seconde = '0'.$seconde;
|
||||
|
||||
return $heures.':'.$minutes.':'.$seconde;
|
||||
}
|
||||
|
||||
function separerNombres($nombre) {
|
||||
return number_format($nombre, 0, ',', ' ');
|
||||
}
|
||||
|
||||
function sec($time) {
|
||||
$output = '';
|
||||
$tab = array ('jour' => '86400', 'heure' => '3600', 'minute' => '60', 'seconde' => '1');
|
||||
foreach ($tab as $key => $value) {
|
||||
$compteur = 0;
|
||||
while ($time > ($value-1)) {
|
||||
$time = $time - $value;
|
||||
$compteur++;
|
||||
}
|
||||
if ($compteur != 0) {
|
||||
$output .= $compteur.' '.$key;
|
||||
if ($compteur > 1) $output .= 's';
|
||||
if ($value != 1) $output .= ' ';
|
||||
}
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
function readDeblok($tableau, $queryPlanete, $queryUser){
|
||||
if ($tableau == '0') return 'Débloqué';
|
||||
else {
|
||||
$nbDeblok = count($tableau);
|
||||
$return = '';
|
||||
for ($i=0 ; $i<$nbDeblok ; $i++) {
|
||||
if (isset($queryPlanete[$tableau[$i][1]])) $return .= techno($tableau[$i][0], $queryPlanete[$tableau[$i][1]], $tableau[$i][2]).'<br />';
|
||||
else $return .= techno($tableau[$i][0], $queryUser[$tableau[$i][1]], $tableau[$i][2]).'<br />';
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
||||
function requestDeblok($tableau, $queryPlanete, $queryUser){
|
||||
if ($tableau == '0') return true;
|
||||
else {
|
||||
$nbDeblok = count($tableau);
|
||||
$return = true;
|
||||
for ($i=0 ; $i<$nbDeblok ; $i++) {
|
||||
if (isset($queryPlanete[$tableau[$i][1]]) && $queryPlanete[$tableau[$i][1]] < $tableau[$i][2]) $return = false;
|
||||
elseif (isset($queryUser[$tableau[$i][1]]) && $queryUser[$tableau[$i][1]] < $tableau[$i][2]) $return = false;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
||||
function techno($nom, $niveau, $niveau_ress) {
|
||||
if (empty($niveau)) $niveau = 0;
|
||||
if ($niveau < $niveau_ress) return '<span class="lack">'.$nom.' '.$niveau_ress.' ('.$niveau.')</span>';
|
||||
else return ''.$nom.' '.$niveau_ress.' ('.$niveau.')';
|
||||
}
|
||||
|
||||
function txtmission($mission){
|
||||
if ($mission == 0) return 'Stationner';
|
||||
elseif ($mission == 1) return 'Attaquer';
|
||||
elseif ($mission == 2) return 'Transporter';
|
||||
elseif ($mission == 3) return 'Coloniser';
|
||||
elseif ($mission == 4) return 'Recycler';
|
||||
elseif ($mission == 5) return 'Espionner';
|
||||
else return 'Erreur';
|
||||
}
|
||||
|
||||
function txtTactique($tactique){
|
||||
switch($tactique){
|
||||
case 1: return '1'; break;
|
||||
case 2: return '2'; break;
|
||||
case 3: return '3'; break;
|
||||
case 4: return '4'; break;
|
||||
case 5: return '5'; break;
|
||||
case 6: return '6'; break;
|
||||
case 7: return '7'; break;
|
||||
case 8: return '8'; break;
|
||||
case 9: return '9'; break;
|
||||
case 10: return '10'; break;
|
||||
case 11: return '11'; break;
|
||||
case 12: return '12'; break;
|
||||
case 13: return '13'; break;
|
||||
case 14: return '14'; break;
|
||||
case 15: return '15'; break;
|
||||
case 16: return '16'; break;
|
||||
case 17: return '17'; break;
|
||||
case 18: return '18'; break;
|
||||
case 19: return '19'; break;
|
||||
case 20: return '20'; break;
|
||||
case 21: return '21'; break;
|
||||
default: return 'autre'; break;
|
||||
}
|
||||
}
|
||||
|
||||
function tactique($tactique){
|
||||
switch($tactique){
|
||||
case 1: return array(1,0,100,false); break;
|
||||
case 2: return array(2,88,12,false); break;
|
||||
case 3: return array(3,75,25,false); break;
|
||||
case 4: return array(4,63,37,false); break;
|
||||
case 5: return array(5,50,50,false); break;
|
||||
case 6: return array(6,37,63,false); break;
|
||||
case 7: return array(7,25,75,false); break;
|
||||
case 8: return array(8,12,88,false); break;
|
||||
case 9: return array(9,12,88,true); break;
|
||||
case 10: return array(10,25,75,true); break;
|
||||
case 11: return array(11,37,63,true); break;
|
||||
case 12: return array(12,50,50,true); break;
|
||||
case 13: return array(13,63,37,true); break;
|
||||
case 14: return array(14,75,25,true); break;
|
||||
case 15: return array(15,75,26,true); break;
|
||||
case 16: return array(16,75,27,true); break;
|
||||
case 17: return array(17,75,28,true); break;
|
||||
case 18: return array(18,75,29,true); break;
|
||||
case 19: return array(19,75,30,true); break;
|
||||
case 20: return array(20,75,31,true); break;
|
||||
case 21: return array(21,75,32,true); break;
|
||||
default: return array(1,0,100,false); break;
|
||||
}
|
||||
}
|
||||
|
||||
function pillage($metal, $cristal, $hydrogene, $vfm){
|
||||
$Qm = $metal / $vfm;
|
||||
$Qc = $cristal / $vfm;
|
||||
$Qh = $hydrogene / $vfm;
|
||||
|
||||
$somme = $Qm + $Qc + $Qh;
|
||||
|
||||
if ($somme < 2) {
|
||||
$Fm = $metal / 2;
|
||||
$Fc = $cristal / 2;
|
||||
$Fh = $hydrogene / 2;
|
||||
}
|
||||
else {
|
||||
$Fm = $Qm / $somme * $vfm;
|
||||
$Fc = $Qc / $somme * $vfm;
|
||||
$Fh = $Qh / $somme * $vfm;
|
||||
}
|
||||
|
||||
return array(floor($Fm), floor($Fc), floor($Fh));
|
||||
}
|
||||
|
||||
function vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$coefvitesse = 1,$preparation = 0,$chauffe = 0) {
|
||||
if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse;
|
||||
elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation;
|
||||
/*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation;
|
||||
elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/
|
||||
elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation;
|
||||
else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation;
|
||||
|
||||
return $temps/$coefvitesse;
|
||||
}
|
||||
|
||||
function vais_conso($tempsDeplacement,$nbvais = 1){
|
||||
return intval($tempsDeplacement*$nbvais/20);
|
||||
}
|
||||
?>
|
||||
225
includes/noms.php
Normal file
225
includes/noms.php
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
<?php
|
||||
if (!isset($race)) $race = $queryUser['race'];
|
||||
if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
||||
|
||||
if ($race == 'covenant') {
|
||||
$ressourc = array('Métal','Cristal','Ions','Energie');
|
||||
$casernen = array('Grunt','Jackal','Drone','Elite','Sniper','Hunter','Médecin','Ingénieur','Brute');
|
||||
$casernde = array( 'Formant l\'unité d\'infanterie de base des Covenants, les Grunt se révèlent dangereux en groupe, mais ne représentent individuellement qu\'une faible menace. Petits, trapus et relativement lents, ils paniquent souvent lorsqu\'ils affrontent des ennemis qui leurs sont supérieurs ; cependant, s\'ils sont menés par un Sangheili, ils se battront jusqu\'au bout.',
|
||||
'Tireurs efficaces, les jackals sont généralement employés comme mercenaires, on les trouve souvent en positions défensives, se battant protégés par les boucliers à énergie qui les caractérisent. Un bouclier bien utilisé fait d\'un Jackal une cible difficile à atteindre, mais celui-ci doit l\'écarter pour faire feu, ce qui lui confère un point faible exploitable.',
|
||||
'Tout comme les Brutes, les Drones semblent avoir été intégrés depuis peu aux forces d\'assaut covenantes et sont déployés en masse. Apparemment d\'origine insectoïde, ce sont les gardes des vaisseaux covenants. Ils ont également la capacité - limitée - de voler et font d\'excellents tireurs, très intelligents.',
|
||||
'Les Elites constituent l\'ossature des armées covenantes. Excellents soldats, tacticiens émérites et disciplinés, combattants agressifs, ils représentent la principale force des covenants. Plus rapides, plus forts et plus résistants que les humains, ils combattent en groupes restreints et dirigent souvent des escouades de Grunts. La couleur de leur armure indique leur rang.',
|
||||
'Le sniper est une classe des jackals. Excellents tireurs de nature, les Jackals qui se sont spécialisés dans ce domaine bénéficient d\'un rang plus élevé que leurs congénères. Ils sont très destructeurs de loin mais assez peu de près. Ils ne possèdent cependant pas de bouclier de protection comme leurs frères.',
|
||||
'Les Hunters sont des ennemis incroyablement dangereux qui sont déployés plus comme du matériel que comme des soldats. Ils sont utilisés pour des tâches de démolitions ou de défense lourde et se battent toujours par deux. Ces créatures massives portent une armure quasiment impénétrable et une arme à combustible redoutable au combat.',
|
||||
'Les médecins sont sur le champ de bataille pour aider les soldats blessés par des tirs lors des affrontements. Ils peuvent réduire le nombre de morts lorsqu\'ils sont bien utilisés, et donc peuvent peut être changer l’issue de la bataille.',
|
||||
'Les ingénieurs, appelés Huragok en langage covenant, forment la seule unité non-combattante connue des forces covenantes. Celle-ci répare vos unités et véhicules sur le champ de bataille ; plus vous en recrutez, plus vos unités et véhicules au sol auront une chance de survivre.',
|
||||
'Moins bien connus que les Elites, les Brutes combattent en groupes et sont physiquement plus forts que leurs congénères. Les Brutes démontrent les mêmes aptitudes au combat que les Elites et leur nombre s\'est considérablement accru depuis le début du conflit. Ils portent une arme balistique explosive à laquelle est fixée une baïonnette.');
|
||||
$casernea = array('grunt(s)','jackal(s)','drone(s)','élite(s)','sniper(s)','hunter(s)','médecin(s)','ingénieur(s)','brute(s)');
|
||||
$casernei = array('grunt1.jpg','jackal.jpg','drone.jpg','elite.jpg','jackalsniper.jpg','hunter1.jpg','medecin_c.jpg','ingenieur_c.jpg','brute.jpg');
|
||||
$batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info');
|
||||
$batimeni = array('purificateurdemtalhb3.jpg','cristaloo3.png','ioniseurdn4.jpg','solaire.jpg','sanstitrevi7.jpg','oeilduprophetewj6.jpg','covielabocn5.jpg','chantierterrestrehg1.jpg','sanstitretruecolor09zn6.jpg','caserncov0ry.jpg','stockagebasement1cs10bl.jpg','ordianteur_hologramme.jpg');
|
||||
$batiment = array('Purificateur de métal','Purificateur de cristal','Ionisateur','Centrale solaire','Centrale de fusion','Oeil des prophètes','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Caserne'*/,'Entrepôt','Centrale informatique');
|
||||
$batimede = array( 'Le purificateur de métal vous fournie les matières premières pour la construction de vos infrastructures et de vos unités. Plus vous développerez vos purificateurs, plus ils produiront de ressources. Les purificateurs les plus développés ont aussi besoin de plus d\'énergie.',
|
||||
'Le purificateur de cristal vous fournie les ressources pour vos installations électroniques et pour les alliages. Le purificateur de cristal consomme deux fois plus d\'énergie que celui de métal. Tous les vaisseaux et bâtiments ont besoin de cristal pour leur bouclier ou encore leurs composants électroniques. La production augmente avec le développement de l’usine.',
|
||||
'L\'ionisateur utilise des ions négatifs et positifs d\'hydrogène pour créer une source conventionnelle de courant stable, servant à alimenter les bâtiments covenants qui nécessitent une arrivée massive de cette "ressource" pour actionner les divers éléments matériels des contrôles. La centrale de fusion à besoin de beaucoup d\'hydrogène pour fonctionner.',
|
||||
'Pour assurer l\'approvisionnement des purificateurs, des centrales solaires sont nécessaires. Plus ces installations sont développées, plus vous obtiendrez d’énergie pour vos purificateurs. Les centrales solaires sont la base de l\'approvisionnement pour votre planète en énergie. Elles sont composées d’un recueilleur sur le haut de sa structure qui capte en grandes quantités l’énergie solaire.',
|
||||
'La centrale à fusion vous permet de créer l’énergie nécessaire à vos purificateurs. Elles est constitué d’un réacteur à fusion qui en tournant produit de l’énergie. Sa production reste nettement inférieure à celle d’une centrale solaire.',
|
||||
'Les grands prophètes ont partagé leur savoir pour construire ces structures qui permettent de repérer les éléments s’approchants de votre planète. Le système est constitué de deux grands arcs qui envoient des signaux électriques dans l’espace et captent ceux qui reviennent présageant ainsi l’arrivée d’un vaisseau.',
|
||||
'Le centre de recherches, l\'un des bâtiments les plus importants de votre colonie, vous permet de vous accaparer des technologies aliens aujourd’hui disparues ou des technologies en cours de développement dans d’autres factions. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre d\'étude des artefacts et des technologies.',
|
||||
'Le chantier terrestre vous permet de construire tous les véhicules atmosphériques du type ghosts, spectres ou autres. Il permet ainsi à vos armées d’accéder plus rapidement à un endroit et d’avoir un avantage avec l’armement de ces véhicules.',
|
||||
'Ce bâtiment permet la création de toutes vos unités spatiales ou volantes. La force des covenants a souvent été due à ses grandes avancées technologiques en matière d’aéronautique. Un grand chantier spatial permet de créer des unités de plus en plus fortes et de surcroît de les créer de plus en plus rapidement.',
|
||||
'Le Temple de la Guerre vous permet de créer l’élite des forces d’infanterie. Des soldats y sont fanatisés puis entraînés au maniement des armes et à la stratégie militaire. Plus vous développez le temple, plus la vitesse de production sera rapide.',
|
||||
'Les ressources qui ne sont pas encore traitées sont mises en stock dans ces entrepôts géants. Un entrepôt plus grand permet le stockage d\'une plus grande quantité de ressources. Lorsque l’entrepôt est plein, l\'extraction est stoppée. Il est grandement conseillé de développer ce genre d’infrastructure.',
|
||||
'La centrale informatique est le coeur de votre planète, le cerveau de votre territoire, analysant chaque particule détectée avec grand soin. Plus votre centrale est améliorée, plus rapidement et aisément les données seront traitées.');
|
||||
$technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'énergie','Réacteur à antigravité','Réacteur à fusion','Réacteur à fusion Forerunner','Médecine','Commandement militaire',0);
|
||||
$technode = array( 'L’informatique vous permet de traiter les informations de façon très rapide réduisant ainsi les temps de réactions qui dans les combats peuvent s’avérer fatales.',
|
||||
'La détection est cruciale pour préserver sa flotte et ses planètes. Développer cette technologie vous permet de construire une base « œil des prophètes » qui repèrera les vaisseaux s’approchant de votre planète.',
|
||||
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat démuni face aux assauts féroces adverses ? Cette technologie vous permettra de rechercher de nouveaux systèmes d\'armements afin de rendre vos outils de guerre plus précis et mortels.',
|
||||
'Le bouclier est un champ de force qui entoure vos vaisseaux et les protège. Ainsi il permet à vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'avérant peut être décisif dans l’issue de la bataille.',
|
||||
'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et vaisseaux ; vos chercheurs vous permettront également d\'accéder à de nouveaux types d\'énergies, beaucoup plus intéressants.',
|
||||
'Les réacteurs à antigravité sont les moteurs basiques covenant. Ils utilisent une technologie complexe projetant des particules quantiques créant un champ gravitationnel inverse annulant ainsi la gravité présente. Le principe fonctionne également dans l\'espace puisque l\'absence de gravité dans l\'espace, sans compter les étoiles et les autres anomalies spatiales, permet une projection plus puissante du champ.',
|
||||
'Après la combustion, voici la fusion. Ce type de réacteur est beaucoup plus puissant que la combustion utilisée depuis déjà des centaines d\'années. Il génère une énergie cinétique de grande envergure. Aucun dirigeant politique désirant voyager dans le cosmos ne pourrait s’en passer.',
|
||||
'Les covenants ont découvert d’anciens réacteurs à fusion utilisant la technologie d’hyperpropulsion Forerunner. Cette technologie, beaucoup plus puissante que le réacteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra précis. Ce type de réacteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.',
|
||||
'La médecine vous permet d’avoir moins de pertes au combat et ainsi d’avoir une force de frappe qui résiste plus longtemps. Au lieu de laisser mourir les soldats blessés, le médecin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.',
|
||||
'En tant que général, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en matière de stratégie, vous montrer toujours plus rusé que votre impitoyable adversaire, aussi feriez-vous bien d\'étudier de nouvelles tactiques de combat pour vous assurer une franche victoire.');
|
||||
$technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg');
|
||||
$nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','séraphin(s)','frégate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
|
||||
$nomvaisi = array('cargosparabola.jpg','cargosladen.jpg','coviecolobv3.jpg','sonde_despionnage1.jpg','charognard.jpg','chasseurlourd7id.jpg','croiseur8er.jpg','fregate2ky.jpg','vaisseaudebataille9na.jpg','pv.jpg','station1.jpg','citecovenant.jpg');
|
||||
$nomvaisn = array('Cargos de classe Inquisitor','Cargos de classe Interdictor','Vaisseau de colonisation de classe Returning','Sonde de reconnaissance de classe Perception','Charognard','Séraphin','Frégate','Croiseur de classe CCS','Croiseur de classe Reverence','Porte vaisseaux','Station orbitale covenant','Super porte vaisseaux');
|
||||
$nomvaisd = array( 'Les cargos Inquisitor sont la base du transport de troupes et de ressources covenantes, capables de transporter un grand nombre de ressources sur une grande distance. Pratiquement sans armement, le cargo est sans défense et nécessite une défense rapprochée pour les trajets de grande distance.',
|
||||
'Les cargos Interdictor sont une évolution du transport de classe Inquisitor. Ayant une capacité de transport nettement supérieure à sa version précédente. Ce transport, quoique plus récent et disposant d\'un plus grand fret, dispose du même genre de défense que le modèle antérieur, une escorte est donc fortement recommandée lors de l\'utilisation de celui-ci.',
|
||||
'Tout comme les humains, les covenants ont besoins d\'espace pour étendre leur empire et c\'est pourquoi ces vaisseaux ont été pensés et conçus. Capable de transformer la nature même d\'une planète en très peu de temps, ce vaisseau est essentiel au développement de la société covenante.',
|
||||
'Cette sonde de reconnaissance covenante est largement utilisée lorsqu\'il est trop dangereux d\'envoyer un vaisseau. Sa fonction consiste à rassembler des données sur les vaisseaux ou encore sur une planète dans un système planétaire.',
|
||||
'Chaque bataille amène des pertes des 2 côtés, et ce vaisseau est conçu pour en tirer tous les bénéfices. Le Charognard, en retrait de la flotte principale, ramasse ce qu\'il reste des vaisseaux détruits et les ramène à sa planète d\'origine où ces "déchets" pourront être utilisés pour produire des matières premières.',
|
||||
'Le plus puissant et probablement le plus craint de tous les vaisseaux Covenants. Le Séraphin est le principal vaisseau offensif dans l’espace et peut être employé comme bombardier aérien. Le Séraphin est d\'environ trois fois la taille d\'un Banshee, il possède plusieurs canons de plasma qu\'il utilise lors des engagements aériens pour éliminer des opposants de type LongsWord et Pélican.',
|
||||
'La frégate covenante est un vaisseau de tonnage moyen composant majoritairement les flottes habituelles. Équipée de lasers à impulsion et de lanceurs de torpilles au plasma latéraux, elle possède ainsi une puissance de feu raisonnable. Sa coque est aussi protégée par un bouclier énergétique la rendant beaucoup plus difficile à détruire.',
|
||||
'Ce vaisseau redoutable et titanesque sème sans le moindre doute la terreur chez l\'ennemi. Armé d\'un bout à l\'autre de lasers à impulsion, de torpilles au plasma et de bien d\'autres armes, ce croiseur est une arme extraordinaire à ne jamais sous estimer.',
|
||||
'Un des plus grands vaisseaux de combat covenant, mesurant 3000 mètres. Équipé de deux canons à projection énergétique et de sept lanceurs de torpilles, il est d\'une puissance extraordinaire. Le seul problème résidant dans le fait que son équipement demande une capacité d\'énergie phénoménale.',
|
||||
'Comme son nom l\'indique, son principal rôle est de transporter des chasseurs Seraphins, des Spirits ou d\'autres vaisseaux de taille similaire. Armé de quelques lasers à impulsion, le porte vaisseau reste un vaisseau de support plutôt qu\'un vaisseau de confrontation directe. Hypothétiquement parlant, sa capacité de tir est légèrement supérieure à celui d\'une corvette.',
|
||||
'La station spatiale covenante, construite a même un astéroide, possède un canon plasma d\'une centaine de mettre de long projetant une sphère de plasma atteignant une chaleur proche de celle du coeur d\'un soleil. Également équipé de tourelle automatique pour les chasseurs d\'efficacité moyenne, se poste orbital covenant est une arme défensive terrifiante pour toute adversaire de haut niveau ou non.',
|
||||
'Le vaisseau ultime de la flotte covenante, long de plus de 5400 mètres. Ce vaisseau est capable de transporter des quantités de chasseurs hors du commun. Armé de projecteurs énergétique et de laser à impulsion, ce vaisseau est le plus puissant après la station spatiale.');
|
||||
$nomterra = array('banshee(s)','spirit(s)','phantom','boarding craft','ghost(s)','shadow','spectre(s)','appartition(s)','shade','strong shade','tourelle(s) à barreau de combustible','canon(s) à plasma','lanceur(s) de torpilles plasma');
|
||||
$nomterrn = array('Banshees', 'Spirit', 'Phantom', 'Boarding craft', 'Ghost', 'Shadow', 'Spectre', 'Appartition', 'Shade', 'Strong shade', 'Tourelle à barreau de combustible', 'Canon à plasma', 'Lanceur de torpilles plasma');
|
||||
$nomterri = array('bansheeqp0.jpg', 'spirit1.jpg', 'phantomfu2.jpg', 'boardingcraft.jpg', 'ghostic1.jpg', 'shadow.jpg', 'spectre.jpg', 'wraith.jpg', 'shade.jpg', 'strongshade.jpg', 'tourellebarreau.jpg', 'tourelle.jpg', 'lanceur_torpilles.jpg');
|
||||
$nomterde = array( 'Rapide et maniable, le Banshee est un formidable véhicule d\'assaut aérien, efficacement blindé contre les armes à feu légères mais ne résistant cependant pas aux armes plus lourdes. Le canon à combustible dont il est équipé en fait un bombardier dangereux tout autant qu\'un chasseur rapide. Le Banshee a la possibilité de faire des tonneaux et des vrilles, ce qui serait impossible pour des véhicules à l\'aérodynamique conventionnelle.',
|
||||
'Le spirit est une navette de transport de troupes terrestre. De capacité moyenne, il peut transporter un petit contingent armé dans les zones les plus repoussées des planètes. Le spirit est équipé d\'une tourelle de type shade de puissance moyenne, qui permet de maintenir les troupes ennemis à distance jusqu\'à ce que le largage des troupes soit effectué.<br />Malheureusement, un manque d\'espace empêche l\'installation de générateur énergétique plus puissant qui pourrait supporter des boucliers standards ou même de faible intensité.',
|
||||
'Le Phantom est un vaisseau beaucoup plus fiable que le vaisseau de débarquement « Spirit ». Il possède trois tourelles plasma particulièrement puissantes et peut laisser tomber ses occupants à terre via un ascenseur gravitationnel sans devoir se poser. Le Phantom a un blindage beaucoup plus résistant que son prédécesseur, une puissance de feu accrue et peut transporter tout type d’équipage comme des hunters.<br />Le Phantom est assez nouveau dans l\'arsenal Covenant mais est rapidement devenu une crainte car son bombardement de plasma peut éliminer un bon nombre de marines.',
|
||||
'~#DESCRIPTION MANQUANTE#~ Boarding craft',
|
||||
'Le ghost est un véhicule de reconnaissance et d\'attaque rapide déployée par les Covenants dans tout combat terrestre. Cet engin, très souvent piloté par les Elites, est très maniable. Il est capable de tirer des doubles décharges de plasma surchauffées d\'une puissance de 100-250 kW. Le ghost peut également effectuer des pointes de vitesse soutenues.',
|
||||
'Le Shadow est le principal moyen de transport terrestre des troupes covenantes. Ce véhicule peut accueillir un pilote, un artilleur et jusqu\'à huit passagers en fonction du type de Covenants qui monte à bord. Il est en outre équipé pour transporter des Elites, des Brutes, des Grunts ou des Jackals. Si le Shadow est équipé d\'un canon à plasma, sa vocation reste le déploiement de troupes.',
|
||||
'Le Spectre est un transport multi troupes blindé de petite taille. Quoique relativement lent, il est tout à fait maniable et se meut avec aisance dans les espaces confinés. Ses principales faiblesses étant son manque de vitesse et d\'accélération, ses occupants demeurent tout de même relativement exposés. Le canon à plasma monté à l\'arrière représente un grand danger pour l\'ennemi et le véhicule offre par ailleurs diverses positions de tir.',
|
||||
'Lent, massif et constituant une cible de taille, ce véhicule n\'en demeure pas moins le blindé covenant le plus destructeur. Ce géant de métal est bien protégé. Le tir de couverture qu\'il peut effectuer grâce à ses mortiers à plasma redoutables en fait un ennemi incroyablement dangereux. Le fait qu\'il soit piloté par une seule personne qui contrôle le véhicule et le système d\'armement limite quelque peu son champ de manoeuvre.',
|
||||
'Les tourelles shades sont des canons stationnaires énergétiques covenant composés de deux parties, la première étant une base stable à trois pieds pour la stabilité de l’appareil, la deuxième, un siège où le canon est fixé retenu par un champ gravitationnel artificiel. Ce canon lorsqu’il tire, envoie 3 « éclairs » relativement lents et d’efficacité moyenne.',
|
||||
'Cette tourelle est une version améliorée de la shade standard. Dans les modifications de la tourelle, le système d’accélération magnétique a été révisé pour le rendre plus performant, aboutissant à des rayons plus rapides. Également, un bouclier a été ajouté à l’avant, protégeant ainsi l’utilisateur des attaques aux armes à projectiles de petit et moyen calibre pendant une période de quelques secondes lors de feux nourris.',
|
||||
'La tourelle à barreau de combustible est une version fixe de ceux des hunters avec un système de visé amélioré et de condensateur ionique permettent de tirer trois rafales à la suite sans surcharger les relais du générateur. De puissance moyenne, elle est capable de détruire facilement des warthogs et autres véhicules légers avec une facilité hors norme.',
|
||||
'Le canon à plasma n’a pas besoin de canonnier pour tirer puisque équipé d’un système de visée automatisé, il utilise une technologie d’intelligence artificielle rudimentaire pour ensuite envoyer un projectile de plasma surchauffé à haute vitesse carbonisant tout sur son passage.',
|
||||
'Utilisant un principe similaire de la tourelle à plasma, le lanceur de torpilles plasma utilise un condensateur de matière pour condenser le flux de plasma surchauffé en une masse de destruction pure. Ce système est le système de défense terrestre le plus évolué jamais construit. Son défaut majeur reste sa cadence de tire lente, limitant sa défense face à de multiples adversaires.');
|
||||
}
|
||||
elseif ($auth_level >= 6 && md5($race) == '34c19b21bd4a3dda389e767d32fe9779') {
|
||||
$ressourc = array('Métal','Cristal','Hydrogène','Energie');
|
||||
$casernen = array('Constructor','Sentinelle Légère','Sentinelle Lourde','Enforcer Léger','Enforcer Lourd','Monitor','~#PAS DE NOM#~ Médecin','~#PAS DE NOM#~ Ingénieur','~#PAS DE NOM#~ Brute');
|
||||
$casernde = array( 'Les Constructors sont des minis sentinelles capable d\'effectuer certaine reparation mineur, ils peuvent réparés les sentinelles endommager ainsi que les chasseurs légers.',
|
||||
'~#DESCRIPTION MANQUANTE#~ Sentinelle Légère',
|
||||
'~#DESCRIPTION MANQUANTE#~ Sentinelle Lourde',
|
||||
'Les Enforcers Léger, sont des sentinelles massifs qui servent à contenir des grosses infections Floods. Ils sont protégés par un bouclier d\'énergie, mais il semble seulement protéger que l\'avant de la machine. Il est armé de faisceaux laser à impulsion rapides.',
|
||||
'Les Enforcers Lourd, sont des sentinelles massifs qui servent à contenir des grosses infections Floods. Ils sont protégés par un bouclier d\'énergie qui recouvre toute la machine. Il est armé de mortiers.',
|
||||
'Les monitors ont été placés sur les mondes-forteresse par les Forruner pour entretenir et maintenir leurs systèmes, et pour s\'assurer que les Floods reste emprisonné.',
|
||||
'~#DESCRIPTION MANQUANTE#~ ',
|
||||
'~#DESCRIPTION MANQUANTE#~ ',
|
||||
'~#DESCRIPTION MANQUANTE#~ ');
|
||||
$casernea = array('constructor(s)','sentinelle(s) légère(s)','sentinelle(s) lourde(s)','enforcer(s) léger(s)','enforcer(s) lourd(s)','monitor(s)','médecin(s)','ingénieur(s)','brute(s)');
|
||||
$casernei = array('scoutma3.jpg','sentinellelegerecn4.jpg','nanw9.jpg','defenseurlegerhs8.jpg','defenseurlourdhr3.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg');
|
||||
$batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info');
|
||||
$batimeni = array('generateurdemetalsg0.jpg','generateurdecristalmh5.jpg','generateurdhydrognedh3.jpg','generateurdenergievb7.jpg','generateurafusiondb2.jpg',0,'centrederecherchegu9.jpg','chantierterrestrehg1.jpg','chantierspatialff8.jpg',0,'nanw9.jpg',0);
|
||||
$batiment = array('Générateur de Métal','Générateur de Cristal','Générateur d\'Hydrogène','Générateur d\'Energie',0,0,'Centre de recherches','Chantier terrestre','Chantier spatial',0,'Entrepôt',0);
|
||||
$batimede = array( 'Le générateur de métal vous fournie les matières premières pour la construction de vos infrastructures et de vos unités. Plus vous développerez vos générateurs, plus uls vous rapportera. Les générateurs plus développés ont aussi besoin de plus d\'énergie.',
|
||||
'Le générateur de cristal vous fourni les ressources pour vos installations électroniques et pour les alliages. Le générateur consomme deux fois plus d\'énergie que celui du métal. Tous les vaisseaux et bâtiments ont besoin de cristal pour leur bouclier ou encore leur composant électronique. La production augmente avec le développement du générateur ainsi que sa consommation.',
|
||||
'L\'hydrogène n\'est pas directement disponible dans la nature. On doit le produire : par electrolyse de l\'eau ce qui consiste à faire passer un courant électrique dans de l\'eau pour que les molécules se séparent et forme du dihydrogène. Mais cette technique utilise de trop grande quantitée d\'énergie.',
|
||||
'Pour assurer l\'approvisionnement des générateurs, des générateurs énergie géantes sont nécessaires. Plus ces installations sont développées, plus vous obtiendrez d’énergie pour vos générateurs. Les générateurs d\'énergies sont la base de l\'approvisionnement pour votre planète en énergie.',
|
||||
0,
|
||||
0,
|
||||
'Le centre de recherche est nécessaire pour développer de nouvelles technologies. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre de recherche.',
|
||||
'~#DESCRIPTION MANQUANTE#~ Chantier terrestre',
|
||||
'Le chantier spatial vous permet de construire des vaisseaux, de l’infanterie et vos installations de défense. Plus le chantier est grand, plus la construction de vaisseaux, le recrutement de l’infanterie et la création d’installations de défense est rapide.',
|
||||
0,
|
||||
'Les ressources qui ne sont pas encore traitées sont mises en stock dans ces entrepôts géants. Un entrepôt plus grand permet le stockage d\'une plus grande quantité de ressources. Lorsque l’entrepôt est plein, l\'extraction est stoppée. Il est grandement conseillé de développer ce genre d’infrastructure.',
|
||||
0);
|
||||
$technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'énergie','Réacteur à antigravité','Réacteur à fusion','Réacteur à fusion Forruner','Médecine','Commandement militaire',0);
|
||||
$technode = array( 'L’informatique vous permet de traiter les informations de façon très rapide réduisant ainsi les temps de réactions qui dans les combats peuvent s’avérer fatales.',
|
||||
'La détection est cruciale pour préserver sa flotte et ses planètes. Développer cette technologie vous permet de construire une base « œil des prophètes » qui repèrera les vaisseaux s’approchant de votre planète.',
|
||||
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat démuni face aux assauts féroces adverses ? Cette technologie vous permettra de rechercher de nouveaux systèmes d\'armements afin de rendre vos outils de guerre plus précis et mortels.',
|
||||
'Le bouclier est un champ de force qui entoure vos vaisseaux et les protège. Ainsi il permet à vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'avérant peut être décisif dans l’issue de la bataille.',
|
||||
'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et vaisseaux ; vos chercheurs vous permettront également d\'accéder à de nouveaux types d\'énergies, beaucoup plus intéressants.',
|
||||
'Les réacteurs à antigravité sont les moteurs basiques covenant. Ils utilisent une technologie complexe projetant des particules quantiques créant un champ gravitationnel inverse annulant ainsi la gravité présente. Le principe fonctionne également dans l\'espace puisque l\'absence de gravité dans l\'espace, sans compter les étoiles et les autres anomalies spatiales, permet une projection plus puissante du champ.',
|
||||
'Après la combustion, voici la fusion. Ce type de réacteur est beaucoup plus puissant que la combustion utilisée depuis déjà des centaines d\'années. Il génère une énergie cinétique de grande envergure. Aucun dirigeant politique désirant voyager dans le cosmos ne pourrait s’en passer.',
|
||||
'Les covenants ont découvert d’anciens réacteurs à fusion utilisant la technologie d’hyperpropulsion Forruner. Cette technologie, beaucoup plus puissante que le réacteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra précis. Ce type de réacteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.',
|
||||
'La médecine vous permet d’avoir moins de pertes au combat et ainsi d’avoir une force de frappe qui résiste plus longtemps. Au lieu de laisser mourir les soldats blessés, le médecin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.',
|
||||
'En tant que général, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en matière de stratégie, vous montrer toujours plus rusé que votre impitoyable adversaire, aussi feriez-vous bien d\'étudier de nouvelles tactiques de combat pour vous assurer une franche victoire.');
|
||||
$technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg');
|
||||
$nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','séraphin(s)','frégate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
|
||||
$nomvaisi = array('nanw9.jpg','nanw9.jpg','nanw9.jpg',0,'nanw9.jpg','croiseurforrunerns4.jpg','superdestroyerwa6.jpg','nanw9.jpg','chasseurlourdfk8.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg');
|
||||
$nomvaisn = array('Transporteur Leger','Transporteur Lourd','Colonisateur',0,'Recycleur','Croiseur Forruner','Super-Destroyer','Chasseur Leger','Chasseur Lourd','Porte-Vaisseaux','Station orbitale','Super porte-vaisseaux');
|
||||
$nomvaisd = array( '~#DESCRIPTION MANQUANTE#~ Transporteur Leger',
|
||||
'~#DESCRIPTION MANQUANTE#~ Transporteur Lourd',
|
||||
'~#DESCRIPTION MANQUANTE#~ Colonisateur',
|
||||
0,
|
||||
'~#DESCRIPTION MANQUANTE#~ Recycleur',
|
||||
'~#DESCRIPTION MANQUANTE#~ Croiseur Forruner',
|
||||
'~#DESCRIPTION MANQUANTE#~ Super-Destroyer',
|
||||
'~#DESCRIPTION MANQUANTE#~ Chasseur Leger',
|
||||
'~#DESCRIPTION MANQUANTE#~ Chasseur Lourd',
|
||||
'~#DESCRIPTION MANQUANTE#~ Porte-Vaisseaux',
|
||||
'~#DESCRIPTION MANQUANTE#~ Station spatiale',
|
||||
'~#DESCRIPTION MANQUANTE#~ Super porte-Vaisseaux');
|
||||
$nomterra = array(0,0,0,0,0,0,0,0,'tour(s) à plasma','tour(s) ion','canon(s) Orbital','drone(s)','station(s) de defense');
|
||||
$nomterri = array(0,0,0,0,0,0,0,0,'tourplasmasl4.jpg','tourioniquegr6.jpg','nanw9.jpg','nanw9.jpg','stationdedefensent8.jpg');
|
||||
$nomterrn = array(0,0,0,0,0,0,0,0,'Tour à plasma','Tour Ion','Canon Orbital','Drone','Station de defense');
|
||||
$nomterde = array( 0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
'~#DESCRIPTION MANQUANTE#~ Tour à plasma',
|
||||
'~#DESCRIPTION MANQUANTE#~ Tour Ion',
|
||||
'~#DESCRIPTION MANQUANTE#~ Canon Orbital',
|
||||
'~#DESCRIPTION MANQUANTE#~ Drone',
|
||||
'~#DESCRIPTION MANQUANTE#~ Station de defense');
|
||||
}
|
||||
else {
|
||||
$ressourc = array('Métal','Cristal','Hydrogène','Energie');
|
||||
$casernen = array('Marine','Fusiller','Grenadier','T.C.A.O.','Sniper','Spartan','Médecin','Ingénieur','Soldat exo squellette');
|
||||
$casernde = array( 'Les marines constituent l\'infanterie de base de vos forces militaires. De faible puissance et de résistance plutôt médiocre, ils rivalisent avec les unités covenants standard. Ils sont équipés d\'une armure de kevlar renforcée et d\'un MA5B.',
|
||||
'Les fusillers sont équipés de fusils d\'assaut avec zoom intégré. Plus puissants que les marines standards, ils peuvent rivaliser avec des escouades entières de grunts dirigées par des élites hauts gradés.',
|
||||
'Les grenadiers sont les spécialistes en explosifs du CSNU sur le terrain. Ils peuvent détruire les véhicules légers grâce à leurs grenades et leurs lances missiles.',
|
||||
'Les TCAO sont des soldats d\'assauts largués depuis l\'espace directement sur les champs de batailles grâce à des modules spéciaux. Ces soldats sont surentraînés et très chevronnés, risquant leur vie à chaque instant en raison des sauts orbitaux qui font atteindre une chaleur extrême dans le module.',
|
||||
'Les snipers sont dotés de fusils de précision SA 2M capable de descendre un covenant à plusieurs centaines de mètres grâce à son zoom maximum de 10x. Grande portée de tir mais à courte portée, ils sont inutiles.',
|
||||
'Les spartans sont les unités d\'infanterie militaires les plus évoluées militairement du CSNU mais également des Covenants. Ils sont équipés d\'une armure de type Mjolnir améliorant leurs capacités de combat, déjà exceptionnelles grâce à leur entraînement militaire depuis leur plus jeune âge, ainsi qu\'à leurs implants cybernétiques, les rendants d\'une grande efficacité inégalée au sein de l\'infanterie.',
|
||||
'Les médecins sont sur le champ de bataille pour aider les soldats blessés par des tirs lors des affrontements. Ils peuvent réduire le nombre de morts lorsqu\'ils sont bien utilisés et ainsi peut être changer l’issue de la bataille.',
|
||||
'Les ingénieurs sont là pour réparer vos véhicules endommagés lors des affrontements. Ils peuvent réduire le nombre de vos pertes de véhicules lorsqu\'ils sont bien utilisés.',
|
||||
'Les soldats exo squelettiques possèdent des armures de combat très résistantes et d\'une puissance énorme mais contre balancée par une faible autonomie d\'énergie, une mobilité faible et d\'une discrétion auditive aussi silencieuse qu\'un char d\'assaut dans un champs de mines lotus.');
|
||||
$casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','médecin(s)','ingénieur(s)','soldat(s) exo squellette');
|
||||
$casernei = array('marines.jpg','marinehf0.jpg','grenadier.jpg','TCAO2.jpg','sniper.jpg','spartan.jpg','medecin.jpg','ingenieurs.jpg','img_na_ig.jpg');
|
||||
$batiment = array('Usine de métallurgie','Usine de cristal','Synchronisateur d\'hydrogène','Centrale solaire','Centrale énergétique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Ecole militaire'*/,'Silo de stockage','Centrale informatique');
|
||||
$batimede = array( 'Cette usine traite tous les métaux recueillis afin de produire du titanium-A ou différents types d\'alliages de qualité pour vos différentes constructions planétaires ou spatiales. Chaque niveau augmente la production de métal.',
|
||||
'L\'usine de cristal filtre les déchets récoltés avec les cristaux. Une fois séparés du reste ils sont classés par qualité par une quantité d\'appareils de haute technologie. Plus les cristaux sont purs plus ceux-ci peuvent être transformés en unités de stockage de données ou en conducteurs énergétiques de haute qualité. Plus ce bâtiment sera développé, plus vous pourrez traiter de cristaux rapidement.',
|
||||
'Ce bâtiment use de l\'eau pour la décomposer et en extraire l\'hydrogène, la base de toutes vos productions énergétiques, pour ensuite l\'acheminer dans des condensateurs ioniques afin de le rendre plus dense et par le fait même plus efficace. Chaque niveau augmente la production du synchronisateur.',
|
||||
'La centrale solaire produit l’énergie nécessaire au fonctionnement de vos usines. Elle fonctionne à partir d’une technologie Forruner qui consiste à envoyer un rayon à la verticale pour capter tous les rayons du soleil qui le croise.',
|
||||
'La centrale énergétique fonctionne avec un principe assez dépassé. En effet, l’énergie est produite par un réacteur à fusion qui en tournant produit de l’énergie comme le ferait une dynamo. Bien que ce principe fût révolutionnaire à l’époque, il fût rapidement dépassé par la centrale solaire qui permet de produire d’avantage d’énergie.',
|
||||
'Le centre de communication est un gigantesque relai de transmission envoyant des ondes entre les différents mondes connus et répertoriés de l\'univers. Grâce à lui, vous pourrez communiquer avec d\'autres administrateurs coloniaux afin de planifier ensemble des programmes d\'actions communs. Equipé d\'un radar, il vous permet de repérer les mouvements des flottes ennemies.',
|
||||
'Le centre de recherches est certainement l\'une des bâtisses les plus importantes que vous puissiez construire dans votre colonie. Vos chercheurs travailleront sans relâche aucun afin de mettre au point de nouvelles technologies vous assurant suprématie et victoire sur les champs de bataille. Chaque niveau dévellopé augmente la vitesse de recherche de vos technologies.',
|
||||
'Le chantier terrestre vous permet de construire tous les véhicules atmosphérique du type warthog ou scorpion. Il permet ainsi à vos troupes d’accéder plus rapidement à un endroit et d’avoir un avantage avec l’armement de ces véhicules.',
|
||||
'Le chantier spatial permet de construire vôtre flotte de vaisseaux spatiaux. Généralement à la limite de l’atmosphère d’une planète il ne peut cependant se déplacer et doit impérativement rester en orbite. Le chantier spatial, bien que ressemblant à une station spatial, ne peut être détruit grâce à sa position qui lui confère un camouflage total.',
|
||||
'L\'académie militaire forme les meilleurs officiers et sous-officiers de la galaxie. Ces hommes expérimentés vous aideront à choisir de meilleures stratégies défensives ou offensives ou encore même économiques face aux différentes situations qui vous seront imposées. Plus vous augmenterez le niveau de cette structure plus vos officiers seront rapides et efficaces dans leurs tâches.',
|
||||
'Comme toutes choses, vos ressources ont besoin d\'espace pour être stockées ; c\'est pourquoi ces énormes silos vous seront d\'une aide précieuse afin d\'y renfermer une grande quantité de matières premières pour toutes vos productions. Plus le niveau du silo est haut, plus il pourra contenir de ressources supplémentaires.',
|
||||
'La centrale informatique est le coeur de votre planète, le cerveau de votre territoire, analysant chaque particule détectée avec grand soin. Plus votre centrale est améliorée, plus rapidement et aisément les données seront traitées.');
|
||||
$batimend = array('mine_m','mine_c','!!','centrale_s','centrale_f','radar','recherches','chantier_terrestre','???','ecole_militaire','silo','centre_info');
|
||||
$batimeni = array('mine_m.jpg','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg');
|
||||
$technolo = array('IA','Radar','Armement','Blindage','Maitrise de l\'énergie','Réacteur à combustion','Réacteur à fusion','Réacteur à fusion de type II','Médecine','Tactiques de combats','Spartan');
|
||||
$technode = array( 'Le résultat absolu de l\'informatique. L\'IA ou Intelligence Artificielle est le résultat d\'années de travail acharné pour pouvoir en arriver à cette grande performance technique. Les IA sont des entités non biologiques dotées du pouvoir de la pensée. Développer cette technologie vous permettra non seulement de disposer d\'Intelligences Artificielles, mais de les rendre de plus en plus complexes, créatives et réactives.',
|
||||
'Ce système très ancien et usé par bien des militaires est utilisé pour la détection et l\'imagerie d\'objets faisant appel à des impulsions d\'ondes électromagnétiques à haute fréquence et sert à déterminer la position et la distance des vaisseaux. Pour chaque niveau, vous augmenterez la puissance de cette technologie et sa précision.',
|
||||
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat démuni face aux assauts féroces adverses ? Cette technologie vous permettra de rechercher de nouveaux systèmes d\'armements afin de rendre vos outils de guerre plus précis et mortels.',
|
||||
'La résistance de la coque de vos vaisseaux est plus que primordiale si vous tenez à remporter vos batailles, et encore plus avec les armes Covenantes capables de réduire en miettes même les plus résistants des vaisseaux spatiaux. C\'est la raison pour laquelle vos scientifiques, si vous leur en donnez l\'ordre, travailleront avec application à l\'élaboration de nouvelles formules pour créer des alliages métalliques les plus résistants.',
|
||||
'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations tout simplement. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et les propulseurs de vos vaisseaux.',
|
||||
'Le plus simple de tout les réacteurs, aussi vieux que le monde lui-même ! Equipés sur presque tout vos vaisseaux de base, cette technologie, certes basique, vous aidera à explorer l\'univers mais aussi, se trouvant être bien évidemment la base de la propulsion, vous permettra de découvrir de nouvelles techniques de propulsion irrémédiablement toujours plus puissantes et efficaces.',
|
||||
'Bien plus efficaces que de simples réacteurs à combustion, la fusion nucléaire est un processus où deux noyaux atomiques s\'assemblent pour former un noyau plus lourd. La fusion de noyaux légers dégage d\'énormes quantités d\'énergie provenant de l\'attraction entre les nucléons due à une forte interaction. Personne ne pourrait se passer de ce type d\'énergie lors de ses voyages dans le cosmos.',
|
||||
'Cette technologie basée sur les réacteurs Covenants utilise la force électromagnétique résultant de l\'interaction entre un courant électrique et un champ magnétique pour accélérer un gaz ionisé appelé plasma. Bien plus efficace que tous les moyens de propulsions possibles, cette technologie révolutionnaire, très coûteuse, est un moyen efficace de parcourir de grandes distances en peu de temps.',
|
||||
'Depuis l\'aube des temps, chaque être vivant et pensant n\'a jamais cessé de chercher de nouvelles solutions en dévellopant les sciences médicales pour tenter d\'échapper à la mort et aux épidémies qui s\'abbatent sur lui. Seulement, aujourd\'hui, ce ne sont plus les maladies qui importent, mais plutot les blessures de guerre. Plus votre médecine sera éclatante, plus vos hommes de soins connaîtront de choses pour soigner vos blessés.',
|
||||
'En tant que général, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en matière de stratégie, vous montrer toujours plus rusé que votre impitoyable adversaire, aussi feriez-vous bien d\'étudier de nouvelles tactiques de combat pour vous assurer une franche victoire.',
|
||||
'Ces formidables combattants constituent l\'élite de vos forces terrestres. Entraînés au maniement des armes, aux tactiques militaires et au combat de groupe depuis la naissance, ils sont pratiquement invincibles sur les champs de bataille face aux troupes covenantes. Les Spartans ont également subis plusieurs séries de modifications biologiques afin d\'améliorer leurs capacités physiques.');
|
||||
$technoli = array('IA4.jpg','radar7zr.jpg','arme.png','blindage.jpg','plasma4yl.jpg','reacteuracombustion.jpg','reacteurfusiontype1al5.jpg','reacteurfusiontype2nn6.jpg','medecin1.jpg','tactique.jpg','armuremc8ij.jpg');
|
||||
$nomvaisn = array('Cargos de classe Parabola','Cargos de classe Laden','Vaisseaux de colonisation de classe Odyssey','Drones d’espionnage de classe Clarion','Recycleurs de classe Minotaur','C709 Longsword Interceptor','Frégate','Croiseurs de classe Halcyon','Croiseurs de classe Marathon','Porte vaisseaux','Station orbitale','Super porte-vaisseaux');
|
||||
$nomvaisd = array( 'Ces cargos de taille conséquente peuvent transporter assez de ressources et de nourriture pour nourrir une petite ville. Ils sont rapides, très manœuvrables mais peu résistants, ce qui est en fait des proies faciles pour les chasseurs ennemis.',
|
||||
'Ces cargos de taille massive permettent le transport d’une énorme quantité de ressources. Ils sont plus résistants que leurs homologues de classe Parabola, mais sont néanmoins les cibles prioritaires des chasseurs ennemis visant à faire le plus de pertes dans le camp adverse.',
|
||||
'Les vaisseaux de colonisation sont de vraies minis villes volantes ; ils contiennent la majeure partie des corps d’états de votre planète mère afin d’être le plus autonome lorsque que vous colonisez de nouvelles planètes.',
|
||||
'Drones extrêmement rapides et manœuvrables permettant la surveillance et l’espionnage des planètes alentours avec un risque moins élevé de repérage qu’avec un vaisseau furtif standard. Ils sont utilisés lors de l’espionnage de planètes ennemies et sont très fragiles, si bien que lorsqu’ils traversent un champ de débris, ils sont réduits en de vulgaires morceaux de métal.',
|
||||
'Les guerres sont de plus en plus nombreuses et les pertes de plus en plus grandes laissant à chaque fois des champs de débris immenses limitant les routes des voies commerciales. Des recycleurs ont donc été créés afin de déblayer ces zones et de vous faire profiter de ces ressources gratuites. Lors du voyage de retour, le recycleur transforme les débris pour vous les redonner sous forme de ressources primaires.',
|
||||
'Vaisseau orbital et atmosphérique lourd, apte au combat spatial, atmosphérique, et au bombardement lourd sur des positions stratégiques. Ces vaisseaux sont capable de bombarder une vaste position adverse, grâce à leurs bombes au Napalm, mais sont aussi capables de cibler précisément leurs cibles et de les détruire grâce à leurs nombreux missiles air-air air-sol.',
|
||||
'Cette classe de vaisseau est la plus répandue dans le CSNU. Ces vaisseaux sont très manœuvrables du fait de leur petite taille, mais sont aussi très faibles, à cause de leur blindage et de leur armement moindre. Ces vaisseaux sont peu coûteux mais également peu efficaces et sont surtout utilisés pour des patrouilles. Ils forment les éléments principaux des différentes flottes du CSNU. ',
|
||||
'Ces croiseurs sont des vaisseaux d’attaque, dépassés technologiquement, très peu répandus, très coûteux mais résistants : leur architecture interne leur permet de résister à de nombreux tirs de plasma. Cette architecture complexe à produire et à maintenir en état, en font des vaisseaux extrêmement rares et chers. Ils ont été très récemment remis à neuf et améliorés, avec un tout nouvel armement.',
|
||||
'Ces grands vaisseaux (2 fois et demie la longueur d’une frégate), sont des descendants de la lignée des croiseurs Halcyon. Ces vaisseaux ont une très grande puissance de feu (1 CAM lourd), un fort blindage (5 mètres 50 de Titane-A), et sont très rapides. Ils sont assez peu communs, mais restent des vaisseaux d’attaque très redoutables : ils peuvent encaisser de nombreux tirs de plasma avant de succomber.',
|
||||
'Ces immenses vaisseaux sont capables de transporter bon nombre de Longswords, d’Albatross, et tout autres types d’unités. Ces vaisseaux leurs permettent de se défendre contre une éventuelle attaque de chasseurs ennemis, mais sont également très lourdement armés. Ils sont usités lors d’attaques massives de planètes nécessitant un fort appui aérien et une très grosse puissance de feu. ',
|
||||
'Les station orbitales humaines sont basées sur un même modèle : de multiples DCA légères et lourdes pour les chasseurs, des missiles ARCHERS et un CAM standard capable de pénétrer la plupart des boucliers stellaires. Cette base orbitale est très bien équipée et est considérée comme la défense principale des planètes du CSNU.',
|
||||
'Ces vaisseaux sont sont beaucoup plus chers du fait de leur meilleur armement, blindage et importante capacité de transport. Ces vaisseaux sont très peu vus sur le terrain, leur rôle principal est de déployer des Longswords afin de fournir aux vaisseaux alliés un appui orbital. Ils font partis des plus puissants vaisseaux du CSNU. Ils sont capables de transporter bon nombre d’unités terrestres et aériennes.');
|
||||
$nomvaisa = array('cargos de classe Parabola','cargos de classe Laden','vaisseau(x) de colonisation de classe Odyssey','drone(s) d\'espionnage de classe Clarion','recycleur(s) de classe Minotaur','C709 Longsword Interceptor','Frégates','croiseur(s) de classe Halcyon','croiseur(s) de classe Marathon','porte vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
|
||||
$nomvaisi = array('csnucargoparabola2mc9.jpg','csnucargoladen2al8.jpg','colonisation.jpg','drone_clarion.jpg','img_na_ig.jpg','longsword.jpg','fregatewz5.jpg','croiseurclassealcyon130om6.jpg','croiseurmarathonke3.jpg','csnuportevaisseauxgy3.jpg','station.jpg','csnusuperportevaisseauxrw4.jpg');
|
||||
$nomterra = array('sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','mitrailleuse(s) automatique M247 GP','DCA légère(s)','DCA lourde(s)','canon(s) Gauss','lanceur(s) de missiles');
|
||||
$nomterrn = array('Sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','Mitrailleuse automatique M247 GP','DCA légère','DCA lourde','Canon Gauss','Lanceur de missiles');
|
||||
$nomterde = array( 'Véhicule à propulsion verticale permettant des attaques extrêmement rapides et destructrices grâce à ses six tubes lance-missiles, ses deux mitrailleuses légères, et sa mitrailleuse lourde frontale. Ces vaisseaux d’assaut rapide sont de véritables broyeurs de tôle grâce à leurs 6 tubes lance-missiles et sont capables de détruire des véhicules et des positions fortement blindées.',
|
||||
'Véhicule aérien de transport léger permettant le transport rapide de troupes à des endroits stratégiques tel un warthog ou un scorpion. Ils sont la base des renforts terrestres et permettent l’acheminement de troupes et de munitions rapidement.',
|
||||
'Vaisseau suborbital très rapide apte tant au combat aérien rapproché qu’au bombardement ciblé. Ces bombardiers ont un pointeur laser qui leur permet de viser au mieux les cibles ennemies, qu\'elles soient au sol ou aériennes. Ils sont néanmoins capables de combattre en combat aérien rapproché grâce à leurs missiles thermo guidés et sont utilisés lors de bombardements de cibles mineures.',
|
||||
'Véhicule aérien de transport lourd permettant le transport en masse de troupes ou de véhicules tels que des warthogs ou bien une paire de scorpions vers des zones de largage. Ces véhicules de soutien aérien lourd sont surtout utilisés lors d’offensives nécessitant un déploiement en masse d’unités blindées et de munitions au plus près des lignes adverses.',
|
||||
'Véhicule d’attaque léger permettant des assauts rapides et efficaces, ainsi que le transport léger de troupes. Ces véhicules sont la base des véhicules terrestres du CSNU.',
|
||||
'Véhicule léger équipé d’un canon à accélération magnétique (CAM), très efficace contre du personnel, des véhicules moyennement blindés, ou bien contre des véhicules aériens légers. Les Warthog M12G1 sont très répandus et surtout utilisés lors d\'offensives sur des cibles disposant d’un appui aérien ou terrestre léger.',
|
||||
'Véhicule léger, armé d’un lance-missiles anti-véhicule permettant des assauts rapides contre des véhicules blindés ou contre des positions fortifiées. Ils sont surtout utilisés en cas d’attaques de postes avancés.',
|
||||
'Tank blindé anti-véhicules. Permet l’attaque de cibles fortifiées grâce à ses balles perforantes de gros calibre. Ces tanks sont utilisés lors d’assauts massifs sur des bases fortifiées et vitales à l’ennemi.',
|
||||
'La mitrailleuse M247 est une arme de calibre moyen envoyant des balles de calibre 30 à une cadence de tir de 6 balles par seconde. Généralement positionnée dans des endroits fixes, cette tourelle, efficace contre l\'infanterie et les véhicules légers de petite taille est de précision moyenne suffisante pour éliminer une menace de quelques soldats covenants.',
|
||||
'Les DCA légères sont des canons anti-aérien de puissance moyenne mais de cadence de tir et de calibre de munitions à tête explosive élevée permettant de détruire la plupart des chasseurs légers avec aisance. Ce modèle est équipé d\'un emplacement spécial lui permettant de tirer également sur des cibles au sol.',
|
||||
'Les DCA lourdes sont quasi-similaires aux légères mais possèdent tout de même une différence au niveau du calibre des balles qui, plus élevé avec une tête explosif supérieure est comparable à une explosion de mine lotus. Il a en contre partie une capacité de tir plus limitée question cadence et une quantité de munitions moindre dans chaque chargeur.',
|
||||
'Le canon gauss est l\'équivalent du Super CAM mais en version miniature tirant des projectiles à haute densité et à grande vitesse sur ses cibles. Il est capable, en outre, de détruire des véhicules à blindage lourd tel des wraith\'s covenants, véritables chars d\'assaut à longue portée. Malheureusement, il est moins efficace contre l\'infanterie dû à sa cadence de tir plutôt faible et sa précision moindre.',
|
||||
'Les lance-missiles du CSNU sont équipés de missiles balistiques hautement explosifs capables de réduire aisément en miettes les chars covenants ou les chasseurs Séraphins. Ce lance-missiles, une fois ses salves tirées, nécessite plusieures minutes de réarmement pour être de nouveau opérationnel.');
|
||||
$nomterri = array('csnusparrowhawkkp4.jpg','pelican.jpg','csnushortswordad3.jpg','albatross.jpg','warthog-vrl.jpg','M12G1_LAAV_Warthog.jpg','M12A1_LAAV_Warthog.jpg','scorpionN.jpg','tourelle_fixe.jpg','dca_legere.jpg','dca_lourde.jpg','tourelle_gauss.jpg','csnulancemissileol5.jpg');
|
||||
}
|
||||
?>
|
||||
12
includes/onyx/access.php
Normal file
12
includes/onyx/access.php
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
if (!defined("_FCORE"))
|
||||
{
|
||||
die('non autorise');
|
||||
}
|
||||
|
||||
$var___mysql['login'] = "root";
|
||||
|
||||
$var___mysql['password'] = "rmss169";
|
||||
|
||||
?>
|
||||
1
includes/onyx/ban.xlist
Normal file
1
includes/onyx/ban.xlist
Normal file
|
|
@ -0,0 +1 @@
|
|||
|
||||
292
includes/onyx/bdd.class.php
Normal file
292
includes/onyx/bdd.class.php
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
<?php
|
||||
/*
|
||||
/!\ erreur désactivée ligne 54 par Némunaire, a corriger :
|
||||
Warning: mysql_close(): 17 is not a valid MySQL-Link resource in ...\onyx\bdd.class.php on line 54
|
||||
|
||||
Modifié ligne 34 pour avoir un affichage du site en mode mini en cas de crash du serveur de base de données (avec Hfr, ça arrive de temps en temps :D)
|
||||
*/
|
||||
|
||||
class bdd
|
||||
{
|
||||
private $session;
|
||||
|
||||
private $reponse;
|
||||
|
||||
var $database;
|
||||
|
||||
var $num_rows;
|
||||
|
||||
function connexion($h=NULL,$u=NULL,$p=NULL,$db=NULL)
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
$this->deconnexion();
|
||||
}
|
||||
|
||||
global $var___mysql, $config;
|
||||
|
||||
$u = empty($u)?$var___mysql['login']:$u;
|
||||
|
||||
$p = empty($p)?$var___mysql['password']:$p;
|
||||
|
||||
$h = empty($h)?$config['db_host']:$h;
|
||||
|
||||
@$this->session = mysql_connect($h,$u,$p) or require('secours.php');
|
||||
|
||||
if (!$this->session)
|
||||
{
|
||||
die('Connexion a la base de donnée impossible.');
|
||||
}
|
||||
|
||||
mysql_query('SET CHARACTER SET "utf8"',$this->session);
|
||||
|
||||
if(!empty($db))
|
||||
{
|
||||
$var = mysql_select_db($db,$this->session);
|
||||
if($var) $this->database = $db;
|
||||
}
|
||||
}
|
||||
|
||||
function deconnexion()
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
@$var = mysql_close($this->session);
|
||||
$this->session = FALSE;
|
||||
return $var;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function erreur($flag=TRUE)
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
$var = mysql_error($this->session);
|
||||
if($flag) echo $var;
|
||||
return $var;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
function db($db=NULL)
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
global $config;
|
||||
$db = empty($db)?$config['db_name']:$db;
|
||||
|
||||
$var = mysql_select_db($db,$this->session);
|
||||
if($var) $this->database = $db;
|
||||
return $var;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function escape(&$var)
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
$var = mysql_real_escape_string($var,$this->session);
|
||||
return $var;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function query($q)
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
$this->reponse = mysql_query($q,$this->session);
|
||||
|
||||
if(!$this->reponse)
|
||||
{
|
||||
echo("Requete à la base de donnée invalide".mysql_error());
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$this->num_rows = @mysql_num_rows($this->reponse);
|
||||
|
||||
if($this->num_rows == 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
elseif($this->num_rows >= 1)
|
||||
{
|
||||
for($i=0; $var = mysql_fetch_assoc($this->reponse); $i++)
|
||||
{
|
||||
$sortie[$i] = $var;
|
||||
}
|
||||
return $sortie;
|
||||
}
|
||||
|
||||
else return FALSE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function unique_query($q)
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
$this->reponse = mysql_query($q,$this->session);
|
||||
|
||||
if(!$this->reponse)
|
||||
{
|
||||
echo("Requete à la base de donnée invalide");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$this->num_rows = @mysql_num_rows($this->reponse);
|
||||
|
||||
if($this->num_rows == 0 || $this->num_rows > 1)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
elseif($this->num_rows == 1)
|
||||
{
|
||||
return mysql_fetch_assoc($this->reponse);
|
||||
}
|
||||
|
||||
else return FALSE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function affected()
|
||||
{
|
||||
if($this->session)
|
||||
{
|
||||
$affected = mysql_affected_rows($this->session);
|
||||
if($affected == 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
elseif($affected >= 1)
|
||||
{
|
||||
return $affected;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function check($table,$cond)
|
||||
{
|
||||
if($this->session && !empty($this->database))
|
||||
{
|
||||
$hashcheck = $this->unique_query("SELECT hash FROM $table WHERE $cond");
|
||||
|
||||
if($this->num_rows != 1) return FALSE;
|
||||
|
||||
$hashcheck = $hashcheck['hash'];
|
||||
|
||||
$columns = $this->query("SHOW COLUMNS FROM $table");
|
||||
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
|
||||
foreach($columns as $key => $value)
|
||||
{
|
||||
if($value['Field'] == 'hash' || $value['Field'] == 'active')
|
||||
{
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$array[$j] = $value['Field'];
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
if($i != 2) return FALSE;
|
||||
|
||||
$array = implode(",", $array);
|
||||
|
||||
$var = $this->unique_query("SELECT $array FROM $table WHERE $cond");
|
||||
|
||||
if($this->num_rows == 1)
|
||||
{
|
||||
|
||||
$var = implode('',$var);
|
||||
|
||||
$hash = hash_var($var);
|
||||
|
||||
if($hashcheck === $hash)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else;
|
||||
{
|
||||
$this->query("UPDATE $table SET active='0' WHERE $cond");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function hash($table,$cond)
|
||||
{
|
||||
if($this->session && !empty($this->database))
|
||||
{
|
||||
$columns = $this->query("SHOW COLUMNS FROM $table");
|
||||
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
|
||||
foreach($columns as $key => $value)
|
||||
{
|
||||
if($value['Field'] == 'hash' || $value['Field'] == 'active')
|
||||
{
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$array[$j] = $value['Field'];
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
if($i != 2) return FALSE;
|
||||
|
||||
$array = implode(",", $array);
|
||||
|
||||
$var = $this->unique_query("SELECT $array FROM $table WHERE $cond");
|
||||
|
||||
if($this->num_rows == 1)
|
||||
{
|
||||
|
||||
$var = implode('',$var);
|
||||
|
||||
$hash = hash_var($var);
|
||||
|
||||
$r = $this->query("UPDATE $table SET active='1', hash='$hash' WHERE $cond");
|
||||
|
||||
return $this->affected();
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
function control($table)
|
||||
{
|
||||
if($this->session && !empty($this->database))
|
||||
{
|
||||
$xid = $this->query("SELECT xid FROM $table");
|
||||
if($this->num_rows != 0)
|
||||
{
|
||||
foreach($xid as $key => $value)
|
||||
{
|
||||
$vxid = $value['xid'];
|
||||
$var = $this->check($table,"xid = '$vxid'");
|
||||
if(!$var) return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
}
|
||||
?>
|
||||
75
includes/onyx/config.xconf
Normal file
75
includes/onyx/config.xconf
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
actif: "1"
|
||||
titre: "Halo-Battle"
|
||||
bddactif: "1"
|
||||
domaine: "localhost"
|
||||
url_rewriting : "0"
|
||||
url_masque[localhost_hbn] : "#^((m([1-9]|1[0-2])|csnu|covenants)?(-\d{1,4})?|\d{1,4})?$#"
|
||||
url_replace[localhost_hbn] : "blog.php?e=$1"
|
||||
chemin: "/var/www/virtual/halo-battle.s-fr.com/htdocs/"
|
||||
session: "1"
|
||||
session_time: "3600"
|
||||
session_name: "hbservj1"
|
||||
fuseau_horaire: "2"
|
||||
locales: "fr_FR"
|
||||
lang: "FRA"
|
||||
db_host: "localhost"
|
||||
db_name: "halo_battle"
|
||||
db_prefix: ""
|
||||
smiley_dir: "images/smiles/"
|
||||
smiley[wink]: ":wink:"
|
||||
smiley[biggrin]: ":D"
|
||||
smiley[smile]: ":-)"
|
||||
smiley[razz]: ":P"
|
||||
smiley[eek]: ":shock:"
|
||||
smiley[cool]: "8-)"
|
||||
smiley[twisted]: ":twisted:"
|
||||
smiley[evil]: ":evil:"
|
||||
smiley[mad]: ":-x"
|
||||
smiley[confused]: ":-?"
|
||||
smiley[sad]: ":-("
|
||||
smiley[surprised]: ":-O"
|
||||
smiley[neutral]: ":-|"
|
||||
smiley[redface]: ":oops:"
|
||||
smiley[rolleyes]: ":roll:"
|
||||
smiley[lol]: ":lol:"
|
||||
link[forum]: "/forum/index.php"
|
||||
link[jeu]: "http://battle.halo.fr"
|
||||
link[blog]: "ark/"
|
||||
link[accueil]: "/accueil.html"
|
||||
link[contact]: "/contact.html"
|
||||
link[self]: "./"
|
||||
link[inscription]: "?p=inscription"
|
||||
menu[accueil]: "?p=accueil"
|
||||
menu[batiments]: "?p=batiments"
|
||||
menu[caserne]: "?p=prochainement"
|
||||
menu[chantierspatial]: "?p=chantierspatial"
|
||||
menu[chantierterrestre]: "?p=prochainement"
|
||||
menu[defenses]: "?p=defenses"
|
||||
menu[laboratoire]: "?p=laboratoire"
|
||||
menu[arbre]: "?p=arbre"
|
||||
menu[ressources]: "?p=ressources"
|
||||
menu[gestion]: "?p=prochainement"
|
||||
menu[flotte]: "?p=flotte"
|
||||
menu[armee]: "?p=prochainement"
|
||||
menu[carte]: "?p=carte"
|
||||
menu[options]: "?p=options"
|
||||
menu[messages]: "?p=messagerie"
|
||||
menu[envoie]: "?p=envoyer"
|
||||
menu[alliance]: "?p=alliances"
|
||||
menu[classement]: "?p=classement"
|
||||
menu[forums]: "http://halo-battle.s-fr.com/forum/"
|
||||
menu[bugs]: "?p=bugs"
|
||||
menu[faq]: "?p=prochainement"
|
||||
menu[deconnexion]: "?p=deconnexion"
|
||||
menuadmin[accueil]: "?p=accueil"
|
||||
menuadmin[vip]: "?p=vip"
|
||||
menuadmin[vflottes]: "?p=vflotte"
|
||||
menuadmin[vplanetes]: "?p=vplanetes"
|
||||
menuadmin[vjoueurs]: "?p=vjoueurs"
|
||||
menuadmin[valliances]: "?p=valliances"
|
||||
menuadmin[laboratoire]: "?p=laboratoire"
|
||||
menuadmin[arbre]: "?p=arbre"
|
||||
menuadmin[ressources]: "?p=ressources"
|
||||
menuadmin[gestion]: "?p=prochainement"
|
||||
menuadmin[flotte]: "?p=flotte"
|
||||
menuadmin[deconnexion]: "?p=deconnexion"
|
||||
252
includes/onyx/kernel.php
Normal file
252
includes/onyx/kernel.php
Normal file
|
|
@ -0,0 +1,252 @@
|
|||
<?php
|
||||
|
||||
@set_magic_quotes_runtime(0);
|
||||
|
||||
if (!defined("_FCORE"))
|
||||
{
|
||||
die('non autorise');
|
||||
}
|
||||
|
||||
if (is_file(_FCORE."ban.xlist"))
|
||||
{
|
||||
$banlist = file(_FCORE."ban.xlist",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||
if(in_array($_SERVER['REMOTE_ADDR'], $banlist))
|
||||
{
|
||||
die('banni');
|
||||
}
|
||||
}
|
||||
else die('blacklist introuvable');
|
||||
|
||||
if (is_file(_FCORE."config.xconf"))
|
||||
{
|
||||
$fconfig = file(_FCORE."config.xconf",FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
|
||||
$config = array();
|
||||
$exp = '#^(\\w{3,30})(?:\\[(\\w{1,30})\\])?\\s?\:\\s?"(.{0,500})"$#ui';
|
||||
foreach ($fconfig as $conf_value)
|
||||
{
|
||||
if (preg_match($exp,trim($conf_value)))
|
||||
{
|
||||
|
||||
$m1 = NULL;
|
||||
$m2 = NULL;
|
||||
$m3 = NULL;
|
||||
|
||||
preg_replace_callback($exp,create_function('$matches','global $m1,$m2,$m3; $m1 = $matches[1]; $m2 = $matches[2]; $m3 = $matches[3]; return true;'),trim($conf_value));
|
||||
|
||||
if(!empty($m2))
|
||||
{
|
||||
$config[$m1][$m2] = $m3;
|
||||
}
|
||||
else
|
||||
{
|
||||
$config[$m1] = $m3;
|
||||
}
|
||||
}
|
||||
else { die("Fichier de configuration incorrect!"); }
|
||||
}
|
||||
}
|
||||
|
||||
else die("fichier de configuration introuvable!");
|
||||
|
||||
if($config['actif']!='1')
|
||||
{
|
||||
die('desactive');
|
||||
}
|
||||
|
||||
setLocale(LC_TIME, $config['locales'], $config['lang']);
|
||||
|
||||
function file_log($message,$level=0)
|
||||
{
|
||||
$date = strftime('%d-%m-%Y');
|
||||
if (is_writable(_FCORE."logs/") || is_writable(_FCORE."logs/".$date.".xlog"))
|
||||
{
|
||||
$fichier = fopen(_FCORE."logs/".$date.".xlog",'a+');
|
||||
|
||||
switch($level)
|
||||
{
|
||||
default:
|
||||
case 0: $level = 'MESSAGE'; break;
|
||||
case 1: $level = 'AVERTISSEMENT'; break;
|
||||
case 2: $level = 'ERREUR'; break;
|
||||
}
|
||||
$time = strftime('%H:%M:%S');
|
||||
$req = $_SERVER['REQUEST_METHOD'];
|
||||
$arg = $_SERVER['REQUEST_URI'];
|
||||
$remote = $_SERVER['REMOTE_ADDR'];
|
||||
$ua = $_SERVER['HTTP_USER_AGENT'];
|
||||
@$referer = $_SERVER['HTTP_REFERER'];
|
||||
$line = "[$time] $level : $message , [$remote] [$req] [$arg] [$ua] [$referer]\n";
|
||||
|
||||
fwrite($fichier,$line);
|
||||
fclose($fichier);
|
||||
|
||||
}
|
||||
else die('log non accessible en ecriture');
|
||||
}
|
||||
|
||||
|
||||
function random($l=128)
|
||||
{
|
||||
switch ($l)
|
||||
{
|
||||
default:
|
||||
case 128: $n = 1; break;
|
||||
case 256: $n = 2; break;
|
||||
case 512: $n = 4; break;
|
||||
case 1024: $n = 8; break;
|
||||
case 2048: $n = 16; break;
|
||||
}
|
||||
|
||||
for($i = 1;$i <= $n; $i++)
|
||||
{
|
||||
$var = time().microtime().mt_rand().md5(time()).md5(microtime()).md5(mt_rand()).sha1(time()).sha1(microtime()).sha1(mt_rand());
|
||||
$r[$i] = md5(md5($var)^sha1($var));
|
||||
}
|
||||
$var = implode('',$r);
|
||||
|
||||
return $var;
|
||||
}
|
||||
|
||||
function hash_var($var)
|
||||
{
|
||||
$hash = hash('whirlpool', $var);
|
||||
return $hash;
|
||||
}
|
||||
|
||||
function decode_ip($int_ip)
|
||||
{
|
||||
$hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
|
||||
return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
|
||||
}
|
||||
|
||||
function encode_ip($dotquad_ip=FALSE)
|
||||
{
|
||||
if(!$dotquad_ip)
|
||||
{
|
||||
$dotquad_ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
$ip_sep = explode('.', $dotquad_ip);
|
||||
return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
|
||||
}
|
||||
|
||||
function gpc($name,$method='get')
|
||||
{
|
||||
switch($method)
|
||||
{
|
||||
default:
|
||||
case 'get': $var = isset($_GET[$name])?$_GET[$name]:NULL; break;
|
||||
case 'post': $var = isset($_POST[$name])?$_POST[$name]:NULL; break;
|
||||
case 'cookie': $var = isset($_COOKIE[$name])?$_COOKIE[$name]:NULL; break;
|
||||
}
|
||||
|
||||
if(!empty($var))
|
||||
{
|
||||
$var = get_magic_quotes_gpc()?stripslashes($var):$var;
|
||||
return $var;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
function cookie($name,$value,$time=NULL)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if(empty($time))
|
||||
{
|
||||
$time = time()+$config['session_time']+$config['fuseau_horaire']*3600;
|
||||
}
|
||||
|
||||
setcookie($name,$value,$time);
|
||||
}
|
||||
|
||||
function enc($var)
|
||||
{
|
||||
$string = preg_replace_callback('#^(.*\\??)(.*)?$#u',create_function('$matches',' return htmlspecialchars($matches[1].urlencode($matches[2]));'),$var);
|
||||
return $string;
|
||||
}
|
||||
|
||||
function url($string,$external=FALSE)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if($external)
|
||||
{
|
||||
return enc($string);
|
||||
}
|
||||
|
||||
$domain = $config['domaine'];
|
||||
|
||||
if($config['url_rewriting'] != '1')
|
||||
{
|
||||
$masque = $config['url_masque'][$domain."_"._FDIR];
|
||||
$replace = $config['url_replace'][$domain."_"._FDIR];
|
||||
$var = preg_replace($masque,$replace,$string);
|
||||
return enc($var);
|
||||
}
|
||||
else return enc($string);
|
||||
}
|
||||
|
||||
function bbcode($var,$level=0)
|
||||
{
|
||||
global $config;
|
||||
|
||||
switch($level)
|
||||
{
|
||||
case 1:
|
||||
$pattern[] = '#\\[size=([1-2][0-9])\\](.+?)\\[/size\\]#u';
|
||||
$replace[] = '<span style="font-size: $1px;">$2</span>';
|
||||
|
||||
$pattern[] = '#\\[color=(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow)\\](.+?)\\[/color\\]#u';
|
||||
$replace[] = '<span style="color: $1;">$2</span>';
|
||||
|
||||
$pattern[] = '#\\[img\\]http://([a-zA-Z0-9_/.%*+~,\\#-]+)\\[/img\\]#u';
|
||||
$replace[] = '<img src="http://$1" alt="$1" />';
|
||||
|
||||
default:
|
||||
case 0:
|
||||
$pattern[] = '#\\[url=(?:http://)?([a-zA-Z0-9_/.%*+~,\\#-]+)\\](.+?)\\[/url\\]#u';
|
||||
$replace[] = '<a href="http://$1">$2</a>';
|
||||
|
||||
$pattern[] = '#\\[url\\](?:http://)?([a-zA-Z0-9_/.%*+~,\\#-]+)\\[/url\\]#u';
|
||||
$replace[] = '<a href="http://$1">$1</a>';
|
||||
|
||||
$pattern[] = '#\\[cite\\](.+?)\\[/cite\\]#u';
|
||||
$replace[] = '<cite>$1</cite>';
|
||||
|
||||
$pattern[] = '#\\[u\\](.+?)\\[/u\\]#u';
|
||||
$replace[] = '<ins>$1</ins>';
|
||||
|
||||
$pattern[] = '#\\[i\\](.+?)\\[/i\\]#u';
|
||||
$replace[] = '<em>$1</em>';
|
||||
|
||||
$pattern[] = '#\\[b\\](.+?)\\[/b\\]#u';
|
||||
$replace[] = '<strong>$1</strong>';
|
||||
|
||||
foreach($config['smiley'] as $keys => $values)
|
||||
{
|
||||
$pattern[] = '#'.preg_quote($values).'#u';
|
||||
$replace[] = '<img src="'.$config['smiley_dir'].'/'.$keys.'.gif" alt="'.$keys.'" />';
|
||||
}
|
||||
}
|
||||
|
||||
$pattern = array_reverse($pattern);
|
||||
$replace = array_reverse($replace);
|
||||
|
||||
$var = preg_replace($pattern,$replace,$var);
|
||||
return $var;
|
||||
}
|
||||
|
||||
|
||||
define('SMARTY_DIR',_FCORE.'templates/libs/');
|
||||
|
||||
require_once(_FCORE."access.php");
|
||||
|
||||
require_once(SMARTY_DIR."Smarty.class.php");
|
||||
|
||||
require_once(_FCORE."bdd.class.php");
|
||||
|
||||
require_once(_FCORE."session.class.php");
|
||||
|
||||
header("Content-Type: text/html;charset=utf-8");
|
||||
|
||||
?>
|
||||
1
includes/onyx/logs/16-05-2008.log
Normal file
1
includes/onyx/logs/16-05-2008.log
Normal file
|
|
@ -0,0 +1 @@
|
|||
[00:25:38] MESSAGE : Création de l'alliance : les nouveaux poms par 8 (fondateur : 1) après validation de 4 signatures : 3, 5, 7 , [127.0.0.1] [GET] [/hbn/?p=alliances&q=signer&i=c9b76e336f77b1e724c0809d0fb366ed0084b85c] [Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5] []
|
||||
1
includes/onyx/logs/16-05-2008.xlog
Normal file
1
includes/onyx/logs/16-05-2008.xlog
Normal file
|
|
@ -0,0 +1 @@
|
|||
[23:15:22] MESSAGE : Création de l'alliance : les nouveaux poms par 8 (fondateur : 1) après validation de 4 signatures : 3, 2, 48 , [127.0.0.1] [GET] [/hbn/?p=alliances&q=signer&i=c9eb7a4fbfac8062bf83bf530d55024647484aae] [Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5] [http://127.0.0.1/hbn/?p=alliances&q=fonder]
|
||||
0
includes/onyx/logs/php.log
Normal file
0
includes/onyx/logs/php.log
Normal file
111
includes/onyx/phpbb_functions.php
Normal file
111
includes/onyx/phpbb_functions.php
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
<?
|
||||
|
||||
function phpbb_check_hash($password, $hash)
|
||||
{
|
||||
$itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
if (strlen($hash) == 34)
|
||||
{
|
||||
return (_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false;
|
||||
}
|
||||
|
||||
return (md5($password) === $hash) ? true : false;
|
||||
}
|
||||
function _hash_crypt_private($password, $setting, &$itoa64)
|
||||
{
|
||||
$output = '*';
|
||||
|
||||
// Check for correct hash
|
||||
if (substr($setting, 0, 3) != '$H$')
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
$count_log2 = strpos($itoa64, $setting[3]);
|
||||
|
||||
if ($count_log2 < 7 || $count_log2 > 30)
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
$count = 1 << $count_log2;
|
||||
$salt = substr($setting, 4, 8);
|
||||
|
||||
if (strlen($salt) != 8)
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* We're kind of forced to use MD5 here since it's the only
|
||||
* cryptographic primitive available in all versions of PHP
|
||||
* currently in use. To implement our own low-level crypto
|
||||
* in PHP would result in much worse performance and
|
||||
* consequently in lower iteration counts and hashes that are
|
||||
* quicker to crack (by non-PHP code).
|
||||
*/
|
||||
if (PHP_VERSION >= 5)
|
||||
{
|
||||
$hash = md5($salt . $password, true);
|
||||
do
|
||||
{
|
||||
$hash = md5($hash . $password, true);
|
||||
}
|
||||
while (--$count);
|
||||
}
|
||||
else
|
||||
{
|
||||
$hash = pack('H*', md5($salt . $password));
|
||||
do
|
||||
{
|
||||
$hash = pack('H*', md5($hash . $password));
|
||||
}
|
||||
while (--$count);
|
||||
}
|
||||
|
||||
$output = substr($setting, 0, 12);
|
||||
$output .= _hash_encode64($hash, 16, $itoa64);
|
||||
|
||||
return $output;
|
||||
}
|
||||
function _hash_encode64($input, $count, &$itoa64)
|
||||
{
|
||||
$output = '';
|
||||
$i = 0;
|
||||
|
||||
do
|
||||
{
|
||||
$value = ord($input[$i++]);
|
||||
$output .= $itoa64[$value & 0x3f];
|
||||
|
||||
if ($i < $count)
|
||||
{
|
||||
$value |= ord($input[$i]) << 8;
|
||||
}
|
||||
|
||||
$output .= $itoa64[($value >> 6) & 0x3f];
|
||||
|
||||
if ($i++ >= $count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if ($i < $count)
|
||||
{
|
||||
$value |= ord($input[$i]) << 16;
|
||||
}
|
||||
|
||||
$output .= $itoa64[($value >> 12) & 0x3f];
|
||||
|
||||
if ($i++ >= $count)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
$output .= $itoa64[($value >> 18) & 0x3f];
|
||||
}
|
||||
while ($i < $count);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
?>
|
||||
122
includes/onyx/session.class.php
Normal file
122
includes/onyx/session.class.php
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
<?php
|
||||
|
||||
class session {
|
||||
|
||||
var $xid;
|
||||
|
||||
var $level = 0;
|
||||
|
||||
var $values;
|
||||
|
||||
function clean()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if($config['session']=='1')
|
||||
{
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->db();
|
||||
$db->control($config['db_prefix']."sessions");
|
||||
|
||||
$time = time()-$config['session_time'];
|
||||
$table = $config['db_prefix']."sessions";
|
||||
$db->query("DELETE FROM $table WHERE time < $time AND active = '1'");
|
||||
|
||||
$db->deconnexion();
|
||||
}
|
||||
}
|
||||
|
||||
function new_cookie()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if($config['session']=='1')
|
||||
{
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->db();
|
||||
|
||||
$time = time();
|
||||
$xid = random();
|
||||
$sess_cookie = random();
|
||||
$ip = encode_ip();
|
||||
$table = $config['db_prefix']."sessions";
|
||||
$db->query("INSERT INTO $table(xid,session,time,ip,var_session,level,hash,active) VALUES('$xid','$sess_cookie','$time','$ip','','1','','0') ");
|
||||
$db->hash($table,"xid = '$xid'");
|
||||
|
||||
$this->xid = $xid;
|
||||
|
||||
cookie($config['session_name'],$sess_cookie);
|
||||
|
||||
$db->deconnexion();
|
||||
}
|
||||
}
|
||||
|
||||
function load()
|
||||
{
|
||||
$this->clean();
|
||||
|
||||
global $config;
|
||||
|
||||
if($config['session']=='1')
|
||||
{
|
||||
|
||||
if($cookie = gpc($config['session_name'],'cookie'))
|
||||
{
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->db();
|
||||
|
||||
$db->escape($cookie);
|
||||
|
||||
$table = $config['db_prefix']."sessions";
|
||||
$query = $db->unique_query("SELECT * FROM $table WHERE session='$cookie' AND active='1'");
|
||||
|
||||
if($db->num_rows == 1 && $query['ip'] == encode_ip())
|
||||
{
|
||||
$time = time();
|
||||
$xid = $query['xid'];
|
||||
$db->query("UPDATE $table SET time='$time' WHERE xid='$xid'");
|
||||
|
||||
$this->xid = $xid;
|
||||
$this->level = $query['level'];
|
||||
$this->values = unserialize($query['var_session']);
|
||||
|
||||
cookie($config['session_name'],gpc($config['session_name'],'cookie'));
|
||||
}
|
||||
else $this->new_cookie();
|
||||
|
||||
$db->deconnexion();
|
||||
}
|
||||
else $this->new_cookie();
|
||||
}
|
||||
}
|
||||
|
||||
function put()
|
||||
{
|
||||
global $config;
|
||||
|
||||
if($config['session']=='1')
|
||||
{
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->db();
|
||||
|
||||
$time = time();
|
||||
|
||||
$var_session = serialize($this->values);
|
||||
|
||||
$db->escape($var_session);
|
||||
|
||||
$xid = $this->xid;
|
||||
|
||||
$table = $config['db_prefix']."sessions";
|
||||
$db->query("UPDATE $table SET time='$time', var_session='$var_session' WHERE xid='$xid'");
|
||||
$db->hash($table,"xid = '$xid'");
|
||||
|
||||
$db->deconnexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
389
includes/onyx/templates/libs/Config_File.class.php
Normal file
389
includes/onyx/templates/libs/Config_File.class.php
Normal file
|
|
@ -0,0 +1,389 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Config_File class.
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* @link http://smarty.php.net/
|
||||
* @version 2.6.19
|
||||
* @copyright Copyright: 2001-2005 New Digital Group, Inc.
|
||||
* @author Andrei Zmievski <andrei@php.net>
|
||||
* @access public
|
||||
* @package Smarty
|
||||
*/
|
||||
|
||||
/* $Id: Config_File.class.php 2702 2007-03-08 19:11:22Z mohrt $ */
|
||||
|
||||
/**
|
||||
* Config file reading class
|
||||
* @package Smarty
|
||||
*/
|
||||
class Config_File {
|
||||
/**#@+
|
||||
* Options
|
||||
* @var boolean
|
||||
*/
|
||||
/**
|
||||
* Controls whether variables with the same name overwrite each other.
|
||||
*/
|
||||
var $overwrite = true;
|
||||
|
||||
/**
|
||||
* Controls whether config values of on/true/yes and off/false/no get
|
||||
* converted to boolean values automatically.
|
||||
*/
|
||||
var $booleanize = true;
|
||||
|
||||
/**
|
||||
* Controls whether hidden config sections/vars are read from the file.
|
||||
*/
|
||||
var $read_hidden = true;
|
||||
|
||||
/**
|
||||
* Controls whether or not to fix mac or dos formatted newlines.
|
||||
* If set to true, \r or \r\n will be changed to \n.
|
||||
*/
|
||||
var $fix_newlines = true;
|
||||
/**#@-*/
|
||||
|
||||
/** @access private */
|
||||
var $_config_path = "";
|
||||
var $_config_data = array();
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Constructs a new config file class.
|
||||
*
|
||||
* @param string $config_path (optional) path to the config files
|
||||
*/
|
||||
function Config_File($config_path = NULL)
|
||||
{
|
||||
if (isset($config_path))
|
||||
$this->set_path($config_path);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the path where configuration files can be found.
|
||||
*
|
||||
* @param string $config_path path to the config files
|
||||
*/
|
||||
function set_path($config_path)
|
||||
{
|
||||
if (!empty($config_path)) {
|
||||
if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) {
|
||||
$this->_trigger_error_msg("Bad config file path '$config_path'");
|
||||
return;
|
||||
}
|
||||
if(substr($config_path, -1) != DIRECTORY_SEPARATOR) {
|
||||
$config_path .= DIRECTORY_SEPARATOR;
|
||||
}
|
||||
|
||||
$this->_config_path = $config_path;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves config info based on the file, section, and variable name.
|
||||
*
|
||||
* @param string $file_name config file to get info for
|
||||
* @param string $section_name (optional) section to get info for
|
||||
* @param string $var_name (optional) variable to get info for
|
||||
* @return string|array a value or array of values
|
||||
*/
|
||||
function get($file_name, $section_name = NULL, $var_name = NULL)
|
||||
{
|
||||
if (empty($file_name)) {
|
||||
$this->_trigger_error_msg('Empty config file name');
|
||||
return;
|
||||
} else {
|
||||
$file_name = $this->_config_path . $file_name;
|
||||
if (!isset($this->_config_data[$file_name]))
|
||||
$this->load_file($file_name, false);
|
||||
}
|
||||
|
||||
if (!empty($var_name)) {
|
||||
if (empty($section_name)) {
|
||||
return $this->_config_data[$file_name]["vars"][$var_name];
|
||||
} else {
|
||||
if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]))
|
||||
return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name];
|
||||
else
|
||||
return array();
|
||||
}
|
||||
} else {
|
||||
if (empty($section_name)) {
|
||||
return (array)$this->_config_data[$file_name]["vars"];
|
||||
} else {
|
||||
if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"]))
|
||||
return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"];
|
||||
else
|
||||
return array();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves config info based on the key.
|
||||
*
|
||||
* @param $file_name string config key (filename/section/var)
|
||||
* @return string|array same as get()
|
||||
* @uses get() retrieves information from config file and returns it
|
||||
*/
|
||||
function &get_key($config_key)
|
||||
{
|
||||
list($file_name, $section_name, $var_name) = explode('/', $config_key, 3);
|
||||
$result = &$this->get($file_name, $section_name, $var_name);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all loaded config file names.
|
||||
*
|
||||
* @return array an array of loaded config file names
|
||||
*/
|
||||
function get_file_names()
|
||||
{
|
||||
return array_keys($this->_config_data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all section names from a loaded file.
|
||||
*
|
||||
* @param string $file_name config file to get section names from
|
||||
* @return array an array of section names from the specified file
|
||||
*/
|
||||
function get_section_names($file_name)
|
||||
{
|
||||
$file_name = $this->_config_path . $file_name;
|
||||
if (!isset($this->_config_data[$file_name])) {
|
||||
$this->_trigger_error_msg("Unknown config file '$file_name'");
|
||||
return;
|
||||
}
|
||||
|
||||
return array_keys($this->_config_data[$file_name]["sections"]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all global or section variable names.
|
||||
*
|
||||
* @param string $file_name config file to get info for
|
||||
* @param string $section_name (optional) section to get info for
|
||||
* @return array an array of variables names from the specified file/section
|
||||
*/
|
||||
function get_var_names($file_name, $section = NULL)
|
||||
{
|
||||
if (empty($file_name)) {
|
||||
$this->_trigger_error_msg('Empty config file name');
|
||||
return;
|
||||
} else if (!isset($this->_config_data[$file_name])) {
|
||||
$this->_trigger_error_msg("Unknown config file '$file_name'");
|
||||
return;
|
||||
}
|
||||
|
||||
if (empty($section))
|
||||
return array_keys($this->_config_data[$file_name]["vars"]);
|
||||
else
|
||||
return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Clear loaded config data for a certain file or all files.
|
||||
*
|
||||
* @param string $file_name file to clear config data for
|
||||
*/
|
||||
function clear($file_name = NULL)
|
||||
{
|
||||
if ($file_name === NULL)
|
||||
$this->_config_data = array();
|
||||
else if (isset($this->_config_data[$file_name]))
|
||||
$this->_config_data[$file_name] = array();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load a configuration file manually.
|
||||
*
|
||||
* @param string $file_name file name to load
|
||||
* @param boolean $prepend_path whether current config path should be
|
||||
* prepended to the filename
|
||||
*/
|
||||
function load_file($file_name, $prepend_path = true)
|
||||
{
|
||||
if ($prepend_path && $this->_config_path != "")
|
||||
$config_file = $this->_config_path . $file_name;
|
||||
else
|
||||
$config_file = $file_name;
|
||||
|
||||
ini_set('track_errors', true);
|
||||
$fp = @fopen($config_file, "r");
|
||||
if (!is_resource($fp)) {
|
||||
$this->_trigger_error_msg("Could not open config file '$config_file'");
|
||||
return false;
|
||||
}
|
||||
|
||||
$contents = ($size = filesize($config_file)) ? fread($fp, $size) : '';
|
||||
fclose($fp);
|
||||
|
||||
$this->_config_data[$config_file] = $this->parse_contents($contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the contents of a file manually.
|
||||
*
|
||||
* @param string $config_file file name of the related contents
|
||||
* @param string $contents the file-contents to parse
|
||||
*/
|
||||
function set_file_contents($config_file, $contents)
|
||||
{
|
||||
$this->_config_data[$config_file] = $this->parse_contents($contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse the source of a configuration file manually.
|
||||
*
|
||||
* @param string $contents the file-contents to parse
|
||||
*/
|
||||
function parse_contents($contents)
|
||||
{
|
||||
if($this->fix_newlines) {
|
||||
// fix mac/dos formatted newlines
|
||||
$contents = preg_replace('!\r\n?!', "\n", $contents);
|
||||
}
|
||||
|
||||
$config_data = array();
|
||||
$config_data['sections'] = array();
|
||||
$config_data['vars'] = array();
|
||||
|
||||
/* reference to fill with data */
|
||||
$vars =& $config_data['vars'];
|
||||
|
||||
/* parse file line by line */
|
||||
preg_match_all('!^.*\r?\n?!m', $contents, $match);
|
||||
$lines = $match[0];
|
||||
for ($i=0, $count=count($lines); $i<$count; $i++) {
|
||||
$line = $lines[$i];
|
||||
if (empty($line)) continue;
|
||||
|
||||
if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) {
|
||||
/* section found */
|
||||
if (substr($match[1], 0, 1) == '.') {
|
||||
/* hidden section */
|
||||
if ($this->read_hidden) {
|
||||
$section_name = substr($match[1], 1);
|
||||
} else {
|
||||
/* break reference to $vars to ignore hidden section */
|
||||
unset($vars);
|
||||
$vars = array();
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
$section_name = $match[1];
|
||||
}
|
||||
if (!isset($config_data['sections'][$section_name]))
|
||||
$config_data['sections'][$section_name] = array('vars' => array());
|
||||
$vars =& $config_data['sections'][$section_name]['vars'];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) {
|
||||
/* variable found */
|
||||
$var_name = rtrim($match[1]);
|
||||
if (strpos($match[2], '"""') === 0) {
|
||||
/* handle multiline-value */
|
||||
$lines[$i] = substr($match[2], 3);
|
||||
$var_value = '';
|
||||
while ($i<$count) {
|
||||
if (($pos = strpos($lines[$i], '"""')) === false) {
|
||||
$var_value .= $lines[$i++];
|
||||
} else {
|
||||
/* end of multiline-value */
|
||||
$var_value .= substr($lines[$i], 0, $pos);
|
||||
break;
|
||||
}
|
||||
}
|
||||
$booleanize = false;
|
||||
|
||||
} else {
|
||||
/* handle simple value */
|
||||
$var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2]));
|
||||
$booleanize = $this->booleanize;
|
||||
|
||||
}
|
||||
$this->_set_config_var($vars, $var_name, $var_value, $booleanize);
|
||||
}
|
||||
/* else unparsable line / means it is a comment / means ignore it */
|
||||
}
|
||||
return $config_data;
|
||||
}
|
||||
|
||||
/**#@+ @access private */
|
||||
/**
|
||||
* @param array &$container
|
||||
* @param string $var_name
|
||||
* @param mixed $var_value
|
||||
* @param boolean $booleanize determines whether $var_value is converted to
|
||||
* to true/false
|
||||
*/
|
||||
function _set_config_var(&$container, $var_name, $var_value, $booleanize)
|
||||
{
|
||||
if (substr($var_name, 0, 1) == '.') {
|
||||
if (!$this->read_hidden)
|
||||
return;
|
||||
else
|
||||
$var_name = substr($var_name, 1);
|
||||
}
|
||||
|
||||
if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) {
|
||||
$this->_trigger_error_msg("Bad variable name '$var_name'");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($booleanize) {
|
||||
if (preg_match("/^(on|true|yes)$/i", $var_value))
|
||||
$var_value = true;
|
||||
else if (preg_match("/^(off|false|no)$/i", $var_value))
|
||||
$var_value = false;
|
||||
}
|
||||
|
||||
if (!isset($container[$var_name]) || $this->overwrite)
|
||||
$container[$var_name] = $var_value;
|
||||
else {
|
||||
settype($container[$var_name], 'array');
|
||||
$container[$var_name][] = $var_value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @uses trigger_error() creates a PHP warning/error
|
||||
* @param string $error_msg
|
||||
* @param integer $error_type one of
|
||||
*/
|
||||
function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING)
|
||||
{
|
||||
trigger_error("Config_File error: $error_msg", $error_type);
|
||||
}
|
||||
/**#@-*/
|
||||
}
|
||||
|
||||
?>
|
||||
1960
includes/onyx/templates/libs/Smarty.class.php
Normal file
1960
includes/onyx/templates/libs/Smarty.class.php
Normal file
File diff suppressed because it is too large
Load diff
2325
includes/onyx/templates/libs/Smarty_Compiler.class.php
Normal file
2325
includes/onyx/templates/libs/Smarty_Compiler.class.php
Normal file
File diff suppressed because it is too large
Load diff
157
includes/onyx/templates/libs/debug.tpl
Normal file
157
includes/onyx/templates/libs/debug.tpl
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
{* Smarty *}
|
||||
{* debug.tpl, last updated version 2.1.0 *}
|
||||
{assign_debug_info}
|
||||
{capture 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>
|
||||
{literal}
|
||||
<style type="text/css">
|
||||
/* <![CDATA[ */
|
||||
body, h1, h2, 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;
|
||||
}
|
||||
|
||||
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;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
td {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.odd {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.even {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.exectime {
|
||||
font-size: 0.8em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
#table_assigned_vars th {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
#table_config_vars th {
|
||||
color: maroon;
|
||||
}
|
||||
/* ]]> */
|
||||
</style>
|
||||
{/literal}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>Smarty Debug Console</h1>
|
||||
|
||||
<h2>included templates & config files (load time in seconds)</h2>
|
||||
|
||||
<div>
|
||||
{section name=templates loop=$_debug_tpls}
|
||||
{section name=indent loop=$_debug_tpls[templates].depth} {/section}
|
||||
<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>
|
||||
{$_debug_tpls[templates].filename|escape:html}</font>
|
||||
{if isset($_debug_tpls[templates].exec_time)}
|
||||
<span class="exectime">
|
||||
({$_debug_tpls[templates].exec_time|string_format:"%.5f"})
|
||||
{if %templates.index% eq 0}(total){/if}
|
||||
</span>
|
||||
{/if}
|
||||
<br />
|
||||
{sectionelse}
|
||||
<p>no templates included</p>
|
||||
{/section}
|
||||
</div>
|
||||
|
||||
<h2>assigned template variables</h2>
|
||||
|
||||
<table id="table_assigned_vars">
|
||||
{section name=vars loop=$_debug_keys}
|
||||
<tr class="{cycle values="odd,even"}">
|
||||
<th>{ldelim}${$_debug_keys[vars]|escape:'html'}{rdelim}</th>
|
||||
<td>{$_debug_vals[vars]|@debug_print_var}</td></tr>
|
||||
{sectionelse}
|
||||
<tr><td><p>no template variables assigned</p></td></tr>
|
||||
{/section}
|
||||
</table>
|
||||
|
||||
<h2>assigned config file variables (outer template scope)</h2>
|
||||
|
||||
<table id="table_config_vars">
|
||||
{section name=config_vars loop=$_debug_config_keys}
|
||||
<tr class="{cycle values="odd,even"}">
|
||||
<th>{ldelim}#{$_debug_config_keys[config_vars]|escape:'html'}#{rdelim}</th>
|
||||
<td>{$_debug_config_vals[config_vars]|@debug_print_var}</td></tr>
|
||||
{sectionelse}
|
||||
<tr><td><p>no config vars assigned</p></td></tr>
|
||||
{/section}
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
{/capture}
|
||||
{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"}
|
||||
{$debug_output}
|
||||
{else}
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
if ( self.name == '' ) {ldelim}
|
||||
var title = 'Console';
|
||||
{rdelim}
|
||||
else {ldelim}
|
||||
var title = 'Console_' + self.name;
|
||||
{rdelim}
|
||||
_smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes");
|
||||
_smarty_console.document.write('{$debug_output|escape:'javascript'}');
|
||||
_smarty_console.document.close();
|
||||
// ]]>
|
||||
</script>
|
||||
{/if}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* assemble filepath of requested plugin
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $name
|
||||
* @return string|false
|
||||
*/
|
||||
function smarty_core_assemble_plugin_filepath($params, &$smarty)
|
||||
{
|
||||
static $_filepaths_cache = array();
|
||||
|
||||
$_plugin_filename = $params['type'] . '.' . $params['name'] . '.php';
|
||||
if (isset($_filepaths_cache[$_plugin_filename])) {
|
||||
return $_filepaths_cache[$_plugin_filename];
|
||||
}
|
||||
$_return = false;
|
||||
|
||||
foreach ((array)$smarty->plugins_dir as $_plugin_dir) {
|
||||
|
||||
$_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
|
||||
|
||||
// see if path is relative
|
||||
if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) {
|
||||
$_relative_paths[] = $_plugin_dir;
|
||||
// relative path, see if it is in the SMARTY_DIR
|
||||
if (@is_readable(SMARTY_DIR . $_plugin_filepath)) {
|
||||
$_return = SMARTY_DIR . $_plugin_filepath;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// try relative to cwd (or absolute)
|
||||
if (@is_readable($_plugin_filepath)) {
|
||||
$_return = $_plugin_filepath;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if($_return === false) {
|
||||
// still not found, try PHP include_path
|
||||
if(isset($_relative_paths)) {
|
||||
foreach ((array)$_relative_paths as $_plugin_dir) {
|
||||
|
||||
$_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename;
|
||||
|
||||
$_params = array('file_path' => $_plugin_filepath);
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
|
||||
if(smarty_core_get_include_path($_params, $smarty)) {
|
||||
$_return = $_params['new_file_path'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$_filepaths_cache[$_plugin_filename] = $_return;
|
||||
return $_return;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty assign_smarty_interface core plugin
|
||||
*
|
||||
* Type: core<br>
|
||||
* Name: assign_smarty_interface<br>
|
||||
* Purpose: assign the $smarty interface variable
|
||||
* @param array Format: null
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_core_assign_smarty_interface($params, &$smarty)
|
||||
{
|
||||
if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$_globals_map = array('g' => 'HTTP_GET_VARS',
|
||||
'p' => 'HTTP_POST_VARS',
|
||||
'c' => 'HTTP_COOKIE_VARS',
|
||||
's' => 'HTTP_SERVER_VARS',
|
||||
'e' => 'HTTP_ENV_VARS');
|
||||
|
||||
$_smarty_vars_request = array();
|
||||
|
||||
foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) {
|
||||
if (isset($_globals_map[$_c])) {
|
||||
$_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]);
|
||||
}
|
||||
}
|
||||
$_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']);
|
||||
|
||||
$smarty->_smarty_vars['request'] = $_smarty_vars_request;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* create full directory structure
|
||||
*
|
||||
* @param string $dir
|
||||
*/
|
||||
|
||||
// $dir
|
||||
|
||||
function smarty_core_create_dir_structure($params, &$smarty)
|
||||
{
|
||||
if (!file_exists($params['dir'])) {
|
||||
$_open_basedir_ini = ini_get('open_basedir');
|
||||
|
||||
if (DIRECTORY_SEPARATOR=='/') {
|
||||
/* unix-style paths */
|
||||
$_dir = $params['dir'];
|
||||
$_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
|
||||
$_new_dir = (substr($_dir, 0, 1)=='/') ? '/' : getcwd().'/';
|
||||
if($_use_open_basedir = !empty($_open_basedir_ini)) {
|
||||
$_open_basedirs = explode(':', $_open_basedir_ini);
|
||||
}
|
||||
|
||||
} else {
|
||||
/* other-style paths */
|
||||
$_dir = str_replace('\\','/', $params['dir']);
|
||||
$_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY);
|
||||
if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) {
|
||||
/* leading "//" for network volume, or "[letter]:/" for full path */
|
||||
$_new_dir = $_root_dir[1];
|
||||
/* remove drive-letter from _dir_parts */
|
||||
if (isset($_root_dir[3])) array_shift($_dir_parts);
|
||||
|
||||
} else {
|
||||
$_new_dir = str_replace('\\', '/', getcwd()).'/';
|
||||
|
||||
}
|
||||
|
||||
if($_use_open_basedir = !empty($_open_basedir_ini)) {
|
||||
$_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* all paths use "/" only from here */
|
||||
foreach ($_dir_parts as $_dir_part) {
|
||||
$_new_dir .= $_dir_part;
|
||||
|
||||
if ($_use_open_basedir) {
|
||||
// do not attempt to test or make directories outside of open_basedir
|
||||
$_make_new_dir = false;
|
||||
foreach ($_open_basedirs as $_open_basedir) {
|
||||
if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) {
|
||||
$_make_new_dir = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$_make_new_dir = true;
|
||||
}
|
||||
|
||||
if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) {
|
||||
$smarty->trigger_error("problem creating directory '" . $_new_dir . "'");
|
||||
return false;
|
||||
}
|
||||
$_new_dir .= '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty debug_console function plugin
|
||||
*
|
||||
* Type: core<br>
|
||||
* Name: display_debug_console<br>
|
||||
* Purpose: display the javascript debug console window
|
||||
* @param array Format: null
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_core_display_debug_console($params, &$smarty)
|
||||
{
|
||||
// we must force compile the debug template in case the environment
|
||||
// changed between separate applications.
|
||||
|
||||
if(empty($smarty->debug_tpl)) {
|
||||
// set path to debug template from SMARTY_DIR
|
||||
$smarty->debug_tpl = SMARTY_DIR . 'debug.tpl';
|
||||
if($smarty->security && is_file($smarty->debug_tpl)) {
|
||||
$smarty->secure_dir[] = realpath($smarty->debug_tpl);
|
||||
}
|
||||
$smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl';
|
||||
}
|
||||
|
||||
$_ldelim_orig = $smarty->left_delimiter;
|
||||
$_rdelim_orig = $smarty->right_delimiter;
|
||||
|
||||
$smarty->left_delimiter = '{';
|
||||
$smarty->right_delimiter = '}';
|
||||
|
||||
$_compile_id_orig = $smarty->_compile_id;
|
||||
$smarty->_compile_id = null;
|
||||
|
||||
$_compile_path = $smarty->_get_compile_path($smarty->debug_tpl);
|
||||
if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path))
|
||||
{
|
||||
ob_start();
|
||||
$smarty->_include($_compile_path);
|
||||
$_results = ob_get_contents();
|
||||
ob_end_clean();
|
||||
} else {
|
||||
$_results = '';
|
||||
}
|
||||
|
||||
$smarty->_compile_id = $_compile_id_orig;
|
||||
|
||||
$smarty->left_delimiter = $_ldelim_orig;
|
||||
$smarty->right_delimiter = $_rdelim_orig;
|
||||
|
||||
return $_results;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get path to file from include_path
|
||||
*
|
||||
* @param string $file_path
|
||||
* @param string $new_file_path
|
||||
* @return boolean
|
||||
* @staticvar array|null
|
||||
*/
|
||||
|
||||
// $file_path, &$new_file_path
|
||||
|
||||
function smarty_core_get_include_path(&$params, &$smarty)
|
||||
{
|
||||
static $_path_array = null;
|
||||
|
||||
if(!isset($_path_array)) {
|
||||
$_ini_include_path = ini_get('include_path');
|
||||
|
||||
if(strstr($_ini_include_path,';')) {
|
||||
// windows pathnames
|
||||
$_path_array = explode(';',$_ini_include_path);
|
||||
} else {
|
||||
$_path_array = explode(':',$_ini_include_path);
|
||||
}
|
||||
}
|
||||
foreach ($_path_array as $_include_path) {
|
||||
if (@is_readable($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) {
|
||||
$params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path'];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get seconds and microseconds
|
||||
* @return double
|
||||
*/
|
||||
function smarty_core_get_microtime($params, &$smarty)
|
||||
{
|
||||
$mtime = microtime();
|
||||
$mtime = explode(" ", $mtime);
|
||||
$mtime = (double)($mtime[1]) + (double)($mtime[0]);
|
||||
return ($mtime);
|
||||
}
|
||||
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Retrieves PHP script resource
|
||||
*
|
||||
* sets $php_resource to the returned resource
|
||||
* @param string $resource
|
||||
* @param string $resource_type
|
||||
* @param $php_resource
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
function smarty_core_get_php_resource(&$params, &$smarty)
|
||||
{
|
||||
|
||||
$params['resource_base_path'] = $smarty->trusted_dir;
|
||||
$smarty->_parse_resource_name($params, $smarty);
|
||||
|
||||
/*
|
||||
* Find out if the resource exists.
|
||||
*/
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
$_readable = false;
|
||||
if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) {
|
||||
$_readable = true;
|
||||
} else {
|
||||
// test for file in include_path
|
||||
$_params = array('file_path' => $params['resource_name']);
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_include_path.php');
|
||||
if(smarty_core_get_include_path($_params, $smarty)) {
|
||||
$_include_path = $_params['new_file_path'];
|
||||
$_readable = true;
|
||||
}
|
||||
}
|
||||
} else if ($params['resource_type'] != 'file') {
|
||||
$_template_source = null;
|
||||
$_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0])
|
||||
&& call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0],
|
||||
array($params['resource_name'], &$_template_source, &$smarty));
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the error function, depending on which class calls us.
|
||||
*/
|
||||
if (method_exists($smarty, '_syntax_error')) {
|
||||
$_error_funcc = '_syntax_error';
|
||||
} else {
|
||||
$_error_funcc = 'trigger_error';
|
||||
}
|
||||
|
||||
if ($_readable) {
|
||||
if ($smarty->security) {
|
||||
require_once(SMARTY_CORE_DIR . 'core.is_trusted.php');
|
||||
if (!smarty_core_is_trusted($params, $smarty)) {
|
||||
$smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
$params['php_resource'] = $params['resource_name'];
|
||||
} else {
|
||||
$params['php_resource'] = $_template_source;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
59
includes/onyx/templates/libs/internals/core.is_secure.php
Normal file
59
includes/onyx/templates/libs/internals/core.is_secure.php
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* determines if a resource is secure or not.
|
||||
*
|
||||
* @param string $resource_type
|
||||
* @param string $resource_name
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $resource_type, $resource_name
|
||||
|
||||
function smarty_core_is_secure($params, &$smarty)
|
||||
{
|
||||
if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($params['resource_type'] == 'file') {
|
||||
$_rp = realpath($params['resource_name']);
|
||||
if (isset($params['resource_base_path'])) {
|
||||
foreach ((array)$params['resource_base_path'] as $curr_dir) {
|
||||
if ( ($_cd = realpath($curr_dir)) !== false &&
|
||||
strncmp($_rp, $_cd, strlen($_cd)) == 0 &&
|
||||
substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($smarty->secure_dir)) {
|
||||
foreach ((array)$smarty->secure_dir as $curr_dir) {
|
||||
if ( ($_cd = realpath($curr_dir)) !== false) {
|
||||
if($_cd == $_rp) {
|
||||
return true;
|
||||
} elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 &&
|
||||
substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// resource is not on local file system
|
||||
return call_user_func_array(
|
||||
$smarty->_plugins['resource'][$params['resource_type']][0][2],
|
||||
array($params['resource_name'], &$smarty));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
47
includes/onyx/templates/libs/internals/core.is_trusted.php
Normal file
47
includes/onyx/templates/libs/internals/core.is_trusted.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* determines if a resource is trusted or not
|
||||
*
|
||||
* @param string $resource_type
|
||||
* @param string $resource_name
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $resource_type, $resource_name
|
||||
|
||||
function smarty_core_is_trusted($params, &$smarty)
|
||||
{
|
||||
$_smarty_trusted = false;
|
||||
if ($params['resource_type'] == 'file') {
|
||||
if (!empty($smarty->trusted_dir)) {
|
||||
$_rp = realpath($params['resource_name']);
|
||||
foreach ((array)$smarty->trusted_dir as $curr_dir) {
|
||||
if (!empty($curr_dir) && is_readable ($curr_dir)) {
|
||||
$_cd = realpath($curr_dir);
|
||||
if (strncmp($_rp, $_cd, strlen($_cd)) == 0
|
||||
&& substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) {
|
||||
$_smarty_trusted = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
// resource is not on local file system
|
||||
$_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3],
|
||||
array($params['resource_name'], $smarty));
|
||||
}
|
||||
|
||||
return $_smarty_trusted;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
125
includes/onyx/templates/libs/internals/core.load_plugins.php
Normal file
125
includes/onyx/templates/libs/internals/core.load_plugins.php
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Load requested plugins
|
||||
*
|
||||
* @param array $plugins
|
||||
*/
|
||||
|
||||
// $plugins
|
||||
|
||||
function smarty_core_load_plugins($params, &$smarty)
|
||||
{
|
||||
|
||||
foreach ($params['plugins'] as $_plugin_info) {
|
||||
list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info;
|
||||
$_plugin = &$smarty->_plugins[$_type][$_name];
|
||||
|
||||
/*
|
||||
* We do not load plugin more than once for each instance of Smarty.
|
||||
* The following code checks for that. The plugin can also be
|
||||
* registered dynamically at runtime, in which case template file
|
||||
* and line number will be unknown, so we fill them in.
|
||||
*
|
||||
* The final element of the info array is a flag that indicates
|
||||
* whether the dynamically registered plugin function has been
|
||||
* checked for existence yet or not.
|
||||
*/
|
||||
if (isset($_plugin)) {
|
||||
if (empty($_plugin[3])) {
|
||||
if (!is_callable($_plugin[0])) {
|
||||
$smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
|
||||
} else {
|
||||
$_plugin[1] = $_tpl_file;
|
||||
$_plugin[2] = $_tpl_line;
|
||||
$_plugin[3] = true;
|
||||
if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */
|
||||
}
|
||||
}
|
||||
continue;
|
||||
} else if ($_type == 'insert') {
|
||||
/*
|
||||
* For backwards compatibility, we check for insert functions in
|
||||
* the symbol table before trying to load them as a plugin.
|
||||
*/
|
||||
$_plugin_func = 'insert_' . $_name;
|
||||
if (function_exists($_plugin_func)) {
|
||||
$_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$_plugin_file = $smarty->_get_plugin_filepath($_type, $_name);
|
||||
|
||||
if (! $_found = ($_plugin_file != false)) {
|
||||
$_message = "could not load plugin file '$_type.$_name.php'\n";
|
||||
}
|
||||
|
||||
/*
|
||||
* If plugin file is found, it -must- provide the properly named
|
||||
* plugin function. In case it doesn't, simply output the error and
|
||||
* do not fall back on any other method.
|
||||
*/
|
||||
if ($_found) {
|
||||
include_once $_plugin_file;
|
||||
|
||||
$_plugin_func = 'smarty_' . $_type . '_' . $_name;
|
||||
if (!function_exists($_plugin_func)) {
|
||||
$smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* In case of insert plugins, their code may be loaded later via
|
||||
* 'script' attribute.
|
||||
*/
|
||||
else if ($_type == 'insert' && $_delayed_loading) {
|
||||
$_plugin_func = 'smarty_' . $_type . '_' . $_name;
|
||||
$_found = true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Plugin specific processing and error checking.
|
||||
*/
|
||||
if (!$_found) {
|
||||
if ($_type == 'modifier') {
|
||||
/*
|
||||
* In case modifier falls back on using PHP functions
|
||||
* directly, we only allow those specified in the security
|
||||
* context.
|
||||
*/
|
||||
if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) {
|
||||
$_message = "(secure mode) modifier '$_name' is not allowed";
|
||||
} else {
|
||||
if (!function_exists($_name)) {
|
||||
$_message = "modifier '$_name' is not implemented";
|
||||
} else {
|
||||
$_plugin_func = $_name;
|
||||
$_found = true;
|
||||
}
|
||||
}
|
||||
} else if ($_type == 'function') {
|
||||
/*
|
||||
* This is a catch-all situation.
|
||||
*/
|
||||
$_message = "unknown tag - '$_name'";
|
||||
}
|
||||
}
|
||||
|
||||
if ($_found) {
|
||||
$smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true);
|
||||
} else {
|
||||
// output error
|
||||
$smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* load a resource plugin
|
||||
*
|
||||
* @param string $type
|
||||
*/
|
||||
|
||||
// $type
|
||||
|
||||
function smarty_core_load_resource_plugin($params, &$smarty)
|
||||
{
|
||||
/*
|
||||
* Resource plugins are not quite like the other ones, so they are
|
||||
* handled differently. The first element of plugin info is the array of
|
||||
* functions provided by the plugin, the second one indicates whether
|
||||
* all of them exist or not.
|
||||
*/
|
||||
|
||||
$_plugin = &$smarty->_plugins['resource'][$params['type']];
|
||||
if (isset($_plugin)) {
|
||||
if (!$_plugin[1] && count($_plugin[0])) {
|
||||
$_plugin[1] = true;
|
||||
foreach ($_plugin[0] as $_plugin_func) {
|
||||
if (!is_callable($_plugin_func)) {
|
||||
$_plugin[1] = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$_plugin[1]) {
|
||||
$smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']);
|
||||
$_found = ($_plugin_file != false);
|
||||
|
||||
if ($_found) { /*
|
||||
* If the plugin file is found, it -must- provide the properly named
|
||||
* plugin functions.
|
||||
*/
|
||||
include_once($_plugin_file);
|
||||
|
||||
/*
|
||||
* Locate functions that we require the plugin to provide.
|
||||
*/
|
||||
$_resource_ops = array('source', 'timestamp', 'secure', 'trusted');
|
||||
$_resource_funcs = array();
|
||||
foreach ($_resource_ops as $_op) {
|
||||
$_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op;
|
||||
if (!function_exists($_plugin_func)) {
|
||||
$smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__);
|
||||
return;
|
||||
} else {
|
||||
$_resource_funcs[] = $_plugin_func;
|
||||
}
|
||||
}
|
||||
|
||||
$smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true);
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Replace cached inserts with the actual results
|
||||
*
|
||||
* @param string $results
|
||||
* @return string
|
||||
*/
|
||||
function smarty_core_process_cached_inserts($params, &$smarty)
|
||||
{
|
||||
preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis',
|
||||
$params['results'], $match);
|
||||
list($cached_inserts, $insert_args) = $match;
|
||||
|
||||
for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) {
|
||||
if ($smarty->debugging) {
|
||||
$_params = array();
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
|
||||
$debug_start_time = smarty_core_get_microtime($_params, $smarty);
|
||||
}
|
||||
|
||||
$args = unserialize($insert_args[$i]);
|
||||
$name = $args['name'];
|
||||
|
||||
if (isset($args['script'])) {
|
||||
$_params = array('resource_name' => $smarty->_dequote($args['script']));
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
|
||||
if(!smarty_core_get_php_resource($_params, $smarty)) {
|
||||
return false;
|
||||
}
|
||||
$resource_type = $_params['resource_type'];
|
||||
$php_resource = $_params['php_resource'];
|
||||
|
||||
|
||||
if ($resource_type == 'file') {
|
||||
$smarty->_include($php_resource, true);
|
||||
} else {
|
||||
$smarty->_eval($php_resource);
|
||||
}
|
||||
}
|
||||
|
||||
$function_name = $smarty->_plugins['insert'][$name][0];
|
||||
if (empty($args['assign'])) {
|
||||
$replace = $function_name($args, $smarty);
|
||||
} else {
|
||||
$smarty->assign($args['assign'], $function_name($args, $smarty));
|
||||
$replace = '';
|
||||
}
|
||||
|
||||
$params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i]));
|
||||
if ($smarty->debugging) {
|
||||
$_params = array();
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
|
||||
$smarty->_smarty_debug_info[] = array('type' => 'insert',
|
||||
'filename' => 'insert_'.$name,
|
||||
'depth' => $smarty->_inclusion_depth,
|
||||
'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time);
|
||||
}
|
||||
}
|
||||
|
||||
return $params['results'];
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Replace nocache-tags by results of the corresponding non-cacheable
|
||||
* functions and return it
|
||||
*
|
||||
* @param string $compiled_tpl
|
||||
* @param string $cached_source
|
||||
* @return string
|
||||
*/
|
||||
|
||||
function smarty_core_process_compiled_include($params, &$smarty)
|
||||
{
|
||||
$_cache_including = $smarty->_cache_including;
|
||||
$smarty->_cache_including = true;
|
||||
|
||||
$_return = $params['results'];
|
||||
|
||||
foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) {
|
||||
$smarty->_include($_include_file_path, true);
|
||||
}
|
||||
|
||||
foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) {
|
||||
$_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s',
|
||||
array(&$smarty, '_process_compiled_include_callback'),
|
||||
$_return);
|
||||
}
|
||||
$smarty->_cache_including = $_cache_including;
|
||||
return $_return;
|
||||
}
|
||||
|
||||
?>
|
||||
101
includes/onyx/templates/libs/internals/core.read_cache_file.php
Normal file
101
includes/onyx/templates/libs/internals/core.read_cache_file.php
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* read a cache file, determine if it needs to be
|
||||
* regenerated or not
|
||||
*
|
||||
* @param string $tpl_file
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
* @param string $results
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $tpl_file, $cache_id, $compile_id, &$results
|
||||
|
||||
function smarty_core_read_cache_file(&$params, &$smarty)
|
||||
{
|
||||
static $content_cache = array();
|
||||
|
||||
if ($smarty->force_compile) {
|
||||
// force compile enabled, always regenerate
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) {
|
||||
list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']];
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!empty($smarty->cache_handler_func)) {
|
||||
// use cache_handler function
|
||||
call_user_func_array($smarty->cache_handler_func,
|
||||
array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
|
||||
} else {
|
||||
// use local cache file
|
||||
$_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
|
||||
$_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
|
||||
$params['results'] = $smarty->_read_file($_cache_file);
|
||||
}
|
||||
|
||||
if (empty($params['results'])) {
|
||||
// nothing to parse (error?), regenerate cache
|
||||
return false;
|
||||
}
|
||||
|
||||
$_contents = $params['results'];
|
||||
$_info_start = strpos($_contents, "\n") + 1;
|
||||
$_info_len = (int)substr($_contents, 0, $_info_start - 1);
|
||||
$_cache_info = unserialize(substr($_contents, $_info_start, $_info_len));
|
||||
$params['results'] = substr($_contents, $_info_start + $_info_len);
|
||||
|
||||
if ($smarty->caching == 2 && isset ($_cache_info['expires'])){
|
||||
// caching by expiration time
|
||||
if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) {
|
||||
// cache expired, regenerate
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// caching by lifetime
|
||||
if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) {
|
||||
// cache expired, regenerate
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($smarty->compile_check) {
|
||||
$_params = array('get_source' => false, 'quiet'=>true);
|
||||
foreach (array_keys($_cache_info['template']) as $_template_dep) {
|
||||
$_params['resource_name'] = $_template_dep;
|
||||
if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
|
||||
// template file has changed, regenerate cache
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_cache_info['config'])) {
|
||||
$_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true);
|
||||
foreach (array_keys($_cache_info['config']) as $_config_dep) {
|
||||
$_params['resource_name'] = $_config_dep;
|
||||
if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) {
|
||||
// config file has changed, regenerate cache
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info);
|
||||
|
||||
$smarty->_cache_info = $_cache_info;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
71
includes/onyx/templates/libs/internals/core.rm_auto.php
Normal file
71
includes/onyx/templates/libs/internals/core.rm_auto.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* delete an automagically created file by name and id
|
||||
*
|
||||
* @param string $auto_base
|
||||
* @param string $auto_source
|
||||
* @param string $auto_id
|
||||
* @param integer $exp_time
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $auto_base, $auto_source = null, $auto_id = null, $exp_time = null
|
||||
|
||||
function smarty_core_rm_auto($params, &$smarty)
|
||||
{
|
||||
if (!@is_dir($params['auto_base']))
|
||||
return false;
|
||||
|
||||
if(!isset($params['auto_id']) && !isset($params['auto_source'])) {
|
||||
$_params = array(
|
||||
'dirname' => $params['auto_base'],
|
||||
'level' => 0,
|
||||
'exp_time' => $params['exp_time']
|
||||
);
|
||||
require_once(SMARTY_CORE_DIR . 'core.rmdir.php');
|
||||
$_res = smarty_core_rmdir($_params, $smarty);
|
||||
} else {
|
||||
$_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']);
|
||||
|
||||
if(isset($params['auto_source'])) {
|
||||
if (isset($params['extensions'])) {
|
||||
$_res = false;
|
||||
foreach ((array)$params['extensions'] as $_extension)
|
||||
$_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']);
|
||||
} else {
|
||||
$_res = $smarty->_unlink($_tname, $params['exp_time']);
|
||||
}
|
||||
} elseif ($smarty->use_sub_dirs) {
|
||||
$_params = array(
|
||||
'dirname' => $_tname,
|
||||
'level' => 1,
|
||||
'exp_time' => $params['exp_time']
|
||||
);
|
||||
require_once(SMARTY_CORE_DIR . 'core.rmdir.php');
|
||||
$_res = smarty_core_rmdir($_params, $smarty);
|
||||
} else {
|
||||
// remove matching file names
|
||||
$_handle = opendir($params['auto_base']);
|
||||
$_res = true;
|
||||
while (false !== ($_filename = readdir($_handle))) {
|
||||
if($_filename == '.' || $_filename == '..') {
|
||||
continue;
|
||||
} elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) {
|
||||
$_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $_res;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
54
includes/onyx/templates/libs/internals/core.rmdir.php
Normal file
54
includes/onyx/templates/libs/internals/core.rmdir.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* delete a dir recursively (level=0 -> keep root)
|
||||
* WARNING: no tests, it will try to remove what you tell it!
|
||||
*
|
||||
* @param string $dirname
|
||||
* @param integer $level
|
||||
* @param integer $exp_time
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
// $dirname, $level = 1, $exp_time = null
|
||||
|
||||
function smarty_core_rmdir($params, &$smarty)
|
||||
{
|
||||
if(!isset($params['level'])) { $params['level'] = 1; }
|
||||
if(!isset($params['exp_time'])) { $params['exp_time'] = null; }
|
||||
|
||||
if($_handle = @opendir($params['dirname'])) {
|
||||
|
||||
while (false !== ($_entry = readdir($_handle))) {
|
||||
if ($_entry != '.' && $_entry != '..') {
|
||||
if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) {
|
||||
$_params = array(
|
||||
'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry,
|
||||
'level' => $params['level'] + 1,
|
||||
'exp_time' => $params['exp_time']
|
||||
);
|
||||
smarty_core_rmdir($_params, $smarty);
|
||||
}
|
||||
else {
|
||||
$smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']);
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($_handle);
|
||||
}
|
||||
|
||||
if ($params['level']) {
|
||||
return @rmdir($params['dirname']);
|
||||
}
|
||||
return (bool)$_handle;
|
||||
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Handle insert tags
|
||||
*
|
||||
* @param array $args
|
||||
* @return string
|
||||
*/
|
||||
function smarty_core_run_insert_handler($params, &$smarty)
|
||||
{
|
||||
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
|
||||
if ($smarty->debugging) {
|
||||
$_params = array();
|
||||
$_debug_start_time = smarty_core_get_microtime($_params, $smarty);
|
||||
}
|
||||
|
||||
if ($smarty->caching) {
|
||||
$_arg_string = serialize($params['args']);
|
||||
$_name = $params['args']['name'];
|
||||
if (!isset($smarty->_cache_info['insert_tags'][$_name])) {
|
||||
$smarty->_cache_info['insert_tags'][$_name] = array('insert',
|
||||
$_name,
|
||||
$smarty->_plugins['insert'][$_name][1],
|
||||
$smarty->_plugins['insert'][$_name][2],
|
||||
!empty($params['args']['script']) ? true : false);
|
||||
}
|
||||
return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5;
|
||||
} else {
|
||||
if (isset($params['args']['script'])) {
|
||||
$_params = array('resource_name' => $smarty->_dequote($params['args']['script']));
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
|
||||
if(!smarty_core_get_php_resource($_params, $smarty)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($_params['resource_type'] == 'file') {
|
||||
$smarty->_include($_params['php_resource'], true);
|
||||
} else {
|
||||
$smarty->_eval($_params['php_resource']);
|
||||
}
|
||||
unset($params['args']['script']);
|
||||
}
|
||||
|
||||
$_funcname = $smarty->_plugins['insert'][$params['args']['name']][0];
|
||||
$_content = $_funcname($params['args'], $smarty);
|
||||
if ($smarty->debugging) {
|
||||
$_params = array();
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
|
||||
$smarty->_smarty_debug_info[] = array('type' => 'insert',
|
||||
'filename' => 'insert_'.$params['args']['name'],
|
||||
'depth' => $smarty->_inclusion_depth,
|
||||
'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
|
||||
}
|
||||
|
||||
if (!empty($params['args']["assign"])) {
|
||||
$smarty->assign($params['args']["assign"], $_content);
|
||||
} else {
|
||||
return $_content;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* called for included php files within templates
|
||||
*
|
||||
* @param string $smarty_file
|
||||
* @param string $smarty_assign variable to assign the included template's
|
||||
* output into
|
||||
* @param boolean $smarty_once uses include_once if this is true
|
||||
* @param array $smarty_include_vars associative array of vars from
|
||||
* {include file="blah" var=$var}
|
||||
*/
|
||||
|
||||
// $file, $assign, $once, $_smarty_include_vars
|
||||
|
||||
function smarty_core_smarty_include_php($params, &$smarty)
|
||||
{
|
||||
$_params = array('resource_name' => $params['smarty_file']);
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php');
|
||||
smarty_core_get_php_resource($_params, $smarty);
|
||||
$_smarty_resource_type = $_params['resource_type'];
|
||||
$_smarty_php_resource = $_params['php_resource'];
|
||||
|
||||
if (!empty($params['smarty_assign'])) {
|
||||
ob_start();
|
||||
if ($_smarty_resource_type == 'file') {
|
||||
$smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
|
||||
} else {
|
||||
$smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
|
||||
}
|
||||
$smarty->assign($params['smarty_assign'], ob_get_contents());
|
||||
ob_end_clean();
|
||||
} else {
|
||||
if ($_smarty_resource_type == 'file') {
|
||||
$smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']);
|
||||
} else {
|
||||
$smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Prepend the cache information to the cache file
|
||||
* and write it
|
||||
*
|
||||
* @param string $tpl_file
|
||||
* @param string $cache_id
|
||||
* @param string $compile_id
|
||||
* @param string $results
|
||||
* @return true|null
|
||||
*/
|
||||
|
||||
// $tpl_file, $cache_id, $compile_id, $results
|
||||
|
||||
function smarty_core_write_cache_file($params, &$smarty)
|
||||
{
|
||||
|
||||
// put timestamp in cache header
|
||||
$smarty->_cache_info['timestamp'] = time();
|
||||
if ($smarty->cache_lifetime > -1){
|
||||
// expiration set
|
||||
$smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime;
|
||||
} else {
|
||||
// cache will never expire
|
||||
$smarty->_cache_info['expires'] = -1;
|
||||
}
|
||||
|
||||
// collapse nocache.../nocache-tags
|
||||
if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) {
|
||||
// remove everything between every pair of outermost noache.../nocache-tags
|
||||
// and replace it by a single nocache-tag
|
||||
// this new nocache-tag will be replaced by dynamic contents in
|
||||
// smarty_core_process_compiled_includes() on a cache-read
|
||||
|
||||
$match_count = count($match[0]);
|
||||
$results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE);
|
||||
|
||||
$level = 0;
|
||||
$j = 0;
|
||||
for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) {
|
||||
if ($results[$i] == $match[0][$j]) {
|
||||
// nocache tag
|
||||
if ($match[1][$j]) { // closing tag
|
||||
$level--;
|
||||
unset($results[$i]);
|
||||
} else { // opening tag
|
||||
if ($level++ > 0) unset($results[$i]);
|
||||
}
|
||||
$j++;
|
||||
} elseif ($level > 0) {
|
||||
unset($results[$i]);
|
||||
}
|
||||
}
|
||||
$params['results'] = implode('', $results);
|
||||
}
|
||||
$smarty->_cache_info['cache_serials'] = $smarty->_cache_serials;
|
||||
|
||||
// prepend the cache header info into cache file
|
||||
$_cache_info = serialize($smarty->_cache_info);
|
||||
$params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results'];
|
||||
|
||||
if (!empty($smarty->cache_handler_func)) {
|
||||
// use cache_handler function
|
||||
call_user_func_array($smarty->cache_handler_func,
|
||||
array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
|
||||
} else {
|
||||
// use local cache file
|
||||
|
||||
if(!@is_writable($smarty->cache_dir)) {
|
||||
// cache_dir not writable, see if it exists
|
||||
if(!@is_dir($smarty->cache_dir)) {
|
||||
$smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
|
||||
return false;
|
||||
}
|
||||
$smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
$_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
|
||||
$_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
|
||||
$_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true);
|
||||
require_once(SMARTY_CORE_DIR . 'core.write_file.php');
|
||||
smarty_core_write_file($_params, $smarty);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Extract non-cacheable parts out of compiled template and write it
|
||||
*
|
||||
* @param string $compile_path
|
||||
* @param string $template_compiled
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
function smarty_core_write_compiled_include($params, &$smarty)
|
||||
{
|
||||
$_tag_start = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; endif;';
|
||||
$_tag_end = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{/nocache\:(\\2)#(\\3)\}\'; endif;';
|
||||
|
||||
preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us',
|
||||
$params['compiled_content'], $_match_source, PREG_SET_ORDER);
|
||||
|
||||
// no nocache-parts found: done
|
||||
if (count($_match_source)==0) return;
|
||||
|
||||
// convert the matched php-code to functions
|
||||
$_include_compiled = "<?php /* Smarty version ".$smarty->_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n";
|
||||
$_include_compiled .= " compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n";
|
||||
|
||||
$_compile_path = $params['include_file_path'];
|
||||
|
||||
$smarty->_cache_serials[$_compile_path] = $params['cache_serial'];
|
||||
$_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>";
|
||||
|
||||
$_include_compiled .= $params['plugins_code'];
|
||||
$_include_compiled .= "<?php";
|
||||
|
||||
$this_varname = ((double)phpversion() >= 5.0) ? '_smarty' : 'this';
|
||||
for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) {
|
||||
$_match =& $_match_source[$_i];
|
||||
$source = $_match[4];
|
||||
if ($this_varname == '_smarty') {
|
||||
/* rename $this to $_smarty in the sourcecode */
|
||||
$tokens = token_get_all('<?php ' . $_match[4]);
|
||||
|
||||
/* remove trailing <?php */
|
||||
$open_tag = '';
|
||||
while ($tokens) {
|
||||
$token = array_shift($tokens);
|
||||
if (is_array($token)) {
|
||||
$open_tag .= $token[1];
|
||||
} else {
|
||||
$open_tag .= $token;
|
||||
}
|
||||
if ($open_tag == '<?php ') break;
|
||||
}
|
||||
|
||||
for ($i=0, $count = count($tokens); $i < $count; $i++) {
|
||||
if (is_array($tokens[$i])) {
|
||||
if ($tokens[$i][0] == T_VARIABLE && $tokens[$i][1] == '$this') {
|
||||
$tokens[$i] = '$' . $this_varname;
|
||||
} else {
|
||||
$tokens[$i] = $tokens[$i][1];
|
||||
}
|
||||
}
|
||||
}
|
||||
$source = implode('', $tokens);
|
||||
}
|
||||
|
||||
/* add function to compiled include */
|
||||
$_include_compiled .= "
|
||||
function _smarty_tplfunc_$_match[2]_$_match[3](&\$$this_varname)
|
||||
{
|
||||
$source
|
||||
}
|
||||
|
||||
";
|
||||
}
|
||||
$_include_compiled .= "\n\n?>\n";
|
||||
|
||||
$_params = array('filename' => $_compile_path,
|
||||
'contents' => $_include_compiled, 'create_dirs' => true);
|
||||
|
||||
require_once(SMARTY_CORE_DIR . 'core.write_file.php');
|
||||
smarty_core_write_file($_params, $smarty);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* write the compiled resource
|
||||
*
|
||||
* @param string $compile_path
|
||||
* @param string $compiled_content
|
||||
* @return true
|
||||
*/
|
||||
function smarty_core_write_compiled_resource($params, &$smarty)
|
||||
{
|
||||
if(!@is_writable($smarty->compile_dir)) {
|
||||
// compile_dir not writable, see if it exists
|
||||
if(!@is_dir($smarty->compile_dir)) {
|
||||
$smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
|
||||
return false;
|
||||
}
|
||||
$smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
$_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true);
|
||||
require_once(SMARTY_CORE_DIR . 'core.write_file.php');
|
||||
smarty_core_write_file($_params, $smarty);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
54
includes/onyx/templates/libs/internals/core.write_file.php
Normal file
54
includes/onyx/templates/libs/internals/core.write_file.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* write out a file to disk
|
||||
*
|
||||
* @param string $filename
|
||||
* @param string $contents
|
||||
* @param boolean $create_dirs
|
||||
* @return boolean
|
||||
*/
|
||||
function smarty_core_write_file($params, &$smarty)
|
||||
{
|
||||
$_dirname = dirname($params['filename']);
|
||||
|
||||
if ($params['create_dirs']) {
|
||||
$_params = array('dir' => $_dirname);
|
||||
require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php');
|
||||
smarty_core_create_dir_structure($_params, $smarty);
|
||||
}
|
||||
|
||||
// write to tmp file, then rename it to avoid file locking race condition
|
||||
$_tmp_file = tempnam($_dirname, 'wrt');
|
||||
|
||||
if (!($fd = @fopen($_tmp_file, 'wb'))) {
|
||||
$_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt');
|
||||
if (!($fd = @fopen($_tmp_file, 'wb'))) {
|
||||
$smarty->trigger_error("problem writing temporary file '$_tmp_file'");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
fwrite($fd, $params['contents']);
|
||||
fclose($fd);
|
||||
|
||||
if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) {
|
||||
// On platforms and filesystems that cannot overwrite with rename()
|
||||
// delete the file before renaming it -- because windows always suffers
|
||||
// this, it is short-circuited to avoid the initial rename() attempt
|
||||
@unlink($params['filename']);
|
||||
@rename($_tmp_file, $params['filename']);
|
||||
}
|
||||
@chmod($params['filename'], $smarty->_file_perms);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
103
includes/onyx/templates/libs/plugins/block.textformat.php
Normal file
103
includes/onyx/templates/libs/plugins/block.textformat.php
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {textformat}{/textformat} block plugin
|
||||
*
|
||||
* Type: block function<br>
|
||||
* Name: textformat<br>
|
||||
* Purpose: format text a certain way with preset styles
|
||||
* or custom wrap/indent settings<br>
|
||||
* @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}
|
||||
* (Smarty online manual)
|
||||
* @param array
|
||||
* <pre>
|
||||
* Params: style: string (email)
|
||||
* indent: integer (0)
|
||||
* wrap: integer (80)
|
||||
* wrap_char string ("\n")
|
||||
* indent_char: string (" ")
|
||||
* wrap_boundary: boolean (true)
|
||||
* </pre>
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string contents of the block
|
||||
* @param Smarty clever simulation of a method
|
||||
* @return string string $content re-formatted
|
||||
*/
|
||||
function smarty_block_textformat($params, $content, &$smarty)
|
||||
{
|
||||
if (is_null($content)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$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:
|
||||
$smarty->trigger_error("textformat: unknown attribute '$_key'");
|
||||
}
|
||||
}
|
||||
|
||||
if ($style == 'email') {
|
||||
$wrap = 72;
|
||||
}
|
||||
|
||||
// split into paragraphs
|
||||
$_paragraphs = preg_split('![\r\n][\r\n]!',$content);
|
||||
$_output = '';
|
||||
|
||||
for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {
|
||||
if ($_paragraphs[$_x] == '') {
|
||||
continue;
|
||||
}
|
||||
// convert mult. spaces & special chars to single space
|
||||
$_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]);
|
||||
// indent first line
|
||||
if($indent_first > 0) {
|
||||
$_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];
|
||||
}
|
||||
// wordwrap sentences
|
||||
$_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut);
|
||||
// indent lines
|
||||
if($indent > 0) {
|
||||
$_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);
|
||||
}
|
||||
}
|
||||
$_output = implode($wrap_char . $wrap_char, $_paragraphs);
|
||||
|
||||
return $assign ? $smarty->assign($assign, $_output) : $_output;
|
||||
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
40
includes/onyx/templates/libs/plugins/compiler.assign.php
Normal file
40
includes/onyx/templates/libs/plugins/compiler.assign.php
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {assign} compiler function plugin
|
||||
*
|
||||
* Type: compiler function<br>
|
||||
* Name: assign<br>
|
||||
* Purpose: assign a value to a template variable
|
||||
* @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com> (initial author)
|
||||
* @author messju mohr <messju at lammfellpuschen dot de> (conversion to compiler function)
|
||||
* @param string containing var-attribute and value-attribute
|
||||
* @param Smarty_Compiler
|
||||
*/
|
||||
function smarty_compiler_assign($tag_attrs, &$compiler)
|
||||
{
|
||||
$_params = $compiler->_parse_attrs($tag_attrs);
|
||||
|
||||
if (!isset($_params['var'])) {
|
||||
$compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($_params['value'])) {
|
||||
$compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING);
|
||||
return;
|
||||
}
|
||||
|
||||
return "\$this->assign({$_params['var']}, {$_params['value']});";
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {assign_debug_info} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: assign_debug_info<br>
|
||||
* Purpose: assign debug info to the template<br>
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array unused in this plugin, this plugin uses {@link Smarty::$_config},
|
||||
* {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info}
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_function_assign_debug_info($params, &$smarty)
|
||||
{
|
||||
$assigned_vars = $smarty->_tpl_vars;
|
||||
ksort($assigned_vars);
|
||||
if (@is_array($smarty->_config[0])) {
|
||||
$config_vars = $smarty->_config[0];
|
||||
ksort($config_vars);
|
||||
$smarty->assign("_debug_config_keys", array_keys($config_vars));
|
||||
$smarty->assign("_debug_config_vals", array_values($config_vars));
|
||||
}
|
||||
|
||||
$included_templates = $smarty->_smarty_debug_info;
|
||||
|
||||
$smarty->assign("_debug_keys", array_keys($assigned_vars));
|
||||
$smarty->assign("_debug_vals", array_values($assigned_vars));
|
||||
|
||||
$smarty->assign("_debug_tpls", $included_templates);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
142
includes/onyx/templates/libs/plugins/function.config_load.php
Normal file
142
includes/onyx/templates/libs/plugins/function.config_load.php
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {config_load} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: config_load<br>
|
||||
* Purpose: load config file vars
|
||||
* @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @author messju mohr <messju at lammfellpuschen dot de> (added use of resources)
|
||||
* @param array Format:
|
||||
* <pre>
|
||||
* array('file' => required config file name,
|
||||
* 'section' => optional config file section to load
|
||||
* 'scope' => local/parent/global
|
||||
* 'global' => overrides scope, setting to parent if true)
|
||||
* </pre>
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_function_config_load($params, &$smarty)
|
||||
{
|
||||
if ($smarty->debugging) {
|
||||
$_params = array();
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
|
||||
$_debug_start_time = smarty_core_get_microtime($_params, $smarty);
|
||||
}
|
||||
|
||||
$_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null;
|
||||
$_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null;
|
||||
$_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global';
|
||||
$_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false;
|
||||
|
||||
if (!isset($_file) || strlen($_file) == 0) {
|
||||
$smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
if (isset($_scope)) {
|
||||
if ($_scope != 'local' &&
|
||||
$_scope != 'parent' &&
|
||||
$_scope != 'global') {
|
||||
$smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__);
|
||||
}
|
||||
} else {
|
||||
if ($_global) {
|
||||
$_scope = 'parent';
|
||||
} else {
|
||||
$_scope = 'local';
|
||||
}
|
||||
}
|
||||
|
||||
$_params = array('resource_name' => $_file,
|
||||
'resource_base_path' => $smarty->config_dir,
|
||||
'get_source' => false);
|
||||
$smarty->_parse_resource_name($_params);
|
||||
$_file_path = $_params['resource_type'] . ':' . $_params['resource_name'];
|
||||
if (isset($_section))
|
||||
$_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section);
|
||||
else
|
||||
$_compile_file = $smarty->_get_compile_path($_file_path);
|
||||
|
||||
if($smarty->force_compile || !file_exists($_compile_file)) {
|
||||
$_compile = true;
|
||||
} elseif ($smarty->compile_check) {
|
||||
$_params = array('resource_name' => $_file,
|
||||
'resource_base_path' => $smarty->config_dir,
|
||||
'get_source' => false);
|
||||
$_compile = $smarty->_fetch_resource_info($_params) &&
|
||||
$_params['resource_timestamp'] > filemtime($_compile_file);
|
||||
} else {
|
||||
$_compile = false;
|
||||
}
|
||||
|
||||
if($_compile) {
|
||||
// compile config file
|
||||
if(!is_object($smarty->_conf_obj)) {
|
||||
require_once SMARTY_DIR . $smarty->config_class . '.class.php';
|
||||
$smarty->_conf_obj = new $smarty->config_class();
|
||||
$smarty->_conf_obj->overwrite = $smarty->config_overwrite;
|
||||
$smarty->_conf_obj->booleanize = $smarty->config_booleanize;
|
||||
$smarty->_conf_obj->read_hidden = $smarty->config_read_hidden;
|
||||
$smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines;
|
||||
}
|
||||
|
||||
$_params = array('resource_name' => $_file,
|
||||
'resource_base_path' => $smarty->config_dir,
|
||||
$_params['get_source'] = true);
|
||||
if (!$smarty->_fetch_resource_info($_params)) {
|
||||
return;
|
||||
}
|
||||
$smarty->_conf_obj->set_file_contents($_file, $_params['source_content']);
|
||||
$_config_vars = array_merge($smarty->_conf_obj->get($_file),
|
||||
$smarty->_conf_obj->get($_file, $_section));
|
||||
if(function_exists('var_export')) {
|
||||
$_output = '<?php $_config_vars = ' . var_export($_config_vars, true) . '; ?>';
|
||||
} else {
|
||||
$_output = '<?php $_config_vars = unserialize(\'' . strtr(serialize($_config_vars),array('\''=>'\\\'', '\\'=>'\\\\')) . '\'); ?>';
|
||||
}
|
||||
$_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp']));
|
||||
require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php');
|
||||
smarty_core_write_compiled_resource($_params, $smarty);
|
||||
} else {
|
||||
include($_compile_file);
|
||||
}
|
||||
|
||||
if ($smarty->caching) {
|
||||
$smarty->_cache_info['config'][$_file] = true;
|
||||
}
|
||||
|
||||
$smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars);
|
||||
$smarty->_config[0]['files'][$_file] = true;
|
||||
|
||||
if ($_scope == 'parent') {
|
||||
$smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars);
|
||||
$smarty->_config[1]['files'][$_file] = true;
|
||||
} else if ($_scope == 'global') {
|
||||
for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) {
|
||||
$smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars);
|
||||
$smarty->_config[$i]['files'][$_file] = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($smarty->debugging) {
|
||||
$_params = array();
|
||||
require_once(SMARTY_CORE_DIR . 'core.get_microtime.php');
|
||||
$smarty->_smarty_debug_info[] = array('type' => 'config',
|
||||
'filename' => $_file.' ['.$_section.'] '.$_scope,
|
||||
'depth' => $smarty->_inclusion_depth,
|
||||
'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
80
includes/onyx/templates/libs/plugins/function.counter.php
Normal file
80
includes/onyx/templates/libs/plugins/function.counter.php
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {counter} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: counter<br>
|
||||
* Purpose: print out a counter value
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
|
||||
* (Smarty online manual)
|
||||
* @param array parameters
|
||||
* @param Smarty
|
||||
* @return string|null
|
||||
*/
|
||||
function smarty_function_counter($params, &$smarty)
|
||||
{
|
||||
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'])) {
|
||||
$smarty->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;
|
||||
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
102
includes/onyx/templates/libs/plugins/function.cycle.php
Normal file
102
includes/onyx/templates/libs/plugins/function.cycle.php
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {cycle} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: cycle<br>
|
||||
* Date: May 3, 2002<br>
|
||||
* Purpose: cycle through given values<br>
|
||||
* Input:
|
||||
* - 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:<br>
|
||||
* <pre>
|
||||
* {cycle values="#eeeeee,#d0d0d0d"}
|
||||
* {cycle name=row values="one,two,three" reset=true}
|
||||
* {cycle name=row}
|
||||
* </pre>
|
||||
* @link http://smarty.php.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
|
||||
* @param Smarty
|
||||
* @return string|null
|
||||
*/
|
||||
function smarty_function_cycle($params, &$smarty)
|
||||
{
|
||||
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 (!in_array('values', array_keys($params))) {
|
||||
if(!isset($cycle_vars[$name]['values'])) {
|
||||
$smarty->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'];
|
||||
}
|
||||
|
||||
$cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['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;
|
||||
$smarty->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;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
35
includes/onyx/templates/libs/plugins/function.debug.php
Normal file
35
includes/onyx/templates/libs/plugins/function.debug.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {debug} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: debug<br>
|
||||
* Date: July 1, 2002<br>
|
||||
* Purpose: popup debug window
|
||||
* @link http://smarty.php.net/manual/en/language.function.debug.php {debug}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @version 1.0
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string output from {@link Smarty::_generate_debug_output()}
|
||||
*/
|
||||
function smarty_function_debug($params, &$smarty)
|
||||
{
|
||||
if (isset($params['output'])) {
|
||||
$smarty->assign('_smarty_debug_output', $params['output']);
|
||||
}
|
||||
require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php');
|
||||
return smarty_core_display_debug_console(null, $smarty);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
49
includes/onyx/templates/libs/plugins/function.eval.php
Normal file
49
includes/onyx/templates/libs/plugins/function.eval.php
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {eval} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: eval<br>
|
||||
* Purpose: evaluate a template variable as a template<br>
|
||||
* @link http://smarty.php.net/manual/en/language.function.eval.php {eval}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_function_eval($params, &$smarty)
|
||||
{
|
||||
|
||||
if (!isset($params['var'])) {
|
||||
$smarty->trigger_error("eval: missing 'var' parameter");
|
||||
return;
|
||||
}
|
||||
|
||||
if($params['var'] == '') {
|
||||
return;
|
||||
}
|
||||
|
||||
$smarty->_compile_source('evaluated template', $params['var'], $_var_compiled);
|
||||
|
||||
ob_start();
|
||||
$smarty->_eval('?>' . $_var_compiled);
|
||||
$_contents = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
if (!empty($params['assign'])) {
|
||||
$smarty->assign($params['assign'], $_contents);
|
||||
} else {
|
||||
return $_contents;
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
221
includes/onyx/templates/libs/plugins/function.fetch.php
Normal file
221
includes/onyx/templates/libs/plugins/function.fetch.php
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {fetch} plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: fetch<br>
|
||||
* Purpose: fetch file, web or ftp data and display results
|
||||
* @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string|null if the assign parameter is passed, Smarty assigns the
|
||||
* result to a template variable
|
||||
*/
|
||||
function smarty_function_fetch($params, &$smarty)
|
||||
{
|
||||
if (empty($params['file'])) {
|
||||
$smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty");
|
||||
return;
|
||||
}
|
||||
|
||||
$content = '';
|
||||
if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) {
|
||||
$_params = array('resource_type' => 'file', 'resource_name' => $params['file']);
|
||||
require_once(SMARTY_CORE_DIR . 'core.is_secure.php');
|
||||
if(!smarty_core_is_secure($_params, $smarty)) {
|
||||
$smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed');
|
||||
return;
|
||||
}
|
||||
|
||||
// fetch the file
|
||||
if($fp = @fopen($params['file'],'r')) {
|
||||
while(!feof($fp)) {
|
||||
$content .= fgets ($fp,4096);
|
||||
}
|
||||
fclose($fp);
|
||||
} else {
|
||||
$smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\'');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// not a local file
|
||||
if(preg_match('!^http://!i',$params['file'])) {
|
||||
// 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->_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)) {
|
||||
$smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'");
|
||||
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 {
|
||||
$smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'");
|
||||
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 {
|
||||
$smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'");
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'");
|
||||
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) {
|
||||
$smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)");
|
||||
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 = split("\r\n\r\n",$content,2);
|
||||
|
||||
$content = $csplit[1];
|
||||
|
||||
if(!empty($params['assign_headers'])) {
|
||||
$smarty->assign($params['assign_headers'],split("\r\n",$csplit[0]));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// ftp fetch
|
||||
if($fp = @fopen($params['file'],'r')) {
|
||||
while(!feof($fp)) {
|
||||
$content .= fgets ($fp,4096);
|
||||
}
|
||||
fclose($fp);
|
||||
} else {
|
||||
$smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\'');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!empty($params['assign'])) {
|
||||
$smarty->assign($params['assign'],$content);
|
||||
} else {
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {html_checkboxes} function plugin
|
||||
*
|
||||
* File: function.html_checkboxes.php<br>
|
||||
* Type: function<br>
|
||||
* Name: html_checkboxes<br>
|
||||
* Date: 24.Feb.2003<br>
|
||||
* Purpose: Prints out a list of checkbox input types<br>
|
||||
* Input:<br>
|
||||
* - 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
|
||||
* Examples:
|
||||
* <pre>
|
||||
* {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}
|
||||
* </pre>
|
||||
* @link http://smarty.php.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
|
||||
* @param Smarty
|
||||
* @return string
|
||||
* @uses smarty_function_escape_special_chars()
|
||||
*/
|
||||
function smarty_function_html_checkboxes($params, &$smarty)
|
||||
{
|
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
|
||||
|
||||
$name = 'checkbox';
|
||||
$values = null;
|
||||
$options = null;
|
||||
$selected = null;
|
||||
$separator = '';
|
||||
$labels = true;
|
||||
$output = null;
|
||||
|
||||
$extra = '';
|
||||
|
||||
foreach($params as $_key => $_val) {
|
||||
switch($_key) {
|
||||
case 'name':
|
||||
case 'separator':
|
||||
$$_key = $_val;
|
||||
break;
|
||||
|
||||
case 'labels':
|
||||
$$_key = (bool)$_val;
|
||||
break;
|
||||
|
||||
case 'options':
|
||||
$$_key = (array)$_val;
|
||||
break;
|
||||
|
||||
case 'values':
|
||||
case 'output':
|
||||
$$_key = array_values((array)$_val);
|
||||
break;
|
||||
|
||||
case 'checked':
|
||||
case 'selected':
|
||||
$selected = array_map('strval', array_values((array)$_val));
|
||||
break;
|
||||
|
||||
case 'checkboxes':
|
||||
$smarty->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;
|
||||
|
||||
default:
|
||||
if(!is_array($_val)) {
|
||||
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
|
||||
} else {
|
||||
$smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($options) && !isset($values))
|
||||
return ''; /* raise error here? */
|
||||
|
||||
settype($selected, 'array');
|
||||
$_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);
|
||||
|
||||
|
||||
} 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!empty($params['assign'])) {
|
||||
$smarty->assign($params['assign'], $_html_result);
|
||||
} else {
|
||||
return implode("\n",$_html_result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) {
|
||||
$_output = '';
|
||||
if ($labels) $_output .= '<label>';
|
||||
$_output .= '<input type="checkbox" name="'
|
||||
. smarty_function_escape_special_chars($name) . '[]" value="'
|
||||
. smarty_function_escape_special_chars($value) . '"';
|
||||
|
||||
if (in_array((string)$value, $selected)) {
|
||||
$_output .= ' checked="checked"';
|
||||
}
|
||||
$_output .= $extra . ' />' . $output;
|
||||
if ($labels) $_output .= '</label>';
|
||||
$_output .= $separator;
|
||||
|
||||
return $_output;
|
||||
}
|
||||
|
||||
?>
|
||||
142
includes/onyx/templates/libs/plugins/function.html_image.php
Normal file
142
includes/onyx/templates/libs/plugins/function.html_image.php
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {html_image} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: html_image<br>
|
||||
* Date: Feb 24, 2003<br>
|
||||
* Purpose: format HTML tags for the image<br>
|
||||
* Input:<br>
|
||||
* - file = file (and path) of image (required)
|
||||
* - height = image height (optional, default actual height)
|
||||
* - width = image width (optional, default actual width)
|
||||
* - basedir = base directory for absolute paths, default
|
||||
* is environment variable DOCUMENT_ROOT
|
||||
* - path_prefix = prefix for path output (optional, default empty)
|
||||
*
|
||||
* Examples: {html_image file="/images/masthead.gif"}
|
||||
* Output: <img src="/images/masthead.gif" width=400 height=23>
|
||||
* @link http://smarty.php.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> - wrote first image function
|
||||
* in repository, helped with lots of functionality
|
||||
* @version 1.0
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
* @uses smarty_function_escape_special_chars()
|
||||
*/
|
||||
function smarty_function_html_image($params, &$smarty)
|
||||
{
|
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
|
||||
|
||||
$alt = '';
|
||||
$file = '';
|
||||
$height = '';
|
||||
$width = '';
|
||||
$extra = '';
|
||||
$prefix = '';
|
||||
$suffix = '';
|
||||
$path_prefix = '';
|
||||
$server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS'];
|
||||
$basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['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 {
|
||||
$smarty->trigger_error("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 {
|
||||
$smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($file)) {
|
||||
$smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (substr($file,0,1) == '/') {
|
||||
$_image_path = $basedir . $file;
|
||||
} else {
|
||||
$_image_path = $file;
|
||||
}
|
||||
|
||||
if(!isset($params['width']) || !isset($params['height'])) {
|
||||
if(!$_image_data = @getimagesize($_image_path)) {
|
||||
if(!file_exists($_image_path)) {
|
||||
$smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
|
||||
return;
|
||||
} else if(!is_readable($_image_path)) {
|
||||
$smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
|
||||
return;
|
||||
} else {
|
||||
$smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ($smarty->security &&
|
||||
($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) &&
|
||||
(require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) &&
|
||||
(!smarty_core_is_secure($_params, $smarty)) ) {
|
||||
$smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE);
|
||||
}
|
||||
|
||||
if(!isset($params['width'])) {
|
||||
$width = $_image_data[0];
|
||||
}
|
||||
if(!isset($params['height'])) {
|
||||
$height = $_image_data[1];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(isset($params['dpi'])) {
|
||||
if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) {
|
||||
$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;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
122
includes/onyx/templates/libs/plugins/function.html_options.php
Normal file
122
includes/onyx/templates/libs/plugins/function.html_options.php
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {html_options} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: html_options<br>
|
||||
* Input:<br>
|
||||
* - 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
|
||||
* Purpose: Prints the list of <option> tags generated from
|
||||
* the passed parameters
|
||||
* @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
* @uses smarty_function_escape_special_chars()
|
||||
*/
|
||||
function smarty_function_html_options($params, &$smarty)
|
||||
{
|
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
|
||||
|
||||
$name = null;
|
||||
$values = null;
|
||||
$options = null;
|
||||
$selected = array();
|
||||
$output = null;
|
||||
|
||||
$extra = '';
|
||||
|
||||
foreach($params as $_key => $_val) {
|
||||
switch($_key) {
|
||||
case 'name':
|
||||
$$_key = (string)$_val;
|
||||
break;
|
||||
|
||||
case 'options':
|
||||
$$_key = (array)$_val;
|
||||
break;
|
||||
|
||||
case 'values':
|
||||
case 'output':
|
||||
$$_key = array_values((array)$_val);
|
||||
break;
|
||||
|
||||
case 'selected':
|
||||
$$_key = array_map('strval', array_values((array)$_val));
|
||||
break;
|
||||
|
||||
default:
|
||||
if(!is_array($_val)) {
|
||||
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
|
||||
} else {
|
||||
$smarty->trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($options) && !isset($values))
|
||||
return ''; /* raise error here? */
|
||||
|
||||
$_html_result = '';
|
||||
|
||||
if (isset($options)) {
|
||||
|
||||
foreach ($options as $_key=>$_val)
|
||||
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
|
||||
|
||||
} else {
|
||||
|
||||
foreach ($values as $_i=>$_key) {
|
||||
$_val = isset($output[$_i]) ? $output[$_i] : '';
|
||||
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!empty($name)) {
|
||||
$_html_result = '<select name="' . $name . '"' . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
|
||||
}
|
||||
|
||||
return $_html_result;
|
||||
|
||||
}
|
||||
|
||||
function smarty_function_html_options_optoutput($key, $value, $selected) {
|
||||
if(!is_array($value)) {
|
||||
$_html_result = '<option label="' . smarty_function_escape_special_chars($value) . '" value="' .
|
||||
smarty_function_escape_special_chars($key) . '"';
|
||||
if (in_array((string)$key, $selected))
|
||||
$_html_result .= ' selected="selected"';
|
||||
$_html_result .= '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n";
|
||||
} else {
|
||||
$_html_result = smarty_function_html_options_optgroup($key, $value, $selected);
|
||||
}
|
||||
return $_html_result;
|
||||
}
|
||||
|
||||
function smarty_function_html_options_optgroup($key, $values, $selected) {
|
||||
$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);
|
||||
}
|
||||
$optgroup_html .= "</optgroup>\n";
|
||||
return $optgroup_html;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
156
includes/onyx/templates/libs/plugins/function.html_radios.php
Normal file
156
includes/onyx/templates/libs/plugins/function.html_radios.php
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {html_radios} function plugin
|
||||
*
|
||||
* File: function.html_radios.php<br>
|
||||
* Type: function<br>
|
||||
* Name: html_radios<br>
|
||||
* Date: 24.Feb.2003<br>
|
||||
* Purpose: Prints out a list of radio input types<br>
|
||||
* Input:<br>
|
||||
* - name (optional) - string default "radio"
|
||||
* - 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 radio button
|
||||
* - assign (optional) - assign the output as an array to this variable
|
||||
* Examples:
|
||||
* <pre>
|
||||
* {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}
|
||||
* </pre>
|
||||
* @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
|
||||
* @param Smarty
|
||||
* @return string
|
||||
* @uses smarty_function_escape_special_chars()
|
||||
*/
|
||||
function smarty_function_html_radios($params, &$smarty)
|
||||
{
|
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
|
||||
|
||||
$name = 'radio';
|
||||
$values = null;
|
||||
$options = null;
|
||||
$selected = null;
|
||||
$separator = '';
|
||||
$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)) {
|
||||
$smarty->trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
|
||||
} else {
|
||||
$selected = (string)$_val;
|
||||
}
|
||||
break;
|
||||
|
||||
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':
|
||||
$smarty->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;
|
||||
|
||||
default:
|
||||
if(!is_array($_val)) {
|
||||
$extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
|
||||
} else {
|
||||
$smarty->trigger_error("html_radios: 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_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
|
||||
|
||||
} 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!empty($params['assign'])) {
|
||||
$smarty->assign($params['assign'], $_html_result);
|
||||
} else {
|
||||
return implode("\n",$_html_result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids) {
|
||||
$_output = '';
|
||||
if ($labels) {
|
||||
if($label_ids) {
|
||||
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!', '_', $name . '_' . $value));
|
||||
$_output .= '<label for="' . $_id . '">';
|
||||
} else {
|
||||
$_output .= '<label>';
|
||||
}
|
||||
}
|
||||
$_output .= '<input type="radio" name="'
|
||||
. smarty_function_escape_special_chars($name) . '" value="'
|
||||
. smarty_function_escape_special_chars($value) . '"';
|
||||
|
||||
if ($labels && $label_ids) $_output .= ' id="' . $_id . '"';
|
||||
|
||||
if ((string)$value==$selected) {
|
||||
$_output .= ' checked="checked"';
|
||||
}
|
||||
$_output .= $extra . ' />' . $output;
|
||||
if ($labels) $_output .= '</label>';
|
||||
$_output .= $separator;
|
||||
|
||||
return $_output;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,331 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty {html_select_date} plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: html_select_date<br>
|
||||
* Purpose: Prints the dropdowns for date selection.
|
||||
*
|
||||
* ChangeLog:<br>
|
||||
* - 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)
|
||||
* @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date}
|
||||
* (Smarty online manual)
|
||||
* @version 1.3.4
|
||||
* @author Andrei Zmievski
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_html_select_date($params, &$smarty)
|
||||
{
|
||||
require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
|
||||
require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
|
||||
require_once $smarty->_get_plugin_filepath('function','html_options');
|
||||
/* Default values. */
|
||||
$prefix = "Date_";
|
||||
$start_year = strftime("%Y");
|
||||
$end_year = $start_year;
|
||||
$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";
|
||||
$time = time();
|
||||
$all_empty = null;
|
||||
$day_empty = null;
|
||||
$month_empty = null;
|
||||
$year_empty = null;
|
||||
$extra_attrs = '';
|
||||
|
||||
foreach ($params as $_key=>$_value) {
|
||||
switch ($_key) {
|
||||
case 'prefix':
|
||||
case 'time':
|
||||
case 'start_year':
|
||||
case 'end_year':
|
||||
case 'month_format':
|
||||
case 'day_format':
|
||||
case 'day_value_format':
|
||||
case 'field_array':
|
||||
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 'month_value_format':
|
||||
case 'month_empty':
|
||||
case 'day_empty':
|
||||
case 'year_empty':
|
||||
$$_key = (string)$_value;
|
||||
break;
|
||||
|
||||
case 'all_empty':
|
||||
$$_key = (string)$_value;
|
||||
$day_empty = $month_empty = $year_empty = $all_empty;
|
||||
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 {
|
||||
$smarty->trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('!^-\d+$!', $time)) {
|
||||
// negative timestamp, use date()
|
||||
$time = date('Y-m-d', $time);
|
||||
}
|
||||
// If $time is not in format yyyy-mm-dd
|
||||
if (preg_match('/^(\d{0,4}-\d{0,2}-\d{0,2})/', $time, $found)) {
|
||||
$time = $found[1];
|
||||
} else {
|
||||
// use smarty_make_timestamp to get an unix timestamp and
|
||||
// strftime to make yyyy-mm-dd
|
||||
$time = strftime('%Y-%m-%d', smarty_make_timestamp($time));
|
||||
}
|
||||
// Now split this in pieces, which later can be used to set the select
|
||||
$time = explode("-", $time);
|
||||
|
||||
// make syntax "+N" or "-N" work with start_year and end_year
|
||||
if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) {
|
||||
if ($match[1] == '+') {
|
||||
$end_year = strftime('%Y') + $match[2];
|
||||
} else {
|
||||
$end_year = strftime('%Y') - $match[2];
|
||||
}
|
||||
}
|
||||
if (preg_match('!^(\+|\-)\s*(\d+)$!', $start_year, $match)) {
|
||||
if ($match[1] == '+') {
|
||||
$start_year = strftime('%Y') + $match[2];
|
||||
} else {
|
||||
$start_year = strftime('%Y') - $match[2];
|
||||
}
|
||||
}
|
||||
if (strlen($time[0]) > 0) {
|
||||
if ($start_year > $time[0] && !isset($params['start_year'])) {
|
||||
// force start year to include given date if not explicitly set
|
||||
$start_year = $time[0];
|
||||
}
|
||||
if($end_year < $time[0] && !isset($params['end_year'])) {
|
||||
// force end year to include given date if not explicitly set
|
||||
$end_year = $time[0];
|
||||
}
|
||||
}
|
||||
|
||||
$field_order = strtoupper($field_order);
|
||||
|
||||
$html_result = $month_result = $day_result = $year_result = "";
|
||||
|
||||
$field_separator_count = -1;
|
||||
if ($display_months) {
|
||||
$field_separator_count++;
|
||||
$month_names = array();
|
||||
$month_values = array();
|
||||
if(isset($month_empty)) {
|
||||
$month_names[''] = $month_empty;
|
||||
$month_values[''] = '';
|
||||
}
|
||||
for ($i = 1; $i <= 12; $i++) {
|
||||
$month_names[$i] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000));
|
||||
$month_values[$i] = strftime($month_value_format, mktime(0, 0, 0, $i, 1, 2000));
|
||||
}
|
||||
|
||||
$month_result .= '<select name=';
|
||||
if (null !== $field_array){
|
||||
$month_result .= '"' . $field_array . '[' . $prefix . 'Month]"';
|
||||
} else {
|
||||
$month_result .= '"' . $prefix . 'Month"';
|
||||
}
|
||||
if (null !== $month_size){
|
||||
$month_result .= ' size="' . $month_size . '"';
|
||||
}
|
||||
if (null !== $month_extra){
|
||||
$month_result .= ' ' . $month_extra;
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$month_result .= ' ' . $all_extra;
|
||||
}
|
||||
$month_result .= $extra_attrs . '>'."\n";
|
||||
|
||||
$month_result .= smarty_function_html_options(array('output' => $month_names,
|
||||
'values' => $month_values,
|
||||
'selected' => (int)$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '',
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$month_result .= '</select>';
|
||||
}
|
||||
|
||||
if ($display_days) {
|
||||
$field_separator_count++;
|
||||
$days = array();
|
||||
if (isset($day_empty)) {
|
||||
$days[''] = $day_empty;
|
||||
$day_values[''] = '';
|
||||
}
|
||||
for ($i = 1; $i <= 31; $i++) {
|
||||
$days[] = sprintf($day_format, $i);
|
||||
$day_values[] = sprintf($day_value_format, $i);
|
||||
}
|
||||
|
||||
$day_result .= '<select name=';
|
||||
if (null !== $field_array){
|
||||
$day_result .= '"' . $field_array . '[' . $prefix . 'Day]"';
|
||||
} else {
|
||||
$day_result .= '"' . $prefix . 'Day"';
|
||||
}
|
||||
if (null !== $day_size){
|
||||
$day_result .= ' size="' . $day_size . '"';
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$day_result .= ' ' . $all_extra;
|
||||
}
|
||||
if (null !== $day_extra){
|
||||
$day_result .= ' ' . $day_extra;
|
||||
}
|
||||
$day_result .= $extra_attrs . '>'."\n";
|
||||
$day_result .= smarty_function_html_options(array('output' => $days,
|
||||
'values' => $day_values,
|
||||
'selected' => $time[2],
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$day_result .= '</select>';
|
||||
}
|
||||
|
||||
if ($display_years) {
|
||||
$field_separator_count++;
|
||||
if (null !== $field_array){
|
||||
$year_name = $field_array . '[' . $prefix . 'Year]';
|
||||
} else {
|
||||
$year_name = $prefix . 'Year';
|
||||
}
|
||||
if ($year_as_text) {
|
||||
$year_result .= '<input type="text" name="' . $year_name . '" value="' . $time[0] . '" size="4" maxlength="4"';
|
||||
if (null !== $all_extra){
|
||||
$year_result .= ' ' . $all_extra;
|
||||
}
|
||||
if (null !== $year_extra){
|
||||
$year_result .= ' ' . $year_extra;
|
||||
}
|
||||
$year_result .= ' />';
|
||||
} else {
|
||||
$years = range((int)$start_year, (int)$end_year);
|
||||
if ($reverse_years) {
|
||||
rsort($years, SORT_NUMERIC);
|
||||
} else {
|
||||
sort($years, SORT_NUMERIC);
|
||||
}
|
||||
$yearvals = $years;
|
||||
if(isset($year_empty)) {
|
||||
array_unshift($years, $year_empty);
|
||||
array_unshift($yearvals, '');
|
||||
}
|
||||
$year_result .= '<select name="' . $year_name . '"';
|
||||
if (null !== $year_size){
|
||||
$year_result .= ' size="' . $year_size . '"';
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$year_result .= ' ' . $all_extra;
|
||||
}
|
||||
if (null !== $year_extra){
|
||||
$year_result .= ' ' . $year_extra;
|
||||
}
|
||||
$year_result .= $extra_attrs . '>'."\n";
|
||||
$year_result .= smarty_function_html_options(array('output' => $years,
|
||||
'values' => $yearvals,
|
||||
'selected' => $time[0],
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$year_result .= '</select>';
|
||||
}
|
||||
}
|
||||
|
||||
// Loop thru the field_order field
|
||||
for ($i = 0; $i <= 2; $i++){
|
||||
$c = substr($field_order, $i, 1);
|
||||
switch ($c){
|
||||
case 'D':
|
||||
$html_result .= $day_result;
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
$html_result .= $month_result;
|
||||
break;
|
||||
|
||||
case 'Y':
|
||||
$html_result .= $year_result;
|
||||
break;
|
||||
}
|
||||
// Add the field seperator
|
||||
if($i < $field_separator_count) {
|
||||
$html_result .= $field_separator;
|
||||
}
|
||||
}
|
||||
|
||||
return $html_result;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,194 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {html_select_time} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: html_select_time<br>
|
||||
* Purpose: Prints the dropdowns for time selection
|
||||
* @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time}
|
||||
* (Smarty online manual)
|
||||
* @author Roberto Berto <roberto@berto.net>
|
||||
* @credits Monte Ohrt <monte AT ohrt DOT com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
* @uses smarty_make_timestamp()
|
||||
*/
|
||||
function smarty_function_html_select_time($params, &$smarty)
|
||||
{
|
||||
require_once $smarty->_get_plugin_filepath('shared','make_timestamp');
|
||||
require_once $smarty->_get_plugin_filepath('function','html_options');
|
||||
/* Default values. */
|
||||
$prefix = "Time_";
|
||||
$time = time();
|
||||
$display_hours = true;
|
||||
$display_minutes = true;
|
||||
$display_seconds = true;
|
||||
$display_meridian = true;
|
||||
$use_24_hours = true;
|
||||
$minute_interval = 1;
|
||||
$second_interval = 1;
|
||||
/* Should the select boxes be part of an array when returned from PHP?
|
||||
e.g. setting it to "birthday", would create "birthday[Hour]",
|
||||
"birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]".
|
||||
Can be combined with prefix. */
|
||||
$field_array = null;
|
||||
$all_extra = null;
|
||||
$hour_extra = null;
|
||||
$minute_extra = null;
|
||||
$second_extra = null;
|
||||
$meridian_extra = null;
|
||||
|
||||
foreach ($params as $_key=>$_value) {
|
||||
switch ($_key) {
|
||||
case 'prefix':
|
||||
case 'time':
|
||||
case 'field_array':
|
||||
case 'all_extra':
|
||||
case 'hour_extra':
|
||||
case 'minute_extra':
|
||||
case 'second_extra':
|
||||
case 'meridian_extra':
|
||||
$$_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':
|
||||
$$_key = (int)$_value;
|
||||
break;
|
||||
|
||||
default:
|
||||
$smarty->trigger_error("[html_select_time] unknown parameter $_key", E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
$time = smarty_make_timestamp($time);
|
||||
|
||||
$html_result = '';
|
||||
|
||||
if ($display_hours) {
|
||||
$hours = $use_24_hours ? range(0, 23) : range(1, 12);
|
||||
$hour_fmt = $use_24_hours ? '%H' : '%I';
|
||||
for ($i = 0, $for_max = count($hours); $i < $for_max; $i++)
|
||||
$hours[$i] = sprintf('%02d', $hours[$i]);
|
||||
$html_result .= '<select name=';
|
||||
if (null !== $field_array) {
|
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"';
|
||||
} else {
|
||||
$html_result .= '"' . $prefix . 'Hour"';
|
||||
}
|
||||
if (null !== $hour_extra){
|
||||
$html_result .= ' ' . $hour_extra;
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$html_result .= ' ' . $all_extra;
|
||||
}
|
||||
$html_result .= '>'."\n";
|
||||
$html_result .= smarty_function_html_options(array('output' => $hours,
|
||||
'values' => $hours,
|
||||
'selected' => strftime($hour_fmt, $time),
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$html_result .= "</select>\n";
|
||||
}
|
||||
|
||||
if ($display_minutes) {
|
||||
$all_minutes = range(0, 59);
|
||||
for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i+= $minute_interval)
|
||||
$minutes[] = sprintf('%02d', $all_minutes[$i]);
|
||||
$selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval);
|
||||
$html_result .= '<select name=';
|
||||
if (null !== $field_array) {
|
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"';
|
||||
} else {
|
||||
$html_result .= '"' . $prefix . 'Minute"';
|
||||
}
|
||||
if (null !== $minute_extra){
|
||||
$html_result .= ' ' . $minute_extra;
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$html_result .= ' ' . $all_extra;
|
||||
}
|
||||
$html_result .= '>'."\n";
|
||||
|
||||
$html_result .= smarty_function_html_options(array('output' => $minutes,
|
||||
'values' => $minutes,
|
||||
'selected' => $selected,
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$html_result .= "</select>\n";
|
||||
}
|
||||
|
||||
if ($display_seconds) {
|
||||
$all_seconds = range(0, 59);
|
||||
for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i+= $second_interval)
|
||||
$seconds[] = sprintf('%02d', $all_seconds[$i]);
|
||||
$selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval);
|
||||
$html_result .= '<select name=';
|
||||
if (null !== $field_array) {
|
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Second]"';
|
||||
} else {
|
||||
$html_result .= '"' . $prefix . 'Second"';
|
||||
}
|
||||
|
||||
if (null !== $second_extra){
|
||||
$html_result .= ' ' . $second_extra;
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$html_result .= ' ' . $all_extra;
|
||||
}
|
||||
$html_result .= '>'."\n";
|
||||
|
||||
$html_result .= smarty_function_html_options(array('output' => $seconds,
|
||||
'values' => $seconds,
|
||||
'selected' => $selected,
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$html_result .= "</select>\n";
|
||||
}
|
||||
|
||||
if ($display_meridian && !$use_24_hours) {
|
||||
$html_result .= '<select name=';
|
||||
if (null !== $field_array) {
|
||||
$html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"';
|
||||
} else {
|
||||
$html_result .= '"' . $prefix . 'Meridian"';
|
||||
}
|
||||
|
||||
if (null !== $meridian_extra){
|
||||
$html_result .= ' ' . $meridian_extra;
|
||||
}
|
||||
if (null !== $all_extra){
|
||||
$html_result .= ' ' . $all_extra;
|
||||
}
|
||||
$html_result .= '>'."\n";
|
||||
|
||||
$html_result .= smarty_function_html_options(array('output' => array('AM', 'PM'),
|
||||
'values' => array('am', 'pm'),
|
||||
'selected' => strtolower(strftime('%p', $time)),
|
||||
'print_result' => false),
|
||||
$smarty);
|
||||
$html_result .= "</select>\n";
|
||||
}
|
||||
|
||||
return $html_result;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
177
includes/onyx/templates/libs/plugins/function.html_table.php
Normal file
177
includes/onyx/templates/libs/plugins/function.html_table.php
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {html_table} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: html_table<br>
|
||||
* Date: Feb 17, 2003<br>
|
||||
* Purpose: make an html table from an array of data<br>
|
||||
* Input:<br>
|
||||
* - 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:
|
||||
* <pre>
|
||||
* {table loop=$data}
|
||||
* {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
|
||||
* {table loop=$data cols="first,second,third" tr_attr=$colors}
|
||||
* </pre>
|
||||
* @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://smarty.php.net/manual/en/language.function.html.table.php {html_table}
|
||||
* (Smarty online manual)
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_html_table($params, &$smarty)
|
||||
{
|
||||
$table_attr = 'border="1"';
|
||||
$tr_attr = '';
|
||||
$th_attr = '';
|
||||
$td_attr = '';
|
||||
$cols = $cols_count = 3;
|
||||
$rows = 3;
|
||||
$trailpad = ' ';
|
||||
$vdir = 'down';
|
||||
$hdir = 'right';
|
||||
$inner = 'cols';
|
||||
$caption = '';
|
||||
|
||||
if (!isset($params['loop'])) {
|
||||
$smarty->trigger_error("html_table: missing 'loop' parameter");
|
||||
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;
|
||||
}
|
||||
|
||||
function smarty_function_html_table_cycle($name, $var, $no) {
|
||||
if(!is_array($var)) {
|
||||
$ret = $var;
|
||||
} else {
|
||||
$ret = $var[$no % count($var)];
|
||||
}
|
||||
|
||||
return ($ret) ? ' '.$ret : '';
|
||||
}
|
||||
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
165
includes/onyx/templates/libs/plugins/function.mailto.php
Normal file
165
includes/onyx/templates/libs/plugins/function.mailto.php
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {mailto} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: mailto<br>
|
||||
* Date: May 21, 2002
|
||||
* Purpose: automate mailto address link creation, and optionally
|
||||
* encode them.<br>
|
||||
* Input:<br>
|
||||
* - address = 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 hexidecimal (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:
|
||||
* <pre>
|
||||
* {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"'}
|
||||
* </pre>
|
||||
* @link http://smarty.php.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
|
||||
* @param Smarty
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_mailto($params, &$smarty)
|
||||
{
|
||||
$extra = '';
|
||||
|
||||
if (empty($params['address'])) {
|
||||
$smarty->trigger_error("mailto: missing 'address' parameter");
|
||||
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;
|
||||
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
$mail_parm_vals = '';
|
||||
for ($i=0; $i<count($mail_parms); $i++) {
|
||||
$mail_parm_vals .= (0==$i) ? '?' : '&';
|
||||
$mail_parm_vals .= $mail_parms[$i];
|
||||
}
|
||||
$address .= $mail_parm_vals;
|
||||
|
||||
$encode = (empty($params['encode'])) ? 'none' : $params['encode'];
|
||||
if (!in_array($encode,array('javascript','javascript_charcode','hex','none')) ) {
|
||||
$smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($encode == 'javascript' ) {
|
||||
$string = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');';
|
||||
|
||||
$js_encode = '';
|
||||
for ($x=0; $x < strlen($string); $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";
|
||||
$_ret .= "<!--\n";
|
||||
$_ret .= "{document.write(String.fromCharCode(";
|
||||
$_ret .= implode(',',$ord);
|
||||
$_ret .= "))";
|
||||
$_ret .= "}\n";
|
||||
$_ret .= "//-->\n";
|
||||
$_ret .= "</script>\n";
|
||||
|
||||
return $_ret;
|
||||
|
||||
|
||||
} elseif ($encode == 'hex') {
|
||||
|
||||
preg_match('!^(.*)(\?.*)$!',$address,$match);
|
||||
if(!empty($match[2])) {
|
||||
$smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");
|
||||
return;
|
||||
}
|
||||
$address_encode = '';
|
||||
for ($x=0; $x < strlen($address); $x++) {
|
||||
if(preg_match('!\w!',$address[$x])) {
|
||||
$address_encode .= '%' . bin2hex($address[$x]);
|
||||
} else {
|
||||
$address_encode .= $address[$x];
|
||||
}
|
||||
}
|
||||
$text_encode = '';
|
||||
for ($x=0; $x < strlen($text); $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>';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
84
includes/onyx/templates/libs/plugins/function.math.php
Normal file
84
includes/onyx/templates/libs/plugins/function.math.php
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {math} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: math<br>
|
||||
* Purpose: handle math computations in template<br>
|
||||
* @link http://smarty.php.net/manual/en/language.function.math.php {math}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_math($params, &$smarty)
|
||||
{
|
||||
// be sure equation parameter is present
|
||||
if (empty($params['equation'])) {
|
||||
$smarty->trigger_error("math: missing equation parameter");
|
||||
return;
|
||||
}
|
||||
|
||||
$equation = $params['equation'];
|
||||
|
||||
// make sure parenthesis are balanced
|
||||
if (substr_count($equation,"(") != substr_count($equation,")")) {
|
||||
$smarty->trigger_error("math: unbalanced parenthesis");
|
||||
return;
|
||||
}
|
||||
|
||||
// match all vars in equation, make sure all are passed
|
||||
preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]+)!",$equation, $match);
|
||||
$allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10',
|
||||
'max','min','pi','pow','rand','round','sin','sqrt','srand','tan');
|
||||
|
||||
foreach($match[1] as $curr_var) {
|
||||
if ($curr_var && !in_array($curr_var, array_keys($params)) && !in_array($curr_var, $allowed_funcs)) {
|
||||
$smarty->trigger_error("math: function call $curr_var not allowed");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
foreach($params as $key => $val) {
|
||||
if ($key != "equation" && $key != "format" && $key != "assign") {
|
||||
// make sure value is not empty
|
||||
if (strlen($val)==0) {
|
||||
$smarty->trigger_error("math: parameter $key is empty");
|
||||
return;
|
||||
}
|
||||
if (!is_numeric($val)) {
|
||||
$smarty->trigger_error("math: parameter $key: is not numeric");
|
||||
return;
|
||||
}
|
||||
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
|
||||
}
|
||||
}
|
||||
|
||||
eval("\$smarty_math_result = ".$equation.";");
|
||||
|
||||
if (empty($params['format'])) {
|
||||
if (empty($params['assign'])) {
|
||||
return $smarty_math_result;
|
||||
} else {
|
||||
$smarty->assign($params['assign'],$smarty_math_result);
|
||||
}
|
||||
} else {
|
||||
if (empty($params['assign'])){
|
||||
printf($params['format'],$smarty_math_result);
|
||||
} else {
|
||||
$smarty->assign($params['assign'],sprintf($params['format'],$smarty_math_result));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
119
includes/onyx/templates/libs/plugins/function.popup.php
Normal file
119
includes/onyx/templates/libs/plugins/function.popup.php
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {popup} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: popup<br>
|
||||
* Purpose: make text pop up in windows via overlib
|
||||
* @link http://smarty.php.net/manual/en/language.function.popup.php {popup}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_popup($params, &$smarty)
|
||||
{
|
||||
$append = '';
|
||||
foreach ($params as $_key=>$_value) {
|
||||
switch ($_key) {
|
||||
case 'text':
|
||||
case 'trigger':
|
||||
case 'function':
|
||||
case 'inarray':
|
||||
$$_key = (string)$_value;
|
||||
if ($_key == 'function' || $_key == 'inarray')
|
||||
$append .= ',' . strtoupper($_key) . ",'$_value'";
|
||||
break;
|
||||
|
||||
case 'caption':
|
||||
case 'closetext':
|
||||
case 'status':
|
||||
$append .= ',' . strtoupper($_key) . ",'" . str_replace("'","\'",$_value) . "'";
|
||||
break;
|
||||
|
||||
case 'fgcolor':
|
||||
case 'bgcolor':
|
||||
case 'textcolor':
|
||||
case 'capcolor':
|
||||
case 'closecolor':
|
||||
case 'textfont':
|
||||
case 'captionfont':
|
||||
case 'closefont':
|
||||
case 'fgbackground':
|
||||
case 'bgbackground':
|
||||
case 'caparray':
|
||||
case 'capicon':
|
||||
case 'background':
|
||||
case 'frame':
|
||||
$append .= ',' . strtoupper($_key) . ",'$_value'";
|
||||
break;
|
||||
|
||||
case 'textsize':
|
||||
case 'captionsize':
|
||||
case 'closesize':
|
||||
case 'width':
|
||||
case 'height':
|
||||
case 'border':
|
||||
case 'offsetx':
|
||||
case 'offsety':
|
||||
case 'snapx':
|
||||
case 'snapy':
|
||||
case 'fixx':
|
||||
case 'fixy':
|
||||
case 'padx':
|
||||
case 'pady':
|
||||
case 'timeout':
|
||||
case 'delay':
|
||||
$append .= ',' . strtoupper($_key) . ",$_value";
|
||||
break;
|
||||
|
||||
case 'sticky':
|
||||
case 'left':
|
||||
case 'right':
|
||||
case 'center':
|
||||
case 'above':
|
||||
case 'below':
|
||||
case 'noclose':
|
||||
case 'autostatus':
|
||||
case 'autostatuscap':
|
||||
case 'fullhtml':
|
||||
case 'hauto':
|
||||
case 'vauto':
|
||||
case 'mouseoff':
|
||||
case 'followmouse':
|
||||
case 'closeclick':
|
||||
if ($_value) $append .= ',' . strtoupper($_key);
|
||||
break;
|
||||
|
||||
default:
|
||||
$smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($text) && !isset($inarray) && empty($function)) {
|
||||
$smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($trigger)) { $trigger = "onmouseover"; }
|
||||
|
||||
$retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\'';
|
||||
$retval .= $append . ');"';
|
||||
if ($trigger == 'onmouseover')
|
||||
$retval .= ' onmouseout="nd();"';
|
||||
|
||||
|
||||
return $retval;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
40
includes/onyx/templates/libs/plugins/function.popup_init.php
Normal file
40
includes/onyx/templates/libs/plugins/function.popup_init.php
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty {popup_init} function plugin
|
||||
*
|
||||
* Type: function<br>
|
||||
* Name: popup_init<br>
|
||||
* Purpose: initialize overlib
|
||||
* @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init}
|
||||
* (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array
|
||||
* @param Smarty
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_popup_init($params, &$smarty)
|
||||
{
|
||||
$zindex = 1000;
|
||||
|
||||
if (!empty($params['zindex'])) {
|
||||
$zindex = $params['zindex'];
|
||||
}
|
||||
|
||||
if (!empty($params['src'])) {
|
||||
return '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:'.$zindex.';"></div>' . "\n"
|
||||
. '<script type="text/javascript" language="JavaScript" src="'.$params['src'].'"></script>' . "\n";
|
||||
} else {
|
||||
$smarty->trigger_error("popup_init: missing src parameter");
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
43
includes/onyx/templates/libs/plugins/modifier.capitalize.php
Normal file
43
includes/onyx/templates/libs/plugins/modifier.capitalize.php
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty capitalize modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: capitalize<br>
|
||||
* Purpose: capitalize words in the string
|
||||
* @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE
|
||||
* capitalize (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_capitalize($string, $uc_digits = false)
|
||||
{
|
||||
smarty_modifier_capitalize_ucfirst(null, $uc_digits);
|
||||
return preg_replace_callback('!\'?\b\w(\w|\')*\b!', 'smarty_modifier_capitalize_ucfirst', $string);
|
||||
}
|
||||
|
||||
function smarty_modifier_capitalize_ucfirst($string, $uc_digits = null)
|
||||
{
|
||||
static $_uc_digits = false;
|
||||
|
||||
if(isset($uc_digits)) {
|
||||
$_uc_digits = $uc_digits;
|
||||
return;
|
||||
}
|
||||
|
||||
if(substr($string[0],0,1) != "'" && !preg_match("!\d!",$string[0]) || $_uc_digits)
|
||||
return ucfirst($string[0]);
|
||||
else
|
||||
return $string[0];
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
33
includes/onyx/templates/libs/plugins/modifier.cat.php
Normal file
33
includes/onyx/templates/libs/plugins/modifier.cat.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty cat modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: cat<br>
|
||||
* 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 Monte Ohrt <monte at ohrt dot com>
|
||||
* @version 1.0
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_cat($string, $cat)
|
||||
{
|
||||
return $string . $cat;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty count_characters modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: count_characteres<br>
|
||||
* Purpose: count the number of characters in a text
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.characters.php
|
||||
* count_characters (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param boolean include whitespace in the character count
|
||||
* @return integer
|
||||
*/
|
||||
function smarty_modifier_count_characters($string, $include_spaces = false)
|
||||
{
|
||||
if ($include_spaces)
|
||||
return(strlen($string));
|
||||
|
||||
return preg_match_all("/[^\s]/",$string, $match);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty count_paragraphs modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: count_paragraphs<br>
|
||||
* Purpose: count the number of paragraphs in a text
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
|
||||
* count_paragraphs (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return integer
|
||||
*/
|
||||
function smarty_modifier_count_paragraphs($string)
|
||||
{
|
||||
// count \r or \n characters
|
||||
return count(preg_split('/[\r\n]+/', $string));
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty count_sentences modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: count_sentences
|
||||
* Purpose: count the number of sentences in a text
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
|
||||
* count_sentences (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return integer
|
||||
*/
|
||||
function smarty_modifier_count_sentences($string)
|
||||
{
|
||||
// find periods with a word before but not after.
|
||||
return preg_match_all('/[^\s]\.(?!\w)/', $string, $match);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty count_words modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: count_words<br>
|
||||
* Purpose: count the number of words in a text
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.count.words.php
|
||||
* count_words (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return integer
|
||||
*/
|
||||
function smarty_modifier_count_words($string)
|
||||
{
|
||||
// split text by ' ',\r,\n,\f,\t
|
||||
$split_array = preg_split('/\s+/',$string);
|
||||
// count matches that contain alphanumerics
|
||||
$word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array);
|
||||
|
||||
return count($word_count);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include the {@link shared.make_timestamp.php} plugin
|
||||
*/
|
||||
require_once $smarty->_get_plugin_filepath('shared', 'make_timestamp');
|
||||
/**
|
||||
* Smarty date_format modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: date_format<br>
|
||||
* Purpose: format datestamps via strftime<br>
|
||||
* Input:<br>
|
||||
* - string: input date string
|
||||
* - format: strftime format for output
|
||||
* - default_date: default date if $string is empty
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.date.format.php
|
||||
* date_format (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string|void
|
||||
* @uses smarty_make_timestamp()
|
||||
*/
|
||||
function smarty_modifier_date_format($string, $format = '%b %e, %Y', $default_date = '')
|
||||
{
|
||||
if ($string != '') {
|
||||
$timestamp = smarty_make_timestamp($string);
|
||||
} elseif ($default_date != '') {
|
||||
$timestamp = smarty_make_timestamp($default_date);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
if (DIRECTORY_SEPARATOR == '\\') {
|
||||
$_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);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty debug_print_var modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: debug_print_var<br>
|
||||
* Purpose: formats variable contents for display in the console
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php
|
||||
* debug_print_var (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param array|object
|
||||
* @param integer
|
||||
* @param integer
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40)
|
||||
{
|
||||
$_replace = array(
|
||||
"\n" => '<i>\n</i>',
|
||||
"\r" => '<i>\r</i>',
|
||||
"\t" => '<i>\t</i>'
|
||||
);
|
||||
|
||||
switch (gettype($var)) {
|
||||
case 'array' :
|
||||
$results = '<b>Array (' . count($var) . ')</b>';
|
||||
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, ++$depth, $length);
|
||||
$depth--;
|
||||
}
|
||||
break;
|
||||
case 'object' :
|
||||
$object_vars = get_object_vars($var);
|
||||
$results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
|
||||
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, ++$depth, $length);
|
||||
$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 (strlen($var) > $length ) {
|
||||
$results = substr($var, 0, $length - 3) . '...';
|
||||
}
|
||||
$results = htmlspecialchars('"' . $results . '"');
|
||||
break;
|
||||
case 'unknown type' :
|
||||
default :
|
||||
$results = strtr((string) $var, $_replace);
|
||||
if (strlen($results) > $length ) {
|
||||
$results = substr($results, 0, $length - 3) . '...';
|
||||
}
|
||||
$results = htmlspecialchars($results);
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
32
includes/onyx/templates/libs/plugins/modifier.default.php
Normal file
32
includes/onyx/templates/libs/plugins/modifier.default.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty default modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: default<br>
|
||||
* Purpose: designate default value for empty variables
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.default.php
|
||||
* default (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_default($string, $default = '')
|
||||
{
|
||||
if (!isset($string) || $string === '')
|
||||
return $default;
|
||||
else
|
||||
return $string;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
93
includes/onyx/templates/libs/plugins/modifier.escape.php
Normal file
93
includes/onyx/templates/libs/plugins/modifier.escape.php
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty escape modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: escape<br>
|
||||
* Purpose: Escape the string according to escapement type
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.escape.php
|
||||
* escape (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param html|htmlall|url|quotes|hex|hexentity|javascript
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
|
||||
{
|
||||
switch ($esc_type) {
|
||||
case 'html':
|
||||
return htmlspecialchars($string, ENT_QUOTES, $char_set);
|
||||
|
||||
case 'htmlall':
|
||||
return htmlentities($string, ENT_QUOTES, $char_set);
|
||||
|
||||
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 character into hex
|
||||
$return = '';
|
||||
for ($x=0; $x < strlen($string); $x++) {
|
||||
$return .= '%' . bin2hex($string[$x]);
|
||||
}
|
||||
return $return;
|
||||
|
||||
case 'hexentity':
|
||||
$return = '';
|
||||
for ($x=0; $x < strlen($string); $x++) {
|
||||
$return .= '&#x' . bin2hex($string[$x]) . ';';
|
||||
}
|
||||
return $return;
|
||||
|
||||
case 'decentity':
|
||||
$return = '';
|
||||
for ($x=0; $x < strlen($string); $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':
|
||||
// safe way to display e-mail address on a web page
|
||||
return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);
|
||||
|
||||
case 'nonstd':
|
||||
// escape non-standard chars, such as ms document quotes
|
||||
$_res = '';
|
||||
for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {
|
||||
$_ord = ord(substr($string, $_i, 1));
|
||||
// non-standard char, escape it
|
||||
if($_ord >= 126){
|
||||
$_res .= '&#' . $_ord . ';';
|
||||
}
|
||||
else {
|
||||
$_res .= substr($string, $_i, 1);
|
||||
}
|
||||
}
|
||||
return $_res;
|
||||
|
||||
default:
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
28
includes/onyx/templates/libs/plugins/modifier.indent.php
Normal file
28
includes/onyx/templates/libs/plugins/modifier.indent.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty indent modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: indent<br>
|
||||
* Purpose: indent lines of text
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.indent.php
|
||||
* indent (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param integer
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_indent($string,$chars=4,$char=" ")
|
||||
{
|
||||
return preg_replace('!^!m',str_repeat($char,$chars),$string);
|
||||
}
|
||||
|
||||
?>
|
||||
26
includes/onyx/templates/libs/plugins/modifier.lower.php
Normal file
26
includes/onyx/templates/libs/plugins/modifier.lower.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty lower modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: lower<br>
|
||||
* Purpose: convert string to lowercase
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.lower.php
|
||||
* lower (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_lower($string)
|
||||
{
|
||||
return strtolower($string);
|
||||
}
|
||||
|
||||
?>
|
||||
35
includes/onyx/templates/libs/plugins/modifier.nl2br.php
Normal file
35
includes/onyx/templates/libs/plugins/modifier.nl2br.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: nl2br<br>
|
||||
* Date: Feb 26, 2003
|
||||
* Purpose: convert \r\n, \r or \n to <<br>>
|
||||
* Input:<br>
|
||||
* - contents = contents to replace
|
||||
* - preceed_test = if true, includes preceeding break tags
|
||||
* in replacement
|
||||
* Example: {$text|nl2br}
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.nl2br.php
|
||||
* nl2br (Smarty online manual)
|
||||
* @version 1.0
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_nl2br($string)
|
||||
{
|
||||
return nl2br($string);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty regex_replace modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: regex_replace<br>
|
||||
* 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
|
||||
* @param string|array
|
||||
* @param string|array
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_regex_replace($string, $search, $replace)
|
||||
{
|
||||
if (($pos = strpos($search,"\0")) !== false)
|
||||
$search = substr($search,0,$pos);
|
||||
if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
|
||||
/* remove eval-modifier from $search */
|
||||
$search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
|
||||
}
|
||||
|
||||
return preg_replace($search, $replace, $string);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
30
includes/onyx/templates/libs/plugins/modifier.replace.php
Normal file
30
includes/onyx/templates/libs/plugins/modifier.replace.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty replace modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: replace<br>
|
||||
* 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>
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_replace($string, $search, $replace)
|
||||
{
|
||||
return str_replace($search, $replace, $string);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
30
includes/onyx/templates/libs/plugins/modifier.spacify.php
Normal file
30
includes/onyx/templates/libs/plugins/modifier.spacify.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty spacify modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: spacify<br>
|
||||
* 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
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_spacify($string, $spacify_char = ' ')
|
||||
{
|
||||
return implode($spacify_char,
|
||||
preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY));
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty string_format modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: string_format<br>
|
||||
* Purpose: format strings via sprintf
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.string.format.php
|
||||
* string_format (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_string_format($string, $format)
|
||||
{
|
||||
return sprintf($format, $string);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
33
includes/onyx/templates/libs/plugins/modifier.strip.php
Normal file
33
includes/onyx/templates/libs/plugins/modifier.strip.php
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty strip modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: strip<br>
|
||||
* Purpose: Replace all repeated spaces, newlines, tabs
|
||||
* with a single space or supplied replacement string.<br>
|
||||
* Example: {$var|strip} {$var|strip:" "}
|
||||
* Date: September 25th, 2002
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.strip.php
|
||||
* strip (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @version 1.0
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_strip($text, $replace = ' ')
|
||||
{
|
||||
return preg_replace('!\s+!', $replace, $text);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
32
includes/onyx/templates/libs/plugins/modifier.strip_tags.php
Normal file
32
includes/onyx/templates/libs/plugins/modifier.strip_tags.php
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty strip_tags modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: strip_tags<br>
|
||||
* Purpose: strip html tags from text
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php
|
||||
* strip_tags (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param boolean
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_strip_tags($string, $replace_with_space = true)
|
||||
{
|
||||
if ($replace_with_space)
|
||||
return preg_replace('!<[^>]*?>!', ' ', $string);
|
||||
else
|
||||
return strip_tags($string);
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
50
includes/onyx/templates/libs/plugins/modifier.truncate.php
Normal file
50
includes/onyx/templates/libs/plugins/modifier.truncate.php
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty truncate modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: truncate<br>
|
||||
* 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
|
||||
* @param integer
|
||||
* @param string
|
||||
* @param boolean
|
||||
* @param boolean
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
|
||||
$break_words = false, $middle = false)
|
||||
{
|
||||
if ($length == 0)
|
||||
return '';
|
||||
|
||||
if (strlen($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;
|
||||
} else {
|
||||
return substr($string, 0, $length/2) . $etc . substr($string, -$length/2);
|
||||
}
|
||||
} else {
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
26
includes/onyx/templates/libs/plugins/modifier.upper.php
Normal file
26
includes/onyx/templates/libs/plugins/modifier.upper.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty upper modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: upper<br>
|
||||
* Purpose: convert string to uppercase
|
||||
* @link http://smarty.php.net/manual/en/language.modifier.upper.php
|
||||
* upper (Smarty online manual)
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_upper($string)
|
||||
{
|
||||
return strtoupper($string);
|
||||
}
|
||||
|
||||
?>
|
||||
29
includes/onyx/templates/libs/plugins/modifier.wordwrap.php
Normal file
29
includes/onyx/templates/libs/plugins/modifier.wordwrap.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Smarty wordwrap modifier plugin
|
||||
*
|
||||
* Type: modifier<br>
|
||||
* Name: wordwrap<br>
|
||||
* 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 Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @param integer
|
||||
* @param string
|
||||
* @param boolean
|
||||
* @return string
|
||||
*/
|
||||
function smarty_modifier_wordwrap($string,$length=80,$break="\n",$cut=false)
|
||||
{
|
||||
return wordwrap($string,$length,$break,$cut);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty trimwhitespace outputfilter plugin
|
||||
*
|
||||
* File: outputfilter.trimwhitespace.php<br>
|
||||
* Type: outputfilter<br>
|
||||
* Name: trimwhitespace<br>
|
||||
* Date: Jan 25, 2003<br>
|
||||
* Purpose: trim leading white space and blank lines from
|
||||
* template source after it gets interpreted, cleaning
|
||||
* up code and saving bandwidth. Does not affect
|
||||
* <<PRE>></PRE> and <SCRIPT></SCRIPT> blocks.<br>
|
||||
* Install: Drop into the plugin directory, call
|
||||
* <code>$smarty->load_filter('output','trimwhitespace');</code>
|
||||
* from application.
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @author Contributions from Lars Noschinski <lars@usenet.noschinski.de>
|
||||
* @version 1.3
|
||||
* @param string
|
||||
* @param Smarty
|
||||
*/
|
||||
function smarty_outputfilter_trimwhitespace($source, &$smarty)
|
||||
{
|
||||
// Pull out the script blocks
|
||||
preg_match_all("!<script[^>]+>.*?</script>!is", $source, $match);
|
||||
$_script_blocks = $match[0];
|
||||
$source = preg_replace("!<script[^>]+>.*?</script>!is",
|
||||
'@@@SMARTY:TRIM:SCRIPT@@@', $source);
|
||||
|
||||
// Pull out the pre blocks
|
||||
preg_match_all("!<pre>.*?</pre>!is", $source, $match);
|
||||
$_pre_blocks = $match[0];
|
||||
$source = preg_replace("!<pre>.*?</pre>!is",
|
||||
'@@@SMARTY:TRIM:PRE@@@', $source);
|
||||
|
||||
// Pull out the textarea blocks
|
||||
preg_match_all("!<textarea[^>]+>.*?</textarea>!is", $source, $match);
|
||||
$_textarea_blocks = $match[0];
|
||||
$source = preg_replace("!<textarea[^>]+>.*?</textarea>!is",
|
||||
'@@@SMARTY:TRIM:TEXTAREA@@@', $source);
|
||||
|
||||
// remove all leading spaces, tabs and carriage returns NOT
|
||||
// preceeded by a php close tag.
|
||||
$source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source));
|
||||
|
||||
// replace textarea blocks
|
||||
smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source);
|
||||
|
||||
// replace pre blocks
|
||||
smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source);
|
||||
|
||||
// replace script blocks
|
||||
smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source);
|
||||
|
||||
return $source;
|
||||
}
|
||||
|
||||
function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) {
|
||||
$_len = strlen($search_str);
|
||||
$_pos = 0;
|
||||
for ($_i=0, $_count=count($replace); $_i<$_count; $_i++)
|
||||
if (($_pos=strpos($subject, $search_str, $_pos))!==false)
|
||||
$subject = substr_replace($subject, $replace[$_i], $_pos, $_len);
|
||||
else
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty shared plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* escape_special_chars common function
|
||||
*
|
||||
* Function: smarty_function_escape_special_chars<br>
|
||||
* 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
|
||||
* @return string
|
||||
*/
|
||||
function smarty_function_escape_special_chars($string)
|
||||
{
|
||||
if(!is_array($string)) {
|
||||
$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;
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
<?php
|
||||
/**
|
||||
* Smarty shared plugin
|
||||
* @package Smarty
|
||||
* @subpackage plugins
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Function: smarty_make_timestamp<br>
|
||||
* Purpose: used by other smarty functions to make a timestamp
|
||||
* from a string.
|
||||
* @author Monte Ohrt <monte at ohrt dot com>
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function smarty_make_timestamp($string)
|
||||
{
|
||||
if(empty($string)) {
|
||||
// use "now":
|
||||
$time = time();
|
||||
|
||||
} elseif (preg_match('/^\d{14}$/', $string)) {
|
||||
// it is mysql timestamp format of YYYYMMDDHHMMSS?
|
||||
$time = 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
|
||||
$time = (int)$string;
|
||||
|
||||
} else {
|
||||
// strtotime should handle it
|
||||
$time = strtotime($string);
|
||||
if ($time == -1 || $time === false) {
|
||||
// strtotime() was not able to parse $string, use "now":
|
||||
$time = time();
|
||||
}
|
||||
}
|
||||
return $time;
|
||||
|
||||
}
|
||||
|
||||
/* vim: set expandtab: */
|
||||
|
||||
?>
|
||||
6
includes/onyx/templates/templates/admin/vp.tpl
Normal file
6
includes/onyx/templates/templates/admin/vp.tpl
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{include file='game/header.tpl'}
|
||||
<div class="border_top"></div>
|
||||
<div class="error">... veuillez patienter ...</div>
|
||||
<div class="border_bt"></div>
|
||||
{$contenu}
|
||||
{include file='game/footer.tpl'}
|
||||
3
includes/onyx/templates/templates/blog/erreur.xtpl
Normal file
3
includes/onyx/templates/templates/blog/erreur.xtpl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{include file='blog/header.xtpl'}
|
||||
<div id="erreur">{$erreur}</div>
|
||||
{include file='blog/footer.xtpl'}
|
||||
9
includes/onyx/templates/templates/blog/footer.xtpl
Normal file
9
includes/onyx/templates/templates/blog/footer.xtpl
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="footer">Design by O D S T - The Ark, tous droits réservés.<br />Halo, Bungie et Microsoft sont des marques et logos déposés par Microsoft Corporation.<br />Copyright © 2008-2009. halo-battle.com, tous droits réservés.</div>
|
||||
|
||||
<!-- \\******* By Phantom *******// Halo-Battle, Tous droits réservés -->
|
||||
</body>
|
||||
</html>
|
||||
64
includes/onyx/templates/templates/blog/header.xtpl
Normal file
64
includes/onyx/templates/templates/blog/header.xtpl
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="Content-Language" content="fr" />
|
||||
<meta name="Description" content="The ark - Blog officiel du staff d'Halo-Battle." />
|
||||
<meta name="Keywords" content="halo-battle,halo battle,halobattle,battle,the ark,ark,the-ark,halo,blog" />
|
||||
<meta name="robots" content="index,follow" />
|
||||
{if $erreur && !$no_refresh}<meta http-equiv="Refresh" content="5;URL={$path}" />
|
||||
{/if}
|
||||
<title> ::The Ark:: - {$title}</title>
|
||||
<link rel="stylesheet" href="styles/blog.css" type="text/css" media="all" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="all">
|
||||
<div id="all2">
|
||||
<div id="header">
|
||||
<h1><a href="{$link.self}"><span></span>The Ark - Blog officiel du staff halo-battle</a></h1>
|
||||
<ul>
|
||||
<li><a href="{$link.self}">Accueil</a></li>
|
||||
<li><a href="{$link.forum}">Forum</a></li>
|
||||
<li><a href="{$link.jeu}">Halo-Battle</a></li>
|
||||
<li><a href="{$link.accueil}">News</a></li>
|
||||
<li><a href="{$link.contact}">Contact</a></li>
|
||||
</ul>
|
||||
<h2><span></span>Le blog est officiellement ouvert! Retrouver les commentaires du staff...</h2>
|
||||
</div>
|
||||
<div id="linknews"><a href="{$link.blogcsnu}" id="csnu"><span></span>News CSNU</a> <a href="{$link.blogcovenants}" id="covenants"><span></span>News Covies</a></div>
|
||||
<div id="corps">
|
||||
<div id="corps2">
|
||||
<div id="sommaire">
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th colspan="7">{$mois}</th></tr>
|
||||
<tr><td>lun</td><td>mar</td><td>mer</td><td>jeu</td><td>ven</td><td>sam</td><td>dim</td></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach from=$calendar item=week}<tr>{foreach from=$week item=value}<td>{$value}</td>{/foreach}</tr>
|
||||
{/foreach}</tbody>
|
||||
</table>
|
||||
<h3>Sommaire</h3>
|
||||
<h4>Mois ::</h4>
|
||||
<ul>
|
||||
<li><a href="{$link.blogm1}">Janvier</a></li>
|
||||
<li><a href="{$link.blogm2}">Février</a></li>
|
||||
<li><a href="{$link.blogm3}">Mars</a></li>
|
||||
<li><a href="{$link.blogm4}">Avril</a></li>
|
||||
<li><a href="{$link.blogm5}">Mai</a></li>
|
||||
<li><a href="{$link.blogm6}">Juin</a></li>
|
||||
<li><a href="{$link.blogm7}">Juillet</a></li>
|
||||
<li><a href="{$link.blogm8}">Août</a></li>
|
||||
<li><a href="{$link.blogm9}">Septembre</a></li>
|
||||
<li><a href="{$link.blogm10}">Octobre</a></li>
|
||||
<li><a href="{$link.blogm11}">Novembre</a></li>
|
||||
<li><a href="{$link.blogm12}">Décembre</a></li>
|
||||
</ul>
|
||||
<h4>Clan ::</h4>
|
||||
<ul>
|
||||
<li><a href="{$link.blogcsnu}">CSNU</a></li>
|
||||
<li><a href="{$link.blogcovenants}">Covenants</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
5
includes/onyx/templates/templates/blog/index.xtpl
Normal file
5
includes/onyx/templates/templates/blog/index.xtpl
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{include file='blog/header.xtpl'}
|
||||
<div id="overview">{foreach from=$article item=value}
|
||||
<div><h3><a href="{$value.link_article}">{$value.titre}</a> <em>Par {$value.auteur}, le {$value.date}</em></h3> <p>{$value.resume}</p> <a href="{$value.link_article}">{$value.nb_com} commentaire{if $value.nb_com >= 2}s{/if}</a></div>
|
||||
{/foreach}</div>
|
||||
{include file='blog/footer.xtpl'}
|
||||
34
includes/onyx/templates/templates/blog/page.xtpl
Normal file
34
includes/onyx/templates/templates/blog/page.xtpl
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{include file='blog/header.xtpl'}
|
||||
<h5>{$auteur}, <em>le {$date}</em></h5>
|
||||
<p id="content">{$contenu}</p>
|
||||
<div id="commentaire">
|
||||
{foreach from=$commentaire item=value} <div><h6><a href="{$value.link}">{$value.user}</a>, le {$value.date}</h6><p>{$value.content}</p></div>
|
||||
{/foreach}
|
||||
</div>
|
||||
<form action="./{$path}" method="post"><fieldset>
|
||||
<legend>Poster un commentaire</legend>
|
||||
{if $connected}<div>
|
||||
<img src="images/smile/wink.gif" alt=":wink:" onclick="document.getElementById('com').value += ' :wink: '" />
|
||||
<img src="images/smile/biggrin.gif" alt=":D" onclick="document.getElementById('com').value += ' :D '" />
|
||||
<img src="images/smile/smile.gif" alt=":-)" onclick="document.getElementById('com').value += ' :-) '" />
|
||||
<img src="images/smile/razz.gif" alt=":P" onclick="document.getElementById('com').value += ' :P '" /><br />
|
||||
<img src="images/smile/eek.gif" alt=":shock:" onclick="document.getElementById('com').value += ' :shock: '" />
|
||||
<img src="images/smile/cool.gif" alt="8-)" onclick="document.getElementById('com').value += ' 8-) '" />
|
||||
<img src="images/smile/twisted.gif" alt=":twisted:" onclick="document.getElementById('com').value += ' :twisted: '" />
|
||||
<img src="images/smile/evil.gif" alt=":evil:" onclick="document.getElementById('com').value += ' :evil: '" /><br />
|
||||
<img src="images/smile/mad.gif" alt=":-x" onclick="document.getElementById('com').value += ' :-x '" />
|
||||
<img src="images/smile/confused.gif" alt=":-?" onclick="document.getElementById('com').value += ' :-? '" />
|
||||
<img src="images/smile/sad.gif" alt=":-(" onclick="document.getElementById('com').value += ' :-( '" />
|
||||
<img src="images/smile/surprised.gif" alt=":-O" onclick="document.getElementById('com').value += ' :-O '" /><br />
|
||||
<img src="images/smile/neutral.gif" alt=":-|" onclick="document.getElementById('com').value += ' :-| '" />
|
||||
<img src="images/smile/redface.gif" alt=":oops:" onclick="document.getElementById('com').value += ' :oops: '" />
|
||||
<img src="images/smile/rolleyes.gif" alt=":roll:" onclick="document.getElementById('com').value += ' :roll: '" />
|
||||
<img src="images/smile/lol.gif" alt=":lol:" onclick="document.getElementById('com').value += ' :lol: '" />
|
||||
</div>
|
||||
<textarea name="commentaire" id="com"></textarea><br />
|
||||
<input type="submit" class="submit" value="Envoyer" />
|
||||
{else}<label for="login">Login (forum) : <input type="text" class="text" name="login" id="login" /></label>
|
||||
<label for="password">Mot de passe : <input type="password" class="text" name="password" id="password" /></label>
|
||||
<input type="submit" class="submit" value="Connexion" />{/if}
|
||||
</fieldset></form>
|
||||
{include file='blog/footer.xtpl'}
|
||||
3
includes/onyx/templates/templates/cms/erreur.tpl
Normal file
3
includes/onyx/templates/templates/cms/erreur.tpl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{include file='cms/header.tpl'}
|
||||
<div class="error"{if $couleur} style="color: {$couleur};"{/if}>{$message}</div>
|
||||
{include file='cms/footer.tpl'}
|
||||
14
includes/onyx/templates/templates/cms/footer.tpl
Normal file
14
includes/onyx/templates/templates/cms/footer.tpl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
</div>
|
||||
|
||||
<div id="footer">
|
||||
Réalisé par Halo Battle Staff<br />
|
||||
Design by <a href="http://www.nothing-arts.com" onclick="window.open(this.href); return false;"><ins>nothingarts</ins></a><br /><br />
|
||||
<!--Site visité 514200 fois depuis sa création<br />-->
|
||||
<a href="{$link.accueil}">Accueil</a> | <a href="{$link.jeu}">Le jeu</a> | <a href="{$link.inscription}">S'inscrire</a> | <a href="{$link.forum}">Forum</a> | <a href="{$link.staff}">Staff</a> | <a href="{$link.faq}">F.A.Q.</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cornerbt"></div>
|
||||
{$script}
|
||||
<!-- \\******* By Phantom *******// Halo-Battle, Tous droits réservés -->
|
||||
</body>
|
||||
</html>
|
||||
23
includes/onyx/templates/templates/cms/header.tpl
Normal file
23
includes/onyx/templates/templates/cms/header.tpl
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="Content-Language" content="fr" />
|
||||
<title> ::Halo-Battle:: - {$titre}</title>
|
||||
<link rel="stylesheet" href="templates/cms/default.css" type="text/css" media="all" />
|
||||
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
|
||||
<script src="js/cms.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="cornertop"></div>
|
||||
<div id="all">
|
||||
<div id="header">
|
||||
<div id="header_link"><span id="date">{$date}</span> | <a href="{$link.lastNews}">{$lastNews}</a> | <a href="{$link.lastTopic}">{$lastTopic}</a> | <a href="{$link.lastUser}">{$lastUser}</a> | <a href="{$link.lastDownload}">{$lastDownload}</a> | <a href="{$link.lastLink}">{$lastLink}</a></div><a href="{$link.RSS}" id="rss">RSS :: s'abonner</a>
|
||||
<a href="{$link.self}" id="img"><span></span>Halo Battle</a>
|
||||
<div id="buttons"><div><a href="{$link.accueil}">ACCUEIL</a></div> <div><a href="{$link.jeu}">LE JEU</a></div> <div><a href="{$link.inscription}">S'INSCRIRE</a></div> <div><a href="{$link.forum}">FORUM</a></div> <div><a href="{$link.staff}">STAFF</a></div> <div><a href="{$link.faq}">F.A.Q.</a></div></div>
|
||||
<form action="#" method="post"><fieldset id="recherche"><input class="text" type="text" name="recherche" value="rechercher..." maxlength="128" tabindex="10" onfocus="this.value = this.value!='rechercher...'?this.value:''" onblur="this.value=this.value==''?'rechercher...':this.value" /><input value="OK" class="submit" type="submit" tabindex="11" /><br /><a href="#" tabindex="12">Recherche Avancée</a></fieldset></form>
|
||||
</div>
|
||||
<div id="banner"><span id="bannerleft">DEFENDREZ-VOUS L'HUMANITE OU LA DETRUIREZ-VOUS ?</span> <span id="bannerright">{$count.humains} Marines et {$count.covenants} Covenants se battent dans <ins>{$count.serveurs} galaxie{if $count.serveurs>1}s{/if}</ins></span></div>
|
||||
<div id="corps">
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue