Script widget microsoft translate

Eléphanteau du PHP | 39 Messages

18 févr. 2016, 20:27

Bonjour

J'ai un sérieux problème avec un script qu'un internaute m'a gentiment fourni sachant que j'étais nul en programmation PHP
Il s'agissait d'intégrer le script de Google translate sur mon site construit en frames avec un menu déroulant en PHP.
Ce menu s'appelle treemenu11. Pourquoi ai-je choisi cela parce que c'est le seul menu qui me permette de caser les 2000 pages de mon site.
J'ai d'abord avec ses conseils vérifié que glob_recursive arrivait à lister toutes mes pages htm.
Suite à cela il m'a envoyé un script pour vérifier si la modification (translate d'un de mes fichiers) se faisait sans problème.
Là ça coince (erreur fatal à la ligne 22) . Pour plus d'info je mets le script à la suite

Sur mon navigateur la ligne 22 est celle-ci if (file_put_contents($filename, $contenu_du_fichier_modifie)) {
Merci de m'aider, à 76 ans je ne me vois pas apprendre le php


<?php

// On initialise la variable $filename avec le nom d'un fichier HTML à modifier (si il est dans un répertoire, il faut indiquer le répertoire avant repertoire/fichier_a_modif.html)
$filename = "histoire/auguste.htm";
// On copie colle ici le code à injecter dans chaque page
$code_traduction="<div id='MicrosoftTranslatorWidget' class='Dark' style='color:white;background-color:#555555'></div><script type='text/javascript'>setTimeout(function(){{var s=document.createElement('script');s.type='text/javascript';s.charset='UTF-8';s.src=((location && location.href && location.href.indexOf('https') == 0)?'https://ssl.microsofttranslator.com':'http://www.microsofttranslator.com')+'/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKkd965FeEGM5JtQ**&ctf=False&ui=true&settings=Manual&from=';var p=document.getElementsByTagName('head')[0]||document.documentElement;p.insertBefore(s,p.firstChild); }},0);</script>";


// On récupère le contenu du fichier et on le stocke dans une variable
$contenu_du_fichier = file_get_contents($filename);

// On injecte le code du widget de traduction
$contenu_du_fichier_modifie = $contenu_du_fichier;

// On vérifie si on trouve la balise <body...>, et si le fichier n'a pas deja ete modifie
if (preg_match("`(<body[^>]*>)`i", $contenu_du_fichier) && !preg_match("`<!-- Debut code traduction -->`i", $contenu_du_fichier)) {

// On a trouvé la balise <body> => on injecte juste après le code pour la traduction
$contenu_du_fichier_modifie = preg_replace("`(<body[^>]*>)`i", "$1\r\n<!-- Debut code traduction -->\r\n".$code_traduction."\r\n<!-- Fin du code traduction -->\r\n", $contenu_du_fichier);

// Et enfin on enregistre le résultat dans le fichier intial
if (file_put_contents($filename, $contenu_du_fichier_modifie)) {
echo $filename." mis a jour avec succes !<br />";
}else{
echo $filename." : [ERREUR] Probleme d'ecriture du fichier<br />";
}

}else{
// La balise <body...> n'a pas ete trouvee => on affiche un message d'erreur
echo $filename." : [ERREUR] Balise <body...> non trouvee OU Code deja injecte<br />";

Avatar du membre
Mammouth du PHP | 1609 Messages

18 févr. 2016, 20:39

Bonsoir, ne s'agirait-il pas simplement d'un problème de droit d'écriture sur le répertoire ? quel est le message d'erreur complet ?
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 39 Messages

19 févr. 2016, 10:12

Bonjour

Merci d'avoir répondu le message est celui-ci

Fatal error: Call to undefined function: file_put_contents() in c:\program files\easyphp1-7\www\siteweb\modif_fichiers.php on line 22

Eléphant du PHP | 103 Messages

19 févr. 2016, 10:28


Eléphanteau du PHP | 39 Messages

19 févr. 2016, 10:57

je suis allé sur ce site, si j'ai bien compris je n'ai pas la bonne version de php ? car je le répète je n'y connait rien
Je tiens à signaler que précédemment j'ai lancé la fonction glob_recursive sur la racine de mon site
http://localhost/siteweb/glob_recursive.php
il m'a crée un fichier avec toutes pages

Avatar du membre
Mammouth du PHP | 1609 Messages

19 févr. 2016, 11:33

Le message d'erreur dit clairement que la fonction n'est pas définie. Effectivement elle est disponible depuis php 5 alors peut être es tu en php 4.

Tu peux l'ajouter comme ça :
if (!function_exists('file_put_contents')) {
    function file_put_contents($filename, $data) {
        $f = @fopen($filename, 'w');
        if (!$f) {
            return false;
        } else {
            $bytes = fwrite($f, $data);
            fclose($f);
            return $bytes;
        }
    }
}
http://www.phpied.com/file_get_contents-for-php4/
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 39 Messages

19 févr. 2016, 12:49

il me donne une autre erreur sur une autre ligne, j'ai mis mon fichier treemenu.inc sur lequel j'arrive à traduire mon menu écrit en txt
Le problème est que je n'arrive pas à traduire les pages.htm en déroulant le menu.
J'ai mis pour l'instant le fichier sur le net on affiche bien la traduction on peut choisir la langue mais uniquement sur le menu déroulant
www.histoirdefrance.fr

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<style>
BODY { font-family : Verdana,Arial; }
TD { font-family : Verdana,Arial; font-size : 8pt; }
A { text-decoration : none; }
</style>
<META NAME="google-translate-customization" content=""></META>
</head>
<body bgcolor="#DCEEFC">
<div id="google_translate_element"></div><script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({pageLanguage: 'fr', includedLanguages: 'ar,da,de,el,en,eo,es,fi,ga,hi,hr,hu,it,iw,ja,km,nl,no,pl,pt,ru,sv,zh-CN,zh-TW'}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<table cellspacing=0 cellpadding=0 border=0 cols=9>
<tr><td width=16></td><td width=16></td><td width=16></td><td width=16></td><td width=16></td><td width=16></td><td width=100%>&nbsp;</td></tr>
<tr><td><img src="images/tree_split.gif"></td><td><img src="images/bouton.gif"></td><td colspan=5><a href="about.html" target="main">Accueil</a></td></tr></html>
<?php
/*********************************************/
/* PHP TreeMenu 1.1 */
/* */
/* Author: Bjorge Dijkstra */
/* email : [email protected] */
/* */
/* Placed in Public Domain */
/* */
/*********************************************/

/*********************************************/
/* Settings */
/*********************************************/
/* */
/* $treefile variable needs to be set in */
/* main file */
/* */
/*********************************************/

/*********************************************/
/* */
/* - Multiple root node fix by Dan Howard */
/* */
/*********************************************/

if(isset($PATH_INFO)) {
$script = $PATH_INFO;
} else {
$script = $SCRIPT_NAME;
}

$img_expand = "images/tree_expand.gif";
$img_collapse = "images/tree_collapse.gif";
$img_line = "images/tree_vertline.gif";
$img_split = "images/tree_split.gif";
$img_end = "images/tree_end.gif";
$img_leaf = "images/bouton.gif";
$img_spc = "images/tree_space.gif";


/*********************************************/
/* Read text file with tree structure */
/*********************************************/

/*********************************************/
/* read file to $tree array */
/* tree[x][0] -> tree level */
/* tree[x][1] -> item text */
/* tree[x][2] -> item link */
/* tree[x][3] -> link target */
/* tree[x][4] -> last item in subtree */
/*********************************************/

$maxlevel=0;
$cnt=0;
$p=$_GET['p'];



$fd = fopen($treefile, "r");
if ($fd==0) die("treemenu.inc : Unable to open file ".$treefile);
while ($buffer = fgets($fd, 4096))
{
$tree[$cnt][0]=strspn($buffer,".");
$tmp=rtrim(substr($buffer,$tree[$cnt][0]));
$node=explode("|",$tmp);
$tree[$cnt][1]=$node[0];
$tree[$cnt][2]=$node[1];
$tree[$cnt][3]=$node[2];
$tree[$cnt][4]=0;
if ($tree[$cnt][0] > $maxlevel) $maxlevel=$tree[$cnt][0];
$cnt++;
}
fclose($fd);

//echo "<pre>".print_r($tree,true)."</pre>";

for ($i=0; $i<count($tree); $i++) {
$expand[$i]=0;
$visible[$i]=0;
$levels[$i]=0;
}

/*********************************************/
/* Get Node numbers to expand */
/*********************************************/

if ($p!="") $explevels = explode("|",$p);

$i=0;
while($i<count($explevels))
{
$expand[$explevels[$i]]=1;
$i++;
}

//echo "<pre>".print_r($expand,true)."</pre>";

/*********************************************/
/* Find last nodes of subtrees */
/*********************************************/

$lastlevel=$maxlevel;
for ($i=count($tree)-1; $i>=0; $i--)
{
if ( $tree[$i][0] < $lastlevel )
{
for ($j=$tree[$i][0]+1; $j <= $maxlevel; $j++)
{
$levels[$j]=0;
}
}
if ( $levels[$tree[$i][0]]==0 )
{
$levels[$tree[$i][0]]=1;
$tree[$i][4]=1;
}
else
$tree[$i][4]=0;
$lastlevel=$tree[$i][0];
}


/*********************************************/
/* Determine visible nodes */
/*********************************************/

// all root nodes are always visible
for ($i=0; $i < count($tree); $i++) if ($tree[$i][0]==1) $visible[$i]=1;


for ($i=0; $i < count($explevels); $i++)
{
$n=$explevels[$i];
if ( ($visible[$n]==1) && ($expand[$n]==1) )
{
$j=$n+1;
while ( $tree[$j][0] > $tree[$n][0] )
{
if ($tree[$j][0]==$tree[$n][0]+1) $visible[$j]=1;
$j++;
}
}
}


/*********************************************/
/* Output nicely formatted tree */
/*********************************************/

for ($i=0; $i<$maxlevel; $i++) $levels[$i]=1;

$maxlevel++;

echo "<table cellspacing=0 cellpadding=0 border=0 cols=".($maxlevel+3).">\n";
echo "<tr>";
for ($i=0; $i<$maxlevel; $i++) echo "<td width=16></td>";
echo "<td width=100%>&nbsp;</td></tr>\n";
$cnt=0;
while ($cnt<count($tree))
{
if ($visible[$cnt])
{
/****************************************/
/* start new row */
/****************************************/
echo"<tr>";

/****************************************/
/* vertical lines from higher levels */
/****************************************/
$i=0;
while ($i<$tree[$cnt][0]-1)
{
if ($levels[$i]==1)
echo "<td><a name='$cnt'></a><img src=\"".$img_line."\"></td>";
else
echo "<td><a name='$cnt'></a><img src=\"".$img_spc."\"></td>";
$i++;
}

/****************************************/
/* corner at end of subtree or t-split */
/****************************************/
if ($tree[$cnt][4]==1)
{
echo "<td><img src=\"".$img_end."\"></td>";
$levels[$tree[$cnt][0]-1]=0;
}
else
{
echo "<td><img src=\"".$img_split."\"></td>";
$levels[$tree[$cnt][0]-1]=1;
}

/********************************************/
/* Node (with subtree) or Leaf (no subtree) */
/********************************************/
if ($tree[$cnt+1][0]>$tree[$cnt][0])
{

/****************************************/
/* Create expand/collapse parameters */
/****************************************/
$i=0; $params="?p=";
while($i<count($expand))
{
if ( ($expand[$i]==1) && ($cnt!=$i) || ($expand[$i]==0 && $cnt==$i))
{
$params=$params.$i;
$params=$params."|";
}
$i++;
}

if ($expand[$cnt]==0)
echo "<td><a href=\"".$script.$params."#$cnt\"><img src=\"".$img_expand."\" border=no></a></td>";
else
echo "<td><a href=\"".$script.$params."#$cnt\"><img src=\"".$img_collapse."\" border=no></a></td>";
}
else
{
/*************************/
/* Tree Leaf */
/*************************/

echo "<td><img src=\"".$img_leaf."\"></td>";
}

/****************************************/
/* output item text */
/****************************************/
if ($tree[$cnt][2]=="")
echo "<td colspan=".($maxlevel-$tree[$cnt][0]).">".$tree[$cnt][1]."</td>";
else
{
if ($tree[$cnt+1][0]>$tree[$cnt][0])
echo "<td colspan=".($maxlevel-$tree[$cnt][0])."><a href=\"".$tree[$cnt][2]."\" target=\"".$tree[$cnt][3]."\" onClick=\"location.href='".$script.$params."#$cnt'\">".$tree[$cnt][1]."</a></td>";
else
echo "<td colspan=".($maxlevel-$tree[$cnt][0])."><a href=\"".$tree[$cnt][2]."\" target=\"".$tree[$cnt][3]."\">".$tree[$cnt][1]."</a></td>";
}


/****************************************/
/* end row */
/****************************************/

echo "</tr>\n";
}
$cnt++;
}
echo "</table>\n";
?>