I was contacted by a company using this old version of both JOOMLA and CC (1.5.3/3.1), their website has been running for a long time and was maintained by a developer who is now out of reach. It is now my turn to work on it !
They ask me for different changes, so I downloaded and installed the site on localhost. After some editing in the config file, everything is working properly except Chono Forms which are kind of broken. I get this Error : Fatal error: Using $this when not in object context in C:\wamp\www\cybelle\cybelle2\plugins\content\chronocontact.php(208) : eval()'d code on line 9
which refer to that line (208):
eval("?>". $rows[0]->html);
If I replace this line with :
echo( $rows[0]->html );
the page gets printed and the following text is displayed instead of the form : setQuery( $query ); $projet = $db->loadObjectList(); echo JHTML::_( 'select.genericlist', $projet, 'projet', 'class="inputbox" align="right" style="width: 207px"', 'value', 'text', $this->projet->projet, 'projet'); ?>
On this page, two different forms are displayed, the second form shows but some php code is printed in or above different fields. It looks like PHP is not evaluated because of some tags (<? and/or ") issue. The forms code is exactly the same as in the production website which is ok. A hint is maybe the second form uses a recaptcha. The PHP code seems to break when doing things like:
echo JHTML::_( 'select.genericlist', $projet, 'projet', 'class="inputbox" align="right" style="width: 207px"', 'value', 'text', $this->projet->projet, 'projet');
Here the full code of forms :
<table width="200" border="0" >
<tr><td align="center"><h3>Rechercher une mission</h3></td></tr>
<tr>
<td align="center">
<?php $db =& JFactory::getDBO();
$query = 'SELECT id AS value, nom_court AS text FROM #__projet where published=1 ORDER BY text ASC';
$db->setQuery( $query );
$projet = $db->loadObjectList();
echo JHTML::_( 'select.genericlist', $projet, 'projet', 'class="inputbox" align="right" style="width: 207px"', 'value', 'text', $this->projet->projet, 'projet'); ?>
</td>
</tr>
<tr>
<td align="center"><input type="submit" name="gozonedetude" id="gozonedetude" value="Go"></td>
</tr>
</table>
seconf form :
<div align="center" id="inscriptionform">
<table border="1">
<tr>
<td align="center"><strong>Informations sur vous</strong></td>
</tr>
<tr>
<td align="center"><table border="0">
<tr>
<td width="203" valign="bottom">Nom :<font color="red"> *</font></td>
<td><input type="text" name="nom" value="<?php echo $_GET['nom']; ?>"id="nom" tabindex="101" /></td>
</tr>
<tr>
<td valign="bottom">Prénom :<font color="red"> *</font></td>
<td><input type="text" name="prenom" id="prenom" tabindex="102" /></td>
</tr>
<tr>
<td valign="bottom">Patronyme :</td>
<td><select name="patronyme" id="patronyme" tabindex="103">
<option>Mr</option>
<option>Mme</option>
<option>Mlle</option>
</select></td>
</tr>
<tr>
<td valign="bottom">Date de naissance : <font color="red"> *</font></td>
<td><input type="text" name="date_naissance_jour" id="date_naissance_jour" tabindex="104" size="1" /> (JJ) <input type="text" name="date_naissance_mois" id="date_naissance_mois" tabindex="104" size="1" /> (MM) <input type="text" name="date_naissance_annee" id="date_naissance_annee" tabindex="104" size="3" /> (AAAA) </td>
</tr>
<tr>
<td valign="bottom">Nationalité :<font color="red"> *</font></td>
<td><input type="text" name="nationalite" id="nationalite" tabindex="105" /></td>
</tr>
<tr>
<td valign="bottom">Profession : <font color="red"> *</font></td>
<td><select name="profession" id="profession" tabindex="106">
<option selected>----------------</option>
<option>Employé(e) cadre</option>
<option>Employé(e) non cadre</option>
<option>Chômeur</option>
<option>Chef d'entreprise</option>
<option>Libéral</option>
<option>Etudiant(e)</option>
<option>Retraité(e)</option>
<option>Autres</option>
</select></td>
</tr>
<tr>
<td valign="middle">Formation/Etudes :</td>
<td><textarea cols="43" rows="2" name="formation" id="formation" tabindex="107"></textarea>
</td>
</tr>
<tr>
<td valign="bottom">Langue(s) Parlée(s) : </td>
<td><input type="text" name="langue" id="langue" tabindex="108" /></td>
</tr>
<tr>
<td valign="bottom">Sport(s) pratiqué(s) :</td>
<td><input type="text" name="sport" id="sport" tabindex="109" /></td>
</tr>
<tr>
<td valign="bottom">Email : <font color="red"> *</font></td>
<td><input type="text" name="email" id="email" tabindex="110" /></td>
</tr>
<tr><td></td><td>Evitez les Emails type Hotmail.com, Hotmail.fr ou Live.fr, ces derniers entrainent des disfonctionnements.</td></tr>
<tr>
<td valign="bottom">Téléphone</td>
<td>Fixe :<font color="red"> *</font>
<input name="tel" type="text" id="tel" tabindex="111" size="12" />
Portable :
<input name="portable" type="text" id="portable" tabindex="112" size="13" /></td>
</tr>
<tr>
<td valign="bottom">Adresse : <font color="red"> *</font></td>
<td><input name="adresse" type="text" id="adresse" size="45" tabindex="113"/></td>
</tr>
<tr>
<td valign="bottom">(suite)</td>
<td>
Ville :<font color="red"> *</font> <input type="text" name="ville_ville" id="ville_ville" tabindex="114" size="12"/>
Code postal :<font color="red"> *</font><input size="4" name="cp" type="text" id="cp" size="12" tabindex="115"/>
</td>
</tr>
<tr>
<td valign="bottom">(suite)</td>
<td>
Pays :<font color="red"> * <input type="text" size="12" name="ville_pays" id="ville_pays" tabindex="114" /></td>
</tr>
<tr>
<td valign="bottom">Traitement médical : </td>
<td><input name="medical" type="text" id="medical" tabindex="116" size="45" /></td>
</tr>
<tr>
<td valign="bottom">Allergie ou autre : </td>
<td><input name="allergie" type="text" id="allergie" tabindex="117" size="45" /></td>
</tr>
<tr>
<td valign="bottom">Régime particulier : </td>
<td><input type="text" name="regime" id="regime" tabindex="118" /></td>
</tr>
</table></td>
</tr>
<tr>
<td align="center"><strong>Informations relatives au voyage</strong></td></tr>
<tr>
<td align="center"><table border="0">
<tr>
<td width="203" valign="bottom">Intitulé du chantier : <font color="red"> *</font></td>
<td>
<?php $db =& JFactory::getDBO();
$query = 'SELECT id AS value, nom_court AS text FROM #__projet where published = 1 order by text ASC';
$db->setQuery( $query );
$projet = $db->loadObjectList();
echo JHTML::_( 'select.genericlist', $projet, 'projet_id', 'class="inputbox" style="width: 22em"', 'value', 'text', $_GET[projet], 'projet_id'); ?>
</td>
</tr>
<tr>
<td valign="bottom">Date de séjour souhaité (1): <font color="red"> *</font></td>
<td>Aller (1): <input type="text" name="aller1j" id="aller1j" tabindex="104" size="1" /> (JJ) <input type="text" name="aller1m" id="aller1m" tabindex="104" size="1" /> (MM) <input type="text" name="aller1a" id="aller1a" tabindex="104" size="3" /> (AAAA) </td>
</tr><tr><td></td>
<td>Retour : <input type="text" name="retour1j" id="retour1j" tabindex="104" size="1" /> (JJ) <input type="text" name="retour1m" id="retour1m" tabindex="104" size="1" /> (MM) <input type="text" name="retour1a" id="retour1a" tabindex="104" size="3" /> (AAAA) </td>
</tr>
<tr>
<td valign="bottom">Date de séjour souhaité (2):</td>
<td>Aller (2): <input type="text" name="aller2j" id="aller2j" tabindex="104" size="1" /> (JJ) <input type="text" name="aller2m" id="aller2m" tabindex="104" size="1" /> (MM) <input type="text" name="aller2a" id="aller2a" tabindex="104" size="3" /> (AAAA) </td>
</tr><tr><td></td>
<td>Retour : <input type="text" name="retour2j" id="retour2j" tabindex="104" size="1" /> (JJ) <input type="text" name="retour2m" id="retour2m" tabindex="104" size="1" /> (MM) <input type="text" name="retour2a" id="retour2a" tabindex="104" size="3" /> (AAAA) </td>
</tr>
<tr>
<td valign="bottom">Date de séjour souhaité (3):</td>
<td>Aller (3): <input type="text" name="aller3j" id="aller3j" tabindex="104" size="1" /> (JJ) <input type="text" name="aller3m" id="aller3m" tabindex="104" size="1" /> (MM) <input type="text" name="aller3a" id="aller3a" tabindex="104" size="3" /> (AAAA) </td>
</tr><tr><td></td>
<td>Retour : <input type="text" name="retour3j" id="retour3j" tabindex="104" size="1" /> (JJ) <input type="text" name="retour3m" id="retour3m" tabindex="104" size="1" /> (MM) <input type="text" name="retour3a" id="retour3a" tabindex="104" size="3" /> (AAAA) </td>
</tr>
<tr>
<td valign="top">Expérience d'un séjour similaire :</td>
<td><textarea cols="43" rows="5" name="motivation" id="motivation" tabindex="123"></textarea></td>
</tr>
<tr>
<td valign="top">N° Adhérent :</td>
<td><input type="text" name="numeroadh" id="numeroadh" tabindex="115" size="2" /> <i><font size="1">(numéro à préciser si vous êtes déjà adhérent à Cybelle Planète)</font></i>
</td>
</tr>
<tr>
<td valign="top">N° chèque cadeau :</td>
<td><input type="text" name="numerocadeau" id="numerocadeau" tabindex="115" size="8" /> <i><font size="1">(numéro à préciser si vous êtes bénéficiaire d'un chèque cadeau Cybelle Planète)</font></i>
</td>
</tr>
<tr>
<td colspan="2" valign="top">Souhaitez-vous que cybelle planète se charge de réserver votre billet d'avion ?<font color="red"> *</font> OUI<INPUT type=radio name="billetavion" value="OUI"> /
NON <INPUT type=radio name="billetavion" CHECKED value="NON"> <i><font size="1">(Voir conditions : <a target="_blank" href="http://www.cybelle-planete.org/cybelle2/index.php?option=com_content&view=article&id=157&itemid=174">Lien</a>)</font></i>
</td>
</tr>
</table></td>
</tr>
<tr><td align="center"><strong>Compagnon de voyage</strong></td></tr>
<tr>
<td align="left"><table width="455" border="0">
<tr>
<td width="203" align="left">Nom : </td>
<td align="left"><input type="text" name="nomcompagnon" id="nomcompagnon" tabindex="125" /></td>
</tr>
<tr>
<td align="left">Prénom : </td>
<td align="left"><input type="text" name="prenomcompagnon" id="prenomcompagnon" tabindex="126" /></td>
</tr>
</table></td>
</tr>
<tr>
<td align="center"><strong>Personne à contacter en cas de besoin</strong></td></tr>
<tr>
<td align="left"><table width="507" border="0">
<tr>
<td width="203">Nom : <font color="red"> *</font></td>
<td><input type="text" name="nomcontact" id="nomcontact" tabindex="127" /></td>
</tr>
<tr>
<td><p>Prénom : <font color="red"> *</font></p></td>
<td><input type="text" name="prenomcontact" id="prenomcontact" tabindex="128" /></td>
</tr>
<tr>
<td>Lien : <font color="red"> *</font></td>
<td><input type="text" name="liencontact" id="liencontact" tabindex="129" /></td>
</tr>
<tr>
<td>Adresse : <font color="red"> *</font></td>
<td><input name="adressecontact" type="text" id="adressecontact" tabindex="130" size="40" /></td>
</tr>
<tr>
<td>Ville : <font color="red"> *</font></td>
<td><input name="villecontact" type="text" id="villecontact" tabindex="131" size="35" /></td>
</tr>
<tr>
<td>Code postal : <font color="red"> *</font></td>
<td><input name="cpcontact" type="text" id="cpcontact" tabindex="132" size="12" /></td>
</tr>
<tr>
<td>Email :</td>
<td><input name="emailcontact" type="text" id="emailcontact" tabindex="133" size="40" /></td>
</tr>
<tr><td></td><td>Evitez les Emails type Hotmail.com, Hotmail.fr ou Live.fr, ces derniers entrainent des disfonctionnements.</td></tr>
<tr>
<td>Téléphone : <font color="red"> *</font></td>
<td><input name="telcontact" type="text" id="telcontact" tabindex="134" size="14" /></td>
</tr>
<tr>
<td>Portable :</td>
<td><input name="portablecontact" type="text" id="portablecontact" tabindex="135" size="14" /></td>
</tr>
</table></td>
</tr>
<tr>
<td align="center"><strong>Informations diverses</strong></td></tr>
<tr>
<td align="center"><table border="0">
<tr>
<td width="203" valign="top">Laisser un commentaire : </td>
<td><textarea name="commentaire" id="commentaire" cols="43" rows="5" tabindex="136"></textarea></td>
</tr>
<tr>
<td valign="top">Comment avez vous connu Cybelle-Planète ? <font color="red"> *</font></td>
<td valign="middle">
<select name="cybelle" onchange="afficher('pressediv');" type="text" id="cybelle" tabindex="137">
<option selected></option>
<option>Par des amis</option>
<option>Par la consultation du site Internet</option>
<option>Par la consultation du site Internet suite à une publicité</option>
<option>Par la presse: </option>
</select></td>
</tr>
<tr name="pressediv" id="pressediv" style="display:none;">
<td> Précisez : </td>
<td><input type="text" name="ipresse" id="ipresse" /></td></tr>
<tr><td colspan="2">
<INPUT TYPE="checkbox" NAME="mailing_eco" VALUE="1" CHECKED> Je souhaite recevoir la newsletter électronique de l'association.
</td></tr>
</table>
<input type="hidden" id="date_preinscription" name="date_preinscription" value=""/>
</td>
</tr>
<tr><td colspan="2">
<?php
require_once('stratageo/recaptchalib.php'); // Vérifier que l'URL relative correspond à l'emplacement du fichier (adapter si nécessaire)
$publickey = "6LfECNESAAAAAPLBcb9z3FSAE2xcieNRcMPqeXmH "; // Utiliser la clé que vous avez eu lors de l'inscription sur recaptcha.net
echo recaptcha_get_html($publickey); // Affiche le captcha
?>
</td></tr>
<tr>
<td align="center"><input type="submit" name="envoyer" id="envoyer" value="Envoyer" tabindex="139" /></td>
</tr>
</table>
</div>
<input type="hidden" name="sujet" id="sujet" value="" />
<input type="hidden" name="projet2" id="projet2" value="" />
<input type="hidden" name="date_naissance" id="date_naissance" value="" />
<input type="hidden" name="ville" id="ville" value="" />
<input type="hidden" name="depart1" id="depart1" value="" />
<input type="hidden" name="arrive1" id="arrive1" value="" />
<input type="hidden" name="depart2" id="depart2" value="" />
<input type="hidden" name="arrive2" id="arrive2" value="" />
<input type="hidden" name="depart3" id="depart3" value="" />
<input type="hidden" name="arrive3" id="arrive3" value="" />
<script>
show_data();
</script>
What am I missing ?