mirror of
https://github.com/pierre42100/comunic
synced 2024-11-17 02:51:13 +00:00
3214 lines
99 KiB
PHP
3214 lines
99 KiB
PHP
|
<?php
|
|||
|
/**
|
|||
|
* Project's main function file
|
|||
|
* For Comunic project use only
|
|||
|
* All rights reserved
|
|||
|
*
|
|||
|
* @author Pierre HUBERT
|
|||
|
* @date Began by the end of 2013
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
//Avertissement : ce fichier n<>cessite l'inclusion de la configuration (config.php)
|
|||
|
|
|||
|
//Affichage de l'avatar
|
|||
|
//Recherche de l'avatar de la personne
|
|||
|
function avatar($idavatar, $urlsite="./", $whidth=32, $height=32, $id="", $juste_avatar = false)
|
|||
|
{
|
|||
|
//On d<>finit l'adresse de l'avatar
|
|||
|
$adresse_avatar = "0.jpg";
|
|||
|
|
|||
|
if(file_exists(relativeUserDataFolder("avatars/adresse_avatars/".$idavatar.".txt")))
|
|||
|
{
|
|||
|
//Contr<74>le du niveau de visibilit<69>
|
|||
|
$niveau_visibilite_avatar = (get_niveau_visibilite_avatar($idavatar, $urlsite));
|
|||
|
|
|||
|
//On d<>finit que c'est n'est pas bon.
|
|||
|
$ok = false;
|
|||
|
|
|||
|
//On contr<74>le l'avatar
|
|||
|
$ok = ($niveau_visibilite_avatar == 3 ? true : $ok); //On v<>rifie si l'avatar est ouvert
|
|||
|
|
|||
|
//On v<>rifie si ce n'est pas encore bon et si l'utilisateur est connect<63>
|
|||
|
if(!$ok AND isset($_SESSION['ID']))
|
|||
|
{
|
|||
|
$ok = (($niveau_visibilite_avatar == 2) AND (isset($_SESSION['ID'])) ? true : $ok); //On v<>rifie si l'avatar est ouvert et si l'utilisateur est connect<63>
|
|||
|
$ok = ($idavatar == $_SESSION['ID'] ? true : $ok); //On v<>rifie si il s'agit de l'avatar de l'utilisateur actuel
|
|||
|
|
|||
|
//On v<>rifie si ce n'est pas encore bon et si les deux personnes sont amies
|
|||
|
//Inclusion de la base de donn<6E>es
|
|||
|
include('connexiondb.php');
|
|||
|
|
|||
|
if(!$ok AND detectesilapersonneestamie($_SESSION['ID'], $idavatar, $bdd))
|
|||
|
{
|
|||
|
//Dans ce ce cas c'est OK
|
|||
|
$ok = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Si possible, on change l'adresse de l'avatar
|
|||
|
if($ok)
|
|||
|
$adresse_avatar = file_get_contents(relativeUserDataFolder("avatars/adresse_avatars/".$idavatar.".txt"));
|
|||
|
}
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
if(!$juste_avatar)
|
|||
|
return "<img src='".webUserDataFolder()."avatars/".$adresse_avatar."' whidth='".$whidth."' height='".$height."' id='".$id."' />";
|
|||
|
else
|
|||
|
return webUserDataFolder()."avatars/".$adresse_avatar;
|
|||
|
}
|
|||
|
|
|||
|
//Affichage de l'image de fond
|
|||
|
//Recherche de l'image de fond de la personne
|
|||
|
function imgfond($id_img_fond, $urlsite="./", $whidth=32, $height=32, $id="", $juste_url = false)
|
|||
|
{
|
|||
|
//On v<>rifie si un compl<70>ment est disponible
|
|||
|
if(file_exists(relativeUserDataFolder("imgfond/adresse_imgfond/".$id_img_fond.".txt")))
|
|||
|
$url = webUserDataFolder("imgfond/".file_get_contents(relativeUserDataFolder("imgfond/adresse_imgfond/".$id_img_fond.".txt")));
|
|||
|
else
|
|||
|
$url = webUserDataFolder("imgfond/0.jpg");
|
|||
|
|
|||
|
if(!$juste_url)
|
|||
|
return "<img src='".$url."' whidth='".$whidth."' height='".$height."' id='".$id."' />";
|
|||
|
else
|
|||
|
return $url;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>finir le niveau de visibilit<69> de l'avatar de l'utilisateur
|
|||
|
//Valeur de retour :
|
|||
|
// 1 - L'utilisateur et ses amis uniquement
|
|||
|
// 2 - L'utilisateur, ses amis et les personnes connect<63>es
|
|||
|
// 3 - L'utilisateur, ses amis, les personnes connect<63>es et non connect<63>es -> Tout le monde
|
|||
|
function get_niveau_visibilite_avatar($id, $urlsite = "./")
|
|||
|
{
|
|||
|
//On d<>finit qu'il est visible par tout le monde
|
|||
|
$niveau_visibilite_avatar = 3;
|
|||
|
|
|||
|
//On v<>rifie si ce niveau de visibilit<69> a <20>t<EFBFBD> personalis<69> par l'utilisateur
|
|||
|
$adresse_fichier = relativeUserDataFolder("avatars/adresse_avatars/limit_view_".$id.".txt");
|
|||
|
if(file_exists($adresse_fichier))
|
|||
|
{
|
|||
|
//R<>cup<75>ration du contenu du fichier
|
|||
|
$content_file = file_get_contents($adresse_fichier);
|
|||
|
|
|||
|
//Contr<74>le du contenu du fichier (on ne prendra en compte sa valeur que si elle ne pr<70>sente un int<6E>r<EFBFBD>t
|
|||
|
if( $content_file == 1 OR $content_file == 2 )
|
|||
|
$niveau_visibilite_avatar = $content_file; //On enregistre la nouvelle valeur
|
|||
|
}
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $niveau_visibilite_avatar;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de modification du niveau de visibilit<69> de l'avatar
|
|||
|
function modifie_niveau_visibilite_avatar($id_personne, $nouveau_niveau, $urlsite = "./")
|
|||
|
{
|
|||
|
//D<>finition de l'adresse du fichier
|
|||
|
$adresse_fichier = relativeUserDataFolder("avatars/adresse_avatars/limit_view_".$id_personne.".txt");
|
|||
|
|
|||
|
//Contr<74>le du nouveau niveau
|
|||
|
if($nouveau_niveau == 3)
|
|||
|
{
|
|||
|
//Niveau <20>gal <20> trois -> Suppression du fichier
|
|||
|
if(file_exists($adresse_fichier))
|
|||
|
//Suppression du message
|
|||
|
return unlink($adresse_fichier);
|
|||
|
else
|
|||
|
//Rien <20> faire, retour positif
|
|||
|
return true;
|
|||
|
}
|
|||
|
elseif($nouveau_niveau == 2 OR $nouveau_niveau == 1)
|
|||
|
{
|
|||
|
//Edition du fichier et retour (positif ou n<>gatif suivant la r<>ponse)
|
|||
|
return file_put_contents($adresse_fichier, $nouveau_niveau);
|
|||
|
}
|
|||
|
else
|
|||
|
//Erreur
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'ajout de texte
|
|||
|
function ajouttexte($idpersonne, $texte, $bdd, $niveau_visibilite = 2, $type="texte", $path = "", $annee_fin = 0, $mois_fin = 0, $jour_fin = 0, $url_page="", $titre_page = "", $description_page = "", $image_page = "")
|
|||
|
{
|
|||
|
$sql = 'INSERT INTO texte (ID_personne, date_envoi, texte, niveau_visibilite, type, path, annee_fin, mois_fin, jour_fin, url_page, titre_page, description_page, image_page) VALUES (?, NOW(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
$insertion->execute(array($idpersonne, corrige_echapement($texte), $niveau_visibilite, $type, $path, $annee_fin, $mois_fin, $jour_fin, $url_page, $titre_page, $description_page, $image_page));
|
|||
|
|
|||
|
//Et la notification (uniquement si n<>cessaire => Si le post n'a pas un niveau <20>gal <20> 3)
|
|||
|
if(!visibilite_privee($niveau_visibilite))
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté un texte sur sa page.", $bdd, "page:".$_SESSION['ID']);
|
|||
|
else
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté un texte sur sa page.", $bdd, "page:".$_SESSION['ID'], "", "texte", list_personnes_groupes($niveau_visibilite, $bdd));
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'ajout de texte sur la page d'un amis
|
|||
|
//Param<61>tres de la fonction
|
|||
|
//$idpersonne : la personne qui ENVOI le texte
|
|||
|
//$idamis la personne <20> qui est DESTINE le texte
|
|||
|
//-----------------------------------------
|
|||
|
//DB SQL
|
|||
|
//ID_personne : la personne <20> qui est DESTINE le texte
|
|||
|
//ID_amis : la personne qui ENVOI le texte
|
|||
|
function ajouttexte_amis($idpersonne, $idamis, $texte, $bdd, $niveau_visibilite = 2, $type = "texte", $path = "", $annee_fin = 0, $mois_fin = 0, $jour_fin = 0, $url_page="", $titre_page = "", $description_page = "", $image_page = "")
|
|||
|
{
|
|||
|
$sql = 'INSERT INTO texte (ID_personne, ID_amis, date_envoi, texte, niveau_visibilite, type, path, annee_fin, mois_fin, jour_fin, url_page, titre_page, description_page, image_page) VALUES (?, ?, NOW(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
$insertion->execute(array($idamis, $idpersonne, corrige_echapement($texte), $niveau_visibilite, $type, $path, $annee_fin, $mois_fin, $jour_fin, $url_page, $titre_page, $description_page, $image_page));
|
|||
|
|
|||
|
//La notification UNIQUEMENT SI LE POST EST OUVERT AUX AMIS
|
|||
|
if(!visibilite_privee($niveau_visibilite))
|
|||
|
{
|
|||
|
//And the notification
|
|||
|
$infopersonne = cherchenomprenom($idamis, $bdd);
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté un texte sur la page de ".$infopersonne['prenom'].' '.$infopersonne['nom'].".", $bdd, "page:".$infopersonne['ID'], $idamis);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//And the notification
|
|||
|
$infopersonne = cherchenomprenom($idamis, $bdd);
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté un texte sur la page de ".$infopersonne['prenom'].' '.$infopersonne['nom'].".", $bdd, "page:".$infopersonne['ID'], $idamis, "texte", list_personnes_groupes($niveau_visibilite, $bdd));
|
|||
|
}
|
|||
|
|
|||
|
//Inclusion de la configuration
|
|||
|
include('inc/config/config.php');
|
|||
|
|
|||
|
$info_destinataire = cherchenomprenom($idamis, $bdd);
|
|||
|
//V<>rification de l'autorisation d'envoi de mails
|
|||
|
if($active_envoi_mail == "oui" && $info_destinataire['autorise_mail'] == 1)
|
|||
|
{
|
|||
|
//Envoi d'un message au demand<6E>
|
|||
|
$info_amis = cherchenomprenom($idpersonne, $bdd);
|
|||
|
$send_mail = true;
|
|||
|
$sujet = "Nouveau texte sur votre page";
|
|||
|
$description_rapide = "Un de vos amis a posté un texte sur votre page.";
|
|||
|
$nom_destinataire = $info_destinataire['prenom']." ".$info_destinataire['nom'];
|
|||
|
$adresse_mail_destinataire = $info_amis['mail'];
|
|||
|
$texte_message = "
|
|||
|
<h3 class='titre'>Nouveau texte sur votre page</h3>
|
|||
|
<p>Un de vos amis a posté un texte sur votre page.</p>
|
|||
|
<p>Voici le texte:</p>
|
|||
|
<table align='center'>
|
|||
|
<tr><td>
|
|||
|
".avatar($idamis, $urlsite)."</td><td>
|
|||
|
<a href='".$urlsite."?id=".$idpersonne."'>".$info_amis['prenom']."</a><br />
|
|||
|
".$info_amis['nom']."
|
|||
|
</td></tr>
|
|||
|
<tr><td colspan='2'>
|
|||
|
".$texte."
|
|||
|
</td></tr>
|
|||
|
</table>
|
|||
|
<p><a href='".$urlsite."'>Connectez-vous</a> pour accéder à toute les notifications de Comunic.</a></p>
|
|||
|
";
|
|||
|
|
|||
|
//Envoi du message
|
|||
|
include('inc/envoi_mail.php');
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de demande en amis
|
|||
|
//Fonction n<>cessaire : liste_amis
|
|||
|
function demandeamis($idpersonne, $iddemandeur, $bdd)
|
|||
|
{
|
|||
|
//On v<>rifie si une demande n'a pas d<>j<EFBFBD> <20>t<EFBFBD> post<73>e
|
|||
|
$liste_verification = liste_amis($idpersonne, $bdd, 0);
|
|||
|
|
|||
|
//On v<>rifie
|
|||
|
foreach($liste_verification as $verifier)
|
|||
|
{
|
|||
|
if($verifier == $iddemandeur)
|
|||
|
{
|
|||
|
//On affiche un message d'erreur
|
|||
|
echo "<script>alert('La personne a d<>ja <20>t<EFBFBD> demand<6E>e en amis.');</script>";
|
|||
|
|
|||
|
//On bloque le tout
|
|||
|
$bloque = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On v<>rifie si un bloquage a <20>t<EFBFBD> effectu<74>
|
|||
|
if(!isset($bloque))
|
|||
|
{
|
|||
|
//On poste la demande
|
|||
|
$sql = "INSERT INTO amis (ID_personne, ID_amis) VALUES (?, ?)";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$insertionamis = $bdd->prepare($sql);
|
|||
|
$insertionamis->execute(array($idpersonne, $iddemandeur));
|
|||
|
|
|||
|
//Inclusion de la configuration
|
|||
|
include('inc/config/config.php');
|
|||
|
|
|||
|
//V<>rification de l'autorisation d'envoi de mails
|
|||
|
$info_destinataire_demande = cherchenomprenom($idpersonne, $bdd);
|
|||
|
if($active_envoi_mail == "oui" && $info_destinataire_demande['autorise_mail'] == 1)
|
|||
|
{
|
|||
|
//Envoi d'un message au demand<6E>
|
|||
|
$info_demandeur = cherchenomprenom($iddemandeur, $bdd);
|
|||
|
$send_mail = true;
|
|||
|
$sujet = "Demande d'amis de ".$info_demandeur['prenom']." ".$info_demandeur['nom'];
|
|||
|
$description_rapide = "Vous avez une nouvelle demande d'amis sur Comunic";
|
|||
|
$nom_destinataire = $info_destinataire_demande['prenom']." ".$info_destinataire_demande['nom'];
|
|||
|
$adresse_mail_destinataire = $info_destinataire_demande['mail'];
|
|||
|
$texte_message = "
|
|||
|
<h3 class='titre'>Nouvelle demande d'amis</h3>
|
|||
|
<p>Une nouvelle demande d'amis a été postée sur votre compte.</p>
|
|||
|
<p>Voici la personne qui vous a demandé en amis:</p>
|
|||
|
<a href='".$urlsite."?id=".$iddemandeur."'>
|
|||
|
<table align='center'>
|
|||
|
<tr><td>
|
|||
|
".avatar($iddemandeur, $urlsite)."
|
|||
|
</td><td>
|
|||
|
".$info_demandeur['prenom']."<br />
|
|||
|
".$info_demandeur['nom']."<br />
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table></a>
|
|||
|
<p><a href='".$urlsite."'>Connectez-vous</a> pour accéder à toute les notifications de Comunic.</a></p>
|
|||
|
";
|
|||
|
|
|||
|
//Envoi du message
|
|||
|
include('inc/envoi_mail.php');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si une demande <20> devenir ami a d<>j<EFBFBD> <20>t<EFBFBD> faite
|
|||
|
function isset_demande_amis($idpersonne, $iddemandeur, $bdd)
|
|||
|
{
|
|||
|
//On v<>rifie si une demande n'a pas d<>j<EFBFBD> <20>t<EFBFBD> post<73>e
|
|||
|
$liste_verification = liste_amis($idpersonne, $bdd, 0);
|
|||
|
|
|||
|
//On v<>rifie
|
|||
|
foreach($liste_verification as $verifier)
|
|||
|
{
|
|||
|
if($verifier == $iddemandeur)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de recherche de tous les textes
|
|||
|
function affichertextes($id, $bdd, $lignedepart = 0, $limit = 10, $niveau_visibilite = 2, $tous_texte_personne = false, $post_precis = false, $liste_groupes = array(), $type = "all")
|
|||
|
{
|
|||
|
//Compl<70>ment de source pour les groupes
|
|||
|
$complement_source_groupes = "";
|
|||
|
foreach($liste_groupes as $ajouter)
|
|||
|
{
|
|||
|
$complement_source_groupes .= " OR (niveau_visibilite LIKE '%|".$ajouter."')";
|
|||
|
$complement_source_groupes .= " OR (niveau_visibilite LIKE '%|".$ajouter."|%')";
|
|||
|
}
|
|||
|
|
|||
|
//Compl<70>ment de source pour les types de post
|
|||
|
$complement_source_type = "";
|
|||
|
if($type != "all")
|
|||
|
$complement_source_type = "AND type = '".$type."' ";
|
|||
|
|
|||
|
//Recherche des textes de la personne (en fonction de de tous ou non)
|
|||
|
if(isset($_SESSION['ID']))
|
|||
|
{
|
|||
|
if($post_precis != false)
|
|||
|
{
|
|||
|
$sql = "SELECT * FROM texte WHERE (ID_personne = ".$id.") ".$complement_source_type." AND (((niveau_visibilite <= ?) OR (niveau_visibilite LIKE ?)) ".$complement_source_groupes.") AND ID = ".$post_precis*1;
|
|||
|
}
|
|||
|
elseif(!$tous_texte_personne)
|
|||
|
$sql = "SELECT * FROM texte WHERE (ID_personne = ".$id.") ".$complement_source_type." AND ((((niveau_visibilite <= ?) OR (niveau_visibilite LIKE ?)) ".$complement_source_groupes.") OR ID_amis = ".(isset($_SESSION['ID']) ? $_SESSION['ID'] : "'null'").") ORDER BY ID DESC LIMIT ".$lignedepart.", ".$limit;
|
|||
|
else
|
|||
|
$sql = "SELECT * FROM texte WHERE (ID_personne = ".$id.") ".$complement_source_type." AND (((niveau_visibilite <= ?) OR (niveau_visibilite LIKE ?) ".$complement_source_groupes.") OR ID_amis = ".(isset($_SESSION['ID']) ? $_SESSION['ID'] : "'null'").") ORDER BY ID DESC LIMIT ".$lignedepart.", ".$limit;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if($post_precis != false)
|
|||
|
{
|
|||
|
$sql = "SELECT * FROM texte WHERE ID_personne = ".$id." ".$complement_source_type." AND niveau_visibilite = 1 AND ID = ".$post_precis*1;
|
|||
|
}
|
|||
|
elseif(!$tous_texte_personne)
|
|||
|
$sql = "SELECT * FROM texte WHERE ID_personne = ".$id." ".$complement_source_type." AND niveau_visibilite = 1 ORDER BY ID DESC LIMIT ".$lignedepart.", ".$limit;
|
|||
|
else
|
|||
|
$sql = "SELECT * FROM texte WHERE ID_personne = ".$id." ".$complement_source_type." AND niveau_visibilite = 1 ORDER BY ID DESC LIMIT ".$lignedepart.", ".$limit;
|
|||
|
}
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$textes = $bdd->prepare($sql);
|
|||
|
$textes->execute(array($niveau_visibilite, $niveau_visibilite."%"));
|
|||
|
|
|||
|
//Affichage des r<>sultats
|
|||
|
$retour = array();
|
|||
|
while($afficherresultats = $textes->fetch())
|
|||
|
{
|
|||
|
$retour[] = $afficherresultats;
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi les r<>sultats
|
|||
|
return $retour;
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$textes->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet d'aimer ou de ne plus aimer
|
|||
|
function aimeaimeplus($actionid, $idtextelike, $idpersonne, $bdd, $type = "texte")
|
|||
|
{
|
|||
|
//Recherche de la cause d'appel de cette fonction
|
|||
|
$sql = "SELECT * FROM aime WHERE (ID_type = ?) && (ID_personne = ?) && (type = ?)";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($idtextelike, $idpersonne, $type));
|
|||
|
|
|||
|
$tour = "0";
|
|||
|
|
|||
|
while($executionrequete = $requete->fetch())
|
|||
|
{
|
|||
|
$tour = "1";
|
|||
|
}
|
|||
|
|
|||
|
if($actionid == 2)
|
|||
|
{
|
|||
|
$action = "Je n'aime plus";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$action = "J'aime";
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete de recherche
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Si la requete est d'aimer, ajouter une entr<74>e dans la table aimer
|
|||
|
if($action == "J'aime")
|
|||
|
{
|
|||
|
//On v<>rifie avant si la personne n'aime pas d<>j<EFBFBD>
|
|||
|
if($tour != 0)
|
|||
|
{
|
|||
|
//On affiche un message d'erreur: la personne aime d<>j<EFBFBD> le texte
|
|||
|
echo '<script type="text/javascript">alert("Vous aimez d<>j<EFBFBD> ce contenu! Il n\'est pas autoris<69> d\'aimer plusieurs fois un contenu.");</script>';
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Requete d'insertion
|
|||
|
$sql = "INSERT INTO aime (ID_type, ID_personne, Date_envoi, type) VALUES (?, ?, NOW(), ?)";
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
$insertion->execute(array($idtextelike, $idpersonne, $type));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Si la requete est de ne plus aimer, supprimer l'entr<74>e de la table
|
|||
|
if ($action == "Je n'aime plus")
|
|||
|
{
|
|||
|
$sql = "DELETE FROM aime WHERE (ID_type = ?) && (ID_personne = ?) && (type = ?)";
|
|||
|
$suppression = $bdd->prepare($sql);
|
|||
|
$suppression->execute(array($idtextelike, $idpersonne, $type));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de requete de recherche des aime
|
|||
|
function requeteaime($idtexte, $bdd, $type = "texte")
|
|||
|
{
|
|||
|
//On compte ensuite les j'aime pour le texte
|
|||
|
$sqlaime = ("SELECT * FROM aime WHERE ID_type = ? && type= ?");
|
|||
|
$requeteaime = $bdd->prepare($sqlaime);
|
|||
|
$requeteaime->execute(array($idtexte, $type));
|
|||
|
|
|||
|
$retour['personnesaiment'] = 0;
|
|||
|
$retour['vousaimez'] = 0;
|
|||
|
|
|||
|
if(isset($_SESSION['ID']))
|
|||
|
{
|
|||
|
$idpourlescom = $_SESSION['ID'];
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$idpourlescom = 'x';
|
|||
|
}
|
|||
|
|
|||
|
while($afficheraime = $requeteaime->fetch())
|
|||
|
{
|
|||
|
if($afficheraime['ID_personne'] != $idpourlescom)
|
|||
|
{
|
|||
|
$retour['personnesaiment']++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$retour['vousaimez'] = 1;
|
|||
|
$retour['personnesaiment']++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $retour;
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requeteaime->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de supprimer tous les "aimes" d'un type pour un id
|
|||
|
function delete_aimes_type_id($idcontent, $type, $bdd)
|
|||
|
{
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$sql = "DELETE FROM aime WHERE (ID_type = ?) && (type = ?)";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($idcontent, $type));
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage du bouton j'aime pour un commentaire
|
|||
|
function bouton_aime_commentaire($idcommentaire, $idtexte, $bdd)
|
|||
|
{
|
|||
|
//Recherche du nombre de j'aime
|
|||
|
$nombre_aime = requeteaime($idcommentaire, $bdd, "commentaire");
|
|||
|
|
|||
|
//D<>veloppement uniquement
|
|||
|
//print_r($nombre_aime);
|
|||
|
|
|||
|
echo " <img src='".path_img_asset()."aime";
|
|||
|
echo ($nombre_aime['vousaimez'] != 0 ? "" : "_vide");
|
|||
|
echo ".png'";
|
|||
|
|
|||
|
// Uniquement si l'utilisateur est connect<63>
|
|||
|
if(isset($_SESSION['ID']))
|
|||
|
{
|
|||
|
echo " onClick='like_comment(".$idcommentaire.", ".$idtexte.",".$nombre_aime['vousaimez'].");'";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
echo " id='like_comment_".$idcommentaire."' /> ";
|
|||
|
|
|||
|
echo $nombre_aime["personnesaiment"];
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de suppression de commentaires
|
|||
|
function suppcom($id, $bdd)
|
|||
|
{
|
|||
|
//On r<>cup<75>re les informations dans la base de donn<6E>es
|
|||
|
$infos_commentaire = select_sql("commentaires", "ID = ?", $bdd, array($id));
|
|||
|
|
|||
|
//On supprime les mentions "j'aime" du commentaire
|
|||
|
delete_aimes_type_id($id, "commentaire", $bdd);
|
|||
|
|
|||
|
//On v<>rifie si une image est associ<63>e au commentaire
|
|||
|
if(preg_match("<file:>", $infos_commentaire[0]['image_commentaire']))
|
|||
|
{
|
|||
|
$fichier = relativeUserDataFolder(str_replace('file:', '', $infos_commentaire[0]['image_commentaire']));
|
|||
|
|
|||
|
//Suppression du fichier
|
|||
|
if(!preg_match('<.php>', $fichier))
|
|||
|
unlink($fichier);
|
|||
|
else
|
|||
|
die("Major error found ! Deletion stopped !");
|
|||
|
|
|||
|
echo "One image deleted.";
|
|||
|
}
|
|||
|
|
|||
|
//Ex<45>cution de la suppression
|
|||
|
$sql = "DELETE FROM commentaires WHERE ID = ".$infos_commentaire[0]['ID'];
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$suppcommentaire = $bdd->query($sql);
|
|||
|
|
|||
|
//On redirige vers la meme page pour <20>viter les collisions
|
|||
|
$retour = "Suppression termin<69>e, redirection en cours....<br />";
|
|||
|
$retour .= '<meta http-equiv="refresh" content="0">';
|
|||
|
|
|||
|
//On renvoie le r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage des commentaires
|
|||
|
function affichecommentaire($idtexte, $bdd)
|
|||
|
{
|
|||
|
//Affichage des commentaires
|
|||
|
$sql = 'SELECT * FROM commentaires WHERE ID_texte = '.$idtexte.' ORDER BY ID';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$commentaires = $bdd->query($sql);
|
|||
|
|
|||
|
//Enregistrement des commentaires dans une variable
|
|||
|
$retour = array();
|
|||
|
while($affichercommentaires = $commentaires->fetch())
|
|||
|
{
|
|||
|
//On corrige la longueur des mots des commentaires
|
|||
|
$affichercommentaires['commentaire'] = corrige_longueur_mots_commentaires($affichercommentaires['commentaire']);
|
|||
|
|
|||
|
$retour[] = $affichercommentaires;
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $retour;
|
|||
|
|
|||
|
//On ferme la requete
|
|||
|
$commentaires->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de suppression de texte
|
|||
|
function deletetexte($idtexte, $texte, $bdd, $other_info = array())
|
|||
|
{
|
|||
|
//!!! OBSOLETE -> DANGER SYSTEME !!! On v<>rifie si il ne s'agit pas d'une image (ancienne -> ancien syst<73>me)
|
|||
|
/*$chaine = '/imgcomunicpostbyuser/';
|
|||
|
if(preg_match($chaine, $texte))
|
|||
|
{
|
|||
|
//On r<>cup<75>re le nom de l'image pour la supprimer...
|
|||
|
$nomimg = str_replace('imgcomunicpostbyuser', '', $texte);
|
|||
|
$nomimg = strstr($nomimg, 'endof', true);
|
|||
|
|
|||
|
//On supprime l'image
|
|||
|
unlink('imgpost/'.$nomimg.'.jpg');
|
|||
|
}*/
|
|||
|
|
|||
|
//On v<>rifie si il ne s'agit d'une image (plus r<>cente -> nouveau syst<73>me)
|
|||
|
//On v<>rifie si les informations ont <20>t<EFBFBD> donn<6E>es
|
|||
|
if(count($other_info) != 0)
|
|||
|
{
|
|||
|
//On v<>rifie si il s'agit d'une image
|
|||
|
if($other_info['type'] == "image" || $other_info['type'] == "pdf")
|
|||
|
{
|
|||
|
//Dans ce cas on supprime l'image
|
|||
|
unlink(relativeUserDataFolder($other_info['path']));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On supprime les aimes des commentaires
|
|||
|
$commentaires = affichecommentaire($idtexte, $bdd);
|
|||
|
|
|||
|
//Suppression des aimes des commentaires
|
|||
|
foreach($commentaires as $info_commentaire)
|
|||
|
{
|
|||
|
//On supprime les 'aimes' du commentaire
|
|||
|
delete_aimes_type_id($info_commentaire['ID'], "commentaire", $bdd);
|
|||
|
}
|
|||
|
|
|||
|
//On supprime le texte et les commentaires associ<63>s
|
|||
|
$sql1 = "DELETE FROM texte WHERE ID = ".$idtexte;
|
|||
|
$sql2 = "DELETE FROM commentaires WHERE ID_texte = ".$idtexte;
|
|||
|
$sql3 = "DELETE FROM aime WHERE ID_type = ".$idtexte." AND type = 'texte'";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$supptxt1 = $bdd->query($sql1);
|
|||
|
$supptxt2 = $bdd->query($sql2);
|
|||
|
$supptxt3 = $bdd->query($sql3);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'ajout de commentaire
|
|||
|
function ajoutcommentaire($idpersonne, $idtexte, $commentaire, $bdd)
|
|||
|
{
|
|||
|
//Pr<50>paration du contr<74>le de la pr<70>sence d'une image
|
|||
|
$image = "";
|
|||
|
|
|||
|
if(isset($_FILES['image']))
|
|||
|
{
|
|||
|
if($_FILES['image']['error'] == 0)
|
|||
|
{
|
|||
|
ob_start();
|
|||
|
if($infos_image = getimagesize($_FILES['image']['tmp_name']))
|
|||
|
{
|
|||
|
ob_end_clean();
|
|||
|
|
|||
|
if(is_array($infos_image))
|
|||
|
{
|
|||
|
//Exemple de r<>ponse
|
|||
|
/* Array (
|
|||
|
[0] => 1280
|
|||
|
[1] => 1024
|
|||
|
[2] => 3
|
|||
|
[3] =>
|
|||
|
width="1280"
|
|||
|
height="1024"
|
|||
|
[bits] => 8
|
|||
|
[mime] => image/png
|
|||
|
) */
|
|||
|
|
|||
|
//On ne continue que si le type d'image est correcte
|
|||
|
if(in_array($infos_image['mime'], array('image/png', 'image/gif', 'image/jpeg')))
|
|||
|
{
|
|||
|
//On r<>cup<75>re les dimensions de l'image
|
|||
|
$width = $infos_image[0];
|
|||
|
$height = $infos_image[1];
|
|||
|
|
|||
|
//On diminue les dimensions de l'image tant qu'elles sont sup<75>rieures <20> la limite
|
|||
|
while($width > 350 OR $height > 550)
|
|||
|
{
|
|||
|
$width = $width*0.9;
|
|||
|
$height = $height*0.9;
|
|||
|
}
|
|||
|
|
|||
|
//On simplifie les valeurs trouv<75>es
|
|||
|
$width = floor($width);
|
|||
|
$height = floor($height);
|
|||
|
|
|||
|
//On redimensionne l'image
|
|||
|
// Fichier et nouvelle taille
|
|||
|
$filename = $_FILES['image']['tmp_name'];
|
|||
|
|
|||
|
// Cr<43>ation de la nouvelle image
|
|||
|
$thumb = imagecreatetruecolor($width, $height);
|
|||
|
|
|||
|
if($infos_image['mime']=='image/jpeg')
|
|||
|
{
|
|||
|
// Cr<43>ation des instances d'image (jpeg)
|
|||
|
$source = imagecreatefromjpeg($filename);
|
|||
|
}
|
|||
|
elseif($infos_image['mime']=='image/png')
|
|||
|
{
|
|||
|
// Cr<43>ation des instances d'image (png)
|
|||
|
$source = imagecreatefrompng($filename);
|
|||
|
}
|
|||
|
elseif($infos_image['mime']=='image/gif')
|
|||
|
{
|
|||
|
// Cr<43>ation des instances d'image (gif)
|
|||
|
$source = imagecreatefromgif($filename);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
die("<p>Type d'image incompatible avec ce service.</p>");
|
|||
|
}
|
|||
|
|
|||
|
// Redimensionnement
|
|||
|
imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $infos_image[0], $infos_image[1]);
|
|||
|
|
|||
|
//D<>termination du nom de l'image
|
|||
|
$nom_img_commentaire = sha1(time().$_SESSION['ID'].sha1($commentaire).$_SERVER['REMOTE_ADDR']);
|
|||
|
|
|||
|
//Checking user's folder path
|
|||
|
checkPersonnalFolder(relativeUserDataFolder("imgcommentaire/"), $_SESSION['ID']);
|
|||
|
|
|||
|
//Check if an image with the same name already exists
|
|||
|
while(file_exists(relativeUserDataFolder("imgcommentaire/".$_SESSION['ID']."/".$nom_img_commentaire.".png")))
|
|||
|
$nom_img_commentaire = crypt($nom_img_commentaire);
|
|||
|
|
|||
|
$nom_img_commentaire = "imgcommentaire/".$_SESSION['ID']."/".$nom_img_commentaire.".png";
|
|||
|
|
|||
|
//Ecriture du fichier
|
|||
|
imagepng($thumb, relativeUserDataFolder($nom_img_commentaire));
|
|||
|
|
|||
|
//On indique o<> se trouve dans le fichier dans la bdd
|
|||
|
$image = "file:".$nom_img_commentaire;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
ob_end_clean();
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Contr<74>le de la validit<69> du commentaire (n<>cessite verifie_validite_ajout)
|
|||
|
if(verifie_validite_ajout($commentaire, true) || $image != "")
|
|||
|
{
|
|||
|
//Insertion du commentaire
|
|||
|
$sql = "INSERT INTO commentaires (ID_personne, ID_texte, date_envoi, commentaire, image_commentaire) VALUES (".$idpersonne.", ".$idtexte.", NOW(), ?, ?)";
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
$insertion->execute(array(corrige_echapement($commentaire), $image));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Message d'erreur
|
|||
|
echo "<script>alert('Commentaire invalide !');</script>";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de recherche des informations d'une personne
|
|||
|
function cherchenomprenom($ID, $bdd = false, $type = 'ID', $messageerreur = "<p>Erreur! Le profil demandé n'existe pas.</p>")
|
|||
|
{
|
|||
|
//On v<>rifie si il s'agit ou non du fil d'actualit<69>
|
|||
|
if($ID != "fil" && $bdd)
|
|||
|
{
|
|||
|
//Recherche du nom de la personne
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE ".$type." = ?";
|
|||
|
$nompersonne = $bdd->prepare($sql);
|
|||
|
$nompersonne->execute(array($ID));
|
|||
|
|
|||
|
//Affichage du nom de la personne
|
|||
|
ob_start();
|
|||
|
if(!$infos_user = $nompersonne->fetch())
|
|||
|
{
|
|||
|
ob_end_clean();
|
|||
|
echo $messageerreur;
|
|||
|
die();
|
|||
|
}
|
|||
|
ob_end_clean();
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$nompersonne->closeCursor();
|
|||
|
}
|
|||
|
elseif($ID == "fil")
|
|||
|
{
|
|||
|
//Informations factices
|
|||
|
/* Echantillon d'exemple ---
|
|||
|
|
|||
|
[ID] => 1
|
|||
|
[nom] => Hubert
|
|||
|
[prenom] => Pierre
|
|||
|
[date_creation] => 2013-11-10 09:17:56
|
|||
|
[mail] => pierrot42100@yahoo.fr
|
|||
|
[password] => dsqfqdfqsgq5
|
|||
|
[affiche_chat] => 0
|
|||
|
[public] => 1
|
|||
|
[pageouverte] => 1,
|
|||
|
[bloquecommentaire]
|
|||
|
--- */
|
|||
|
|
|||
|
$infos_user = array(
|
|||
|
"ID" => "fil",
|
|||
|
"nom" => "d'actualite",
|
|||
|
"prenom" => "Fil",
|
|||
|
"date_creation" => "0000-00-00 00:00:00",
|
|||
|
"mail" => "no-reply@communiquons.org",
|
|||
|
"password" => "",
|
|||
|
"public" => 1,
|
|||
|
"site_web" => "",
|
|||
|
"page_verifiee" => 0,
|
|||
|
"autoriser_post_amis" => 1,
|
|||
|
"liste_amis_publique" => 0,
|
|||
|
"bloquecommentaire" => 0
|
|||
|
);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
?><p>Informations manquantes pour accéder à la base de données. Ce n'est pas de votre faute, cependant cette erreur implique l'arrêt du chargement de la page.
|
|||
|
Essayez d'actualiser la page pour essayer de corriger le problèm.</p><?php
|
|||
|
die();
|
|||
|
}
|
|||
|
//D<>termination du nom complet de la personne
|
|||
|
$infos_user['nom_complet'] = $infos_user['prenom']." ".$infos_user['nom'];
|
|||
|
return $infos_user;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si une page est publique ou non
|
|||
|
function detectepagepublique($idpersonne, $bdd)
|
|||
|
{
|
|||
|
//On v<>rifie si la page est publique
|
|||
|
$sql = 'SELECT * FROM utilisateurs WHERE ID = ?';
|
|||
|
$requeteverification = $bdd->prepare($sql);
|
|||
|
$requeteverification->execute(array($idpersonne));
|
|||
|
|
|||
|
//On pr<70>pare les variables pour l'<27>tapge suivante
|
|||
|
$autorisationspeciale = 0;
|
|||
|
|
|||
|
//On v<>rifie maintenant
|
|||
|
if($verifier = $requeteverification->fetch())
|
|||
|
{
|
|||
|
if(($verifier['public'] == 1) && ($verifier['pageouverte'] == 1))
|
|||
|
{
|
|||
|
//On donne alors une autorisation sp<73>ciale
|
|||
|
$autorisationspeciale = 1;
|
|||
|
}
|
|||
|
//Fermeture de la requete
|
|||
|
$requeteverification->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat suivant si la page est publique ou non
|
|||
|
if($autorisationspeciale == 1)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet de v<>rifier si une personne est un ami ou non
|
|||
|
function detectesilapersonneestamie($personneconnecte, $secondepersonne, $bdd)
|
|||
|
{
|
|||
|
//On v<>rifie si c'est un amis
|
|||
|
$sql = "SELECT * FROM amis WHERE (ID_personne = ?) && (ID_amis = ?) && (actif = 1)";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requeteamis = $bdd->prepare($sql);
|
|||
|
$requeteamis->execute(array($personneconnecte, $secondepersonne));
|
|||
|
|
|||
|
//On renvoi le r<>sultat suivant si la personne est amie ou non
|
|||
|
if(!$verifieramis = $requeteamis->fetch())
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requeteamis->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* Fonction d'envoi d'image en ligne (nouvelle version)
|
|||
|
*
|
|||
|
* @param Int $idpersonne The ID of sender
|
|||
|
* @param String $nomimage Image description
|
|||
|
* @param Object $bdd BDD object
|
|||
|
* @param Int $idamis Optionnal - Specify the ID of a friend if it is one whom send image
|
|||
|
* @param Int $niveau_visibilite Optional - Specify if specific visibility level has been defined
|
|||
|
* @return Boolean True or false depending of the success of the operation
|
|||
|
*/
|
|||
|
function envoiimage($idpersonne, $nomimage, $bdd, $idamis = 0, $niveau_visibilite = 2)
|
|||
|
{
|
|||
|
//On v<>rifie si il y a eu une erreur
|
|||
|
if($_FILES['image']['error'] == 0)
|
|||
|
{
|
|||
|
//On v<>rifie si un dossier a <20>t<EFBFBD> allou<6F>e <20> la personne, cr<63>ation automatique le cas <20>ch<63>ant
|
|||
|
$folder_user = checkPersonnalFolder(relativeUserDataFolder("imgpost/"), $_SESSION['ID']);
|
|||
|
$folder_user = str_replace(relativeUserDataFolder(), "", $folder_user);
|
|||
|
|
|||
|
//On recherche le nom de l'image
|
|||
|
$imagePath = $folder_user.(isset($_SERVER['UNIQUE_ID']) ? $_SERVER['UNIQUE_ID'] : sha1($_SERVER['HTTP_USER_AGENT']))
|
|||
|
.$_SESSION['ID'].$_SERVER['REQUEST_TIME'].".jpg"; //Nom introuvable
|
|||
|
|
|||
|
// On peut valider l'image de fond et la stocker d<>finitivement
|
|||
|
if(move_uploaded_file($_FILES['image']['tmp_name'], relativeUserDataFolder($imagePath)))
|
|||
|
{
|
|||
|
|
|||
|
//Pr<50>paration de la requete
|
|||
|
$contenu = $nomimage;
|
|||
|
|
|||
|
//On enregistre l'image dans la base
|
|||
|
$sql = 'INSERT INTO texte (ID_personne, date_envoi, texte, ID_amis, niveau_visibilite, type, size, file_type, path) VALUES ('.$idpersonne.', NOW(), ?, ?, ?, ?, ?, ?, ?) ';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
$insertion->execute(array($contenu, $idamis, $niveau_visibilite, "image", $_FILES['image']['size'], $_FILES['image']['type'], $imagePath));
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
echo "<p>Une erreur a survenue durant l'envoi de l'image, veuillez réessayer...</p>";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
echo "<p>Une erreur a survenue durant l'envoi de l'image.</p>";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de v<>rification de l'existence d'une demande de nouveaux amis
|
|||
|
function issetdemandesamis($idpersonne, $bdd)
|
|||
|
{
|
|||
|
//On v<>rifie si il y a des demandes d'amis non accept<70>s
|
|||
|
$sql = "SELECT * FROM amis WHERE (ID_personne = ".$idpersonne.") && (actif = 0)";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$verificationnouveauxamis = $bdd->query($sql);
|
|||
|
|
|||
|
//Calcul du r<>sultat
|
|||
|
if($test = $verificationnouveauxamis->fetch())
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$verificationnouveauxamis->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de correction des caract<63>res sp<73>ciaux
|
|||
|
function corrige_caracteres_speciaux($source)
|
|||
|
{
|
|||
|
//On corrige les caract<63>res sp<73>ciaux
|
|||
|
$source = str_replace("<EFBFBD>", "è", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "é", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "ê", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "ë", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "î", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "à", $source);
|
|||
|
$source = str_replace('<27>', 'ç', $source);
|
|||
|
$source = str_replace('<27>', 'ù', $source);
|
|||
|
$source = str_replace('<27>', 'â', $source);
|
|||
|
$source = str_replace('<27>', 'ô', $source);
|
|||
|
$source = str_replace('<27>', 'û', $source);
|
|||
|
$source = str_replace('<27>', '’', $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de d<>correction des caract<63>res sp<73>ciaux
|
|||
|
function decorrige_caracteres_speciaux($source)
|
|||
|
{
|
|||
|
//On corrige les caract<63>res sp<73>ciaux
|
|||
|
$source = str_replace("è", "<EFBFBD>",$source);
|
|||
|
$source = str_replace("é", "e", $source);
|
|||
|
$source = str_replace("ê", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("ë", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("î", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("à", "<EFBFBD>", $source);
|
|||
|
$source = str_replace('ç', '<27>', $source);
|
|||
|
$source = str_replace('ù', '<27>', $source);
|
|||
|
$source = str_replace('â', '<27>', $source);
|
|||
|
$source = str_replace('ô', '<27>', $source);
|
|||
|
$source = str_replace('û', '<27>', $source);
|
|||
|
$source = str_replace('’', '<27>', $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'enregistrement de post de chat
|
|||
|
function postchat($idpersonne, $message, $bdd)
|
|||
|
{
|
|||
|
//On enregistre le chat
|
|||
|
$query = $bdd->prepare("INSERT INTO chat(message, ID_personne, Date_envoi) VALUES(?, ?, NOW())");
|
|||
|
$query->execute(array($message, $idpersonne));
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de r<>cup<75>ration du contenu du chat
|
|||
|
function recuperecontenuchat($bdd, $nbpost = 10)
|
|||
|
{
|
|||
|
$sql = "SELECT * FROM chat ORDER BY ID DESC LIMIT 0,".$nbpost;
|
|||
|
$requetechat = $bdd->query($sql);
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$retour = array();
|
|||
|
while($afficherchat = $requetechat->fetch())
|
|||
|
{
|
|||
|
$retour[] = $afficherchat;
|
|||
|
}
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si le chat doit <20>tre automatiquement ouvert
|
|||
|
function verifierouvertureautomatiquechat($idpersonne, $bdd)
|
|||
|
{
|
|||
|
//On v<>rifie si le chat doit <20>tre automatiquement ouvert
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE ID = ".$idpersonne;
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$verifierchat = $bdd->query($sql);
|
|||
|
|
|||
|
//On v<>rifie et on affiche la source javascript en fonction des parametres
|
|||
|
$verfier = $verifierchat->fetch();
|
|||
|
|
|||
|
if($verfier['affiche_chat'] == 1)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$verifierchat->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de connecter l'utilisateur
|
|||
|
function connnecteruser($mail, $motdepasse, $bdd, $cryptage_necessaire = true, $active_login = true, $return_infos_user = false)
|
|||
|
{
|
|||
|
if($cryptage_necessaire)
|
|||
|
{
|
|||
|
//Hachage du mot de passe
|
|||
|
$motdepasse = sha1($motdepasse);
|
|||
|
$motdepasse = crypt($motdepasse, $motdepasse);
|
|||
|
}
|
|||
|
|
|||
|
//Pr<50>paration de la requete
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE (mail = ?) && (password = ?) ";
|
|||
|
|
|||
|
//Execution de la requete
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($mail, $motdepasse));
|
|||
|
|
|||
|
if($traiter = $requete->fetch())
|
|||
|
{
|
|||
|
//On connecte alors l'utilisateur
|
|||
|
if($active_login)
|
|||
|
//Ouverture de la session
|
|||
|
$_SESSION['ID'] = $traiter['ID'];
|
|||
|
|
|||
|
//On v<>rifie si il faut retourner les informations de l'utilisateur
|
|||
|
if(!$return_infos_user)
|
|||
|
return true;
|
|||
|
else
|
|||
|
return $traiter;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requete->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de voir si l'utilisateur est connect<63>
|
|||
|
function verifieconnnexionutilisateur()
|
|||
|
{
|
|||
|
//On cache les erreurs
|
|||
|
ob_start();
|
|||
|
//session_start();
|
|||
|
ob_end_clean();
|
|||
|
|
|||
|
//Si l'utilisateur est connect<63>, on renvoi true sinon on renvoi false
|
|||
|
if(isset($_SESSION['ID']))
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui adapte les textes pour afficher les images
|
|||
|
function adaptetexteimage($texte, $basesite = './')
|
|||
|
{
|
|||
|
$texte = str_replace('endofimgcomunicpostbyuser', '.jpg" />', $texte);
|
|||
|
$texte = str_replace('imgcomunicpostbyuser', '<img width="100" height="100" src="'.$basesite.'/user_data/imgpost/', $texte);
|
|||
|
$texte = str_replace('endofnameofimg', '</center>', $texte);
|
|||
|
$texte = str_replace('nameofimg', '<center>', $texte);
|
|||
|
|
|||
|
//On retourne le r<>slutat
|
|||
|
return $texte;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de recherche de personnes
|
|||
|
function searchuser($nom, $bdd, $limite = 10)
|
|||
|
{
|
|||
|
//Mettons "" <20> la place de "%"
|
|||
|
$nom = str_replace("%", "", $nom);
|
|||
|
|
|||
|
//Continuons de prot<6F>ger les personnes et la table
|
|||
|
$nom = str_replace("'", '"', $nom);
|
|||
|
|
|||
|
//Rendons flexible la requete
|
|||
|
$nom = str_replace(' ', '%', $nom);
|
|||
|
$nom = "%".$nom."%";
|
|||
|
|
|||
|
//Nous pouvons maintenant faire la recherche
|
|||
|
//Requ<71>te SQL
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE (nom LIKE ?) || (prenom LIKE ?) || (CONCAT(prenom, '%', nom) LIKE ? ) || (CONCAT(prenom, ' ', nom) LIKE ? ) || (mail LIKE ?) ORDER BY prenom LIMIT ".$limite;
|
|||
|
|
|||
|
//Ex<45>cution de la requete SQL
|
|||
|
$recherche = $bdd->prepare($sql);
|
|||
|
$recherche->execute(array($nom, $nom, $nom, $nom, $nom));
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$retour = array();
|
|||
|
while($afficherrecherche = $recherche->fetch())
|
|||
|
{
|
|||
|
$retour[] = $afficherrecherche;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$recherche->closeCursor();
|
|||
|
|
|||
|
//On retourne le r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet de rechercher les messages d'un utilisateur
|
|||
|
function recherchermessageutilisateur($idpersonne, $bdd, $id = '?')
|
|||
|
{
|
|||
|
if($id == '?')
|
|||
|
{
|
|||
|
//On recherche les messages de l'utilisateur
|
|||
|
//Et on les renvoies dans un tableau
|
|||
|
$sql = 'SELECT * FROM messagerie WHERE ID_destinataire = '.$idpersonne;
|
|||
|
$requete = $bdd->query($sql);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Si on recherche un message pr<70>cis, on adapte la requ<71>te
|
|||
|
$sql = 'SELECT * FROM messagerie WHERE ID_destinataire = ? && ID = ?';
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($idpersonne, $id));
|
|||
|
}
|
|||
|
|
|||
|
//On pr<70>pare l'enregistrement des r<>sultats
|
|||
|
$retour = array('lu'=>array(), 'nonlu'=>array());
|
|||
|
|
|||
|
//On enregistre les r<>sultats
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
if($enregistrer['lu'] == 0)
|
|||
|
{
|
|||
|
$retour['nonlu'][] = $enregistrer;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$retour['lu'][] = $enregistrer;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On retourne les r<>sultats
|
|||
|
return $retour;
|
|||
|
|
|||
|
//On ferme la requete
|
|||
|
$requete->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de r<>cup<75>ration de la liste des pages publiques
|
|||
|
function get_page_publique($bdd){
|
|||
|
//On r<>cup<75>re la liste de toute les pages publiques
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE pageouverte = 1 ORDER BY prenom";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requete = $bdd->query($sql);
|
|||
|
|
|||
|
//On enregistre les r<>sultats
|
|||
|
$liste = array();
|
|||
|
|
|||
|
while($enregistre = $requete->fetch())
|
|||
|
{
|
|||
|
$liste[] = $enregistre;
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($liste);
|
|||
|
|
|||
|
//On ferme la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant l'affichage des smiley dans les textes:
|
|||
|
function affiche_smile($source, $urlsite = "./", $liste_smiley = false)
|
|||
|
{
|
|||
|
//Inclusion de la liste (si n<>cessaire
|
|||
|
if(!$liste_smiley)
|
|||
|
include('inc/liste_smile.php');
|
|||
|
|
|||
|
//Traitement de la liste
|
|||
|
foreach($liste_smiley as $afficher)
|
|||
|
{
|
|||
|
//On affiche les smiley
|
|||
|
$source = str_ireplace($afficher[0], ' <img src="'.$urlsite.$afficher[1].'" title="'.$afficher[2].'" /> ', $source);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de protection contre le code source
|
|||
|
function bloquebalise($source, $type="tout")
|
|||
|
{
|
|||
|
//On prot<6F>ge la source
|
|||
|
$source = str_replace('<', '<', $source);
|
|||
|
$source = str_replace('>', '>', $source);
|
|||
|
|
|||
|
//Fonction s<>pciale r<>serv<72>e aux commentaires
|
|||
|
if($type == "commentaire")
|
|||
|
{
|
|||
|
//Anulation de la correction pour <span class='corrige_longueur_mots'></span> par <span></span>
|
|||
|
$source = str_replace("<span class='corrige_longueur_mots'></span>", "<span></span>", $source);
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui d<>finit et inclus le bon fichier de langue
|
|||
|
function detecteinstallelangue()
|
|||
|
{
|
|||
|
/*if(isset($_COOKIE['langue']))
|
|||
|
{
|
|||
|
if(file_exists('lang/'.$_COOKIE['langue'].'.php'))
|
|||
|
{
|
|||
|
//Inclusion du fichier de langue
|
|||
|
include('lang/'.$_COOKIE['langue'].'.php');
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Sinon on inclus la langue fran<61>aise
|
|||
|
include('lang/fr.php');
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//On d<>tecte la langue
|
|||
|
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
|
|||
|
{
|
|||
|
if(preg_match('/fr/', $_SERVER['HTTP_ACCEPT_LANGUAGE']))
|
|||
|
{
|
|||
|
//On d<>finit le cookie pour la France
|
|||
|
setcookie('langue', 'fr', time() + 365*24*3600);
|
|||
|
|
|||
|
//Et on charge la lague francaise
|
|||
|
include('lang/fr.php');
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Langue par d<>faut: Anglais
|
|||
|
setcookie('langue', 'en');
|
|||
|
|
|||
|
//Et on charge la langue anglaise
|
|||
|
include('lang/en.php');
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Langue par d<>faut: Anglais
|
|||
|
setcookie('langue', 'en');
|
|||
|
|
|||
|
//Et on charge la langue anglaise
|
|||
|
include('lang/en.php');
|
|||
|
}
|
|||
|
}*/
|
|||
|
include(websiteRelativePath('inc/lang/fr.php'));
|
|||
|
//Renvoi des textes de la langue
|
|||
|
return $lang;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet de choisir sa langue
|
|||
|
function choisirlangue($langue = 'fr')
|
|||
|
{
|
|||
|
//On v<>rifie que la langue est correcte
|
|||
|
if(str_replace('.', '', $langue) != $langue)
|
|||
|
die("Erreur"); //S<>curit<69>
|
|||
|
|
|||
|
//On d<>finit la langue de l'utilisateur
|
|||
|
setcookie('langue', $langue, time()+60*60*24*30);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet l'<27>chappement des guillemets ' en HTML
|
|||
|
function echap_guillemet_html($source)
|
|||
|
{
|
|||
|
//On <20>chappe les guillemetes
|
|||
|
$source = str_replace("'", "′", $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de bloquage du javascript et du CSS
|
|||
|
function bloque_javascript_css($source)
|
|||
|
{
|
|||
|
//On bloque le javascript
|
|||
|
$source = str_ireplace("<script", "<!--<script", $source);
|
|||
|
$source = str_ireplace("/script>", "/script>-->", $source);
|
|||
|
$source = str_ireplace("/ script>", "/script>-->", $source);
|
|||
|
|
|||
|
//On bloque le CSS
|
|||
|
$source = str_ireplace("<style", "<!--<style", $source);
|
|||
|
$source = str_ireplace("/style>", "/style>-->", $source);
|
|||
|
$source = str_ireplace("/ style>", "/style>-->", $source);
|
|||
|
|
|||
|
//Blockage au sein des balises
|
|||
|
$source = str_ireplace("onClick=", "unknow=", $source);
|
|||
|
$source = str_ireplace("onLoad=", "unknow=", $source);
|
|||
|
$source = str_ireplace("onBlur=", "unknow=", $source);
|
|||
|
$source = str_ireplace("onMouseOver=", "unknow=", $source);
|
|||
|
$source = str_ireplace("onMouseOut=", "unknow2=", $source);
|
|||
|
//$source = str_ireplace("style=", "unknow=", $source);
|
|||
|
|
|||
|
//Adaption pour TinyMCE
|
|||
|
$source = str_ireplace('unknow="this.src', 'onMouseOver="this.src', $source);
|
|||
|
$source = str_ireplace('unknow2="this.src', 'onMouseOut="this.src', $source);
|
|||
|
|
|||
|
//On bloque les balises meta
|
|||
|
$source = str_ireplace("<meta", "<meta", $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de protection de la cr<63>ation de compte
|
|||
|
function trouve_caractere_tableau($tableau_a_verifier, $caractere = '<')
|
|||
|
{
|
|||
|
//On annonce que l'on a pour le moment il n'y a pas de probl<62>me de s<>curit<69>
|
|||
|
$probleme_securite = false;
|
|||
|
|
|||
|
//On analyse les variables
|
|||
|
foreach ($tableau_a_verifier as $tester)
|
|||
|
{
|
|||
|
if(preg_match('/'.$caractere.'/', $tester))
|
|||
|
{
|
|||
|
//On enregistre qu'il y a un probl<62>me de s<>curit<69>s
|
|||
|
$probleme_securite = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $probleme_securite;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet de lister l'ensemble des amis d'une personne
|
|||
|
// $id: identifiant de la personne
|
|||
|
//$bdd: Connexion <20> la base de donn<6E>e (PDO)
|
|||
|
//$actif: indique si l'ami doit <20>tre actif ou non
|
|||
|
function liste_amis($id, $bdd, $actif = 1)
|
|||
|
{
|
|||
|
//On pr<70>pare le tableau final
|
|||
|
$listeamis = array();
|
|||
|
|
|||
|
//Requete de recherche d'amis
|
|||
|
$sql = "SELECT * FROM amis WHERE ID_personne = ".$id." && actif = ".$actif;
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requeteamis = $bdd->query($sql);
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
while($enregistrer = $requeteamis->fetch())
|
|||
|
{
|
|||
|
//On enregistre l'amis
|
|||
|
$listeamis[] = $enregistrer['ID_amis'];
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la base de donn<6E>es
|
|||
|
$requeteamis->closeCursor();
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $listeamis;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'adaptation des textes pour les images
|
|||
|
function adapte_texte_image($source, $pathimage = "./")
|
|||
|
{
|
|||
|
$source = str_replace('endofimgcomunicpostbyuser', '.jpg" />', $source);
|
|||
|
$source = str_replace('imgcomunicpostbyuser', '<img height="200" src="user_data/imgpost/', $source);
|
|||
|
$source = str_replace('endofnameofimg', '</center>', $source);
|
|||
|
$source = str_replace('nameofimg', '<center>', $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de correction des <20>chappements
|
|||
|
function corrige_echapement($source)
|
|||
|
{
|
|||
|
//On corrige les <20>chappements
|
|||
|
$source = str_replace("\'", "'", $source);
|
|||
|
$source = str_replace('\"', '"', $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Private Chat
|
|||
|
//This function should be used only for the private chat
|
|||
|
//Info:
|
|||
|
//Parametres :
|
|||
|
//$id : ID of the connected personn
|
|||
|
//$idother : ID of the other personn
|
|||
|
//$bdd : Connexion PDO to the DB
|
|||
|
//$nbposts (optional, default 10) : Number of posts
|
|||
|
//This function need these functions :
|
|||
|
//bloquebalise : The HTML isn't allowed in the private chat...
|
|||
|
//affiche_smile: but the users can decide to show there emotions!
|
|||
|
//Infos of get_content_private_chat ended
|
|||
|
function get_content_private_chat ($id, $idother, $bdd, $nbposts = 10, $id_last_post = "*", $urlsite = "./")
|
|||
|
{
|
|||
|
//On v<>rifie si il s'agit d'un rafra<72>chissement ou non
|
|||
|
if($id_last_post == "*")
|
|||
|
{
|
|||
|
//First, SQL
|
|||
|
$sql = "SELECT * FROM chatprive WHERE (ID_personne = ? && ID_destination = ?) || (ID_personne = ? && ID_destination = ?) ORDER BY ID DESC LIMIT 0,".$nbposts;
|
|||
|
|
|||
|
//Send request
|
|||
|
$get_content = $bdd->prepare($sql);
|
|||
|
$get_content->execute(array($id, $idother, $idother, $id));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//First, SQL
|
|||
|
$sql = "SELECT * FROM chatprive WHERE ((ID_personne = ? && ID_destination = ?) || (ID_personne = ? && ID_destination = ?)) AND ID > ? ORDER BY ID DESC ";
|
|||
|
|
|||
|
//Send request
|
|||
|
$get_content = $bdd->prepare($sql);
|
|||
|
$get_content->execute(array($id, $idother, $idother, $id, $id_last_post));
|
|||
|
}
|
|||
|
|
|||
|
//Save results in $content_chat
|
|||
|
$content_chat = array();
|
|||
|
while($save = $get_content -> fetch())
|
|||
|
{
|
|||
|
//We stop HTML code
|
|||
|
$save['contenu'] = affiche_smile(bloquebalise(wordwrap(str_replace(')', ') ', $save['contenu']), 30, " ", true)), $urlsite);
|
|||
|
|
|||
|
//We save the entry
|
|||
|
$content_chat[] = $save;
|
|||
|
}
|
|||
|
|
|||
|
//Send result
|
|||
|
return $content_chat;
|
|||
|
|
|||
|
//Close request
|
|||
|
$get_content->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Save a post for the private chat
|
|||
|
function save_private_chat_message($id, $idother, $bdd, $message = "A basic message")
|
|||
|
{
|
|||
|
$query = $bdd->prepare("INSERT INTO chatprive(ID_personne, ID_destination, date_envoi, contenu) VALUES(?, ?, NOW(), ?)");
|
|||
|
$query->execute(array($id, $idother, $message));
|
|||
|
}
|
|||
|
|
|||
|
//List all the personns which have already send chat to the connected personn
|
|||
|
function list_all_person_private_chatted($id, $bdd)
|
|||
|
{
|
|||
|
//SQL -> create request
|
|||
|
$sql = "SELECT * FROM chatprive WHERE (ID_destination = ?)";
|
|||
|
|
|||
|
//SQL -> send request
|
|||
|
$request = $bdd->prepare($sql);
|
|||
|
$request->execute(array($id));
|
|||
|
|
|||
|
//Saving results in $results
|
|||
|
$results = array();
|
|||
|
while($save = $request->fetch())
|
|||
|
{
|
|||
|
//Check if result isn't already saved
|
|||
|
if(!isset($results[$save['ID_personne']]))
|
|||
|
{
|
|||
|
//Save result
|
|||
|
$results[$save['ID_personne']] = "true";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Send results
|
|||
|
return $results;
|
|||
|
|
|||
|
//SQL -> close request
|
|||
|
$request->closeCursor();
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//We send a notification to all the friends of the user
|
|||
|
function sendnotification($id, $message, $bdd, $adresse="", $idamis = "", $type = "", $list_friend = false)
|
|||
|
{
|
|||
|
//On v<>rifie si la liste est d<>j<EFBFBD> fournie
|
|||
|
if(!$list_friend)
|
|||
|
//We search the friend of the personn
|
|||
|
$list_friend = liste_amis($id, $bdd);
|
|||
|
|
|||
|
//We insert in notification the message
|
|||
|
foreach($list_friend as $insert_friend)
|
|||
|
{
|
|||
|
//On v<>rifie d<>j<EFBFBD> que les deux personnes sont amies
|
|||
|
$ok = true;
|
|||
|
if($idamis != "")
|
|||
|
{
|
|||
|
if(!detectesilapersonneestamie($idamis, $insert_friend, $bdd))
|
|||
|
{
|
|||
|
//On arr<72>te l'envoi
|
|||
|
$ok = false;
|
|||
|
}
|
|||
|
|
|||
|
if($idamis == $insert_friend)
|
|||
|
{
|
|||
|
//On autorise l'envoi
|
|||
|
$ok = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if($ok)
|
|||
|
{
|
|||
|
//On v<>rifie que la personne est abonn<6E>e aux notifications de l'utilisateur
|
|||
|
if(personne_abonnee_notification_ami($insert_friend, $id, $bdd))
|
|||
|
{
|
|||
|
//On v<>rifie si une notification similaire existe d<>j<EFBFBD>
|
|||
|
$sql = "SELECT COUNT(*) AS nb_notifications FROM notification WHERE ID_personne = ? AND adresse = ? AND type = ? AND vu = 0";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($insert_friend, $adresse, $type));
|
|||
|
|
|||
|
//R<>cup<75>ration des informations
|
|||
|
if($infos = $requete->fetch())
|
|||
|
{
|
|||
|
if($infos['nb_notifications'] == 0)
|
|||
|
{
|
|||
|
//We INSERT now
|
|||
|
$sql = "INSERT INTO notification (ID_personne, ID_createur, date_envoi, message, adresse, type) VALUES (?, ?, NOW(), ?, ?, ?)";
|
|||
|
|
|||
|
//Send request
|
|||
|
$insert = $bdd->prepare($sql);
|
|||
|
$insert->execute(array($insert_friend, $id, $message, $adresse, $type));
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
echo "<!-- Error -->";
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Similaire mais pour un seul utilisateur
|
|||
|
function sendnotification_one_user($id, $iddestination, $message, $bdd, $adresse="")
|
|||
|
{
|
|||
|
//Pr<50>partion de l'ex<65>cution de la fonction
|
|||
|
$retour = false;
|
|||
|
|
|||
|
//On v<>rifie si une notification similaire existe d<>j<EFBFBD>
|
|||
|
$sql = "SELECT COUNT(*) AS nb_notifications FROM notification WHERE ID_personne = ? AND ID_createur = ? AND message = ? AND adresse = ? AND vu = 0";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($iddestination, $id, $message, $adresse));
|
|||
|
|
|||
|
//R<>cup<75>ration des informations
|
|||
|
if($infos = $requete->fetch())
|
|||
|
{
|
|||
|
if($infos['nb_notifications'] == 0)
|
|||
|
{
|
|||
|
//We INSERT now
|
|||
|
$sql = "INSERT INTO notification (ID_personne, ID_createur, date_envoi, message, adresse) VALUES (?, ?, NOW(), ?, ?)";
|
|||
|
|
|||
|
//Send request
|
|||
|
$insert = $bdd->prepare($sql);
|
|||
|
$insert->execute(array($iddestination, $id, $message, $adresse));
|
|||
|
|
|||
|
//On confirme l'envoi
|
|||
|
$retour = true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//We search the notifications of the actual user
|
|||
|
function searchnotification($id, $bdd, $limit = 10, $lignedepart = 0, $vu="none", $order = "DESC", $update_vu = 0)
|
|||
|
{
|
|||
|
//SQL -> creating request
|
|||
|
if($vu == "none")
|
|||
|
$sql = "SELECT * FROM notification WHERE ID_personne = ? ORDER BY ID ".$order." LIMIT ".$lignedepart.", ".$limit;
|
|||
|
else
|
|||
|
$sql = "SELECT * FROM notification WHERE (ID_personne = ? AND vu = ".$vu.") ORDER BY ID ".$order." LIMIT ".$lignedepart.", ".$limit;
|
|||
|
|
|||
|
//SQL -> sending request
|
|||
|
$request = $bdd->prepare($sql);
|
|||
|
$request->execute(array($id));
|
|||
|
|
|||
|
//Saving results
|
|||
|
$results = array();
|
|||
|
while($save = $request->fetch())
|
|||
|
{
|
|||
|
//Save result
|
|||
|
$results[] = $save;
|
|||
|
|
|||
|
if($update_vu == 1)
|
|||
|
{
|
|||
|
//On met la notification en vu
|
|||
|
$sql = "UPDATE notification SET vu = 1 WHERE ID = ".$save['ID'];
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$update = $bdd->query($sql);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Sending results
|
|||
|
return $results;
|
|||
|
|
|||
|
//SQL -> close request
|
|||
|
$request -> closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Function for send message
|
|||
|
function sendmessage($id_expediteur, $id_destinataire, $sujet, $message, $bdd)
|
|||
|
{
|
|||
|
//On enregistre le message
|
|||
|
$sql = "INSERT INTO messagerie (ID_expediteur, ID_destinataire, objet, message, date_envoi) VALUEs (?, ?, ?, ?, NOW())";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
|
|||
|
if($insertion->execute(array($id_expediteur, $id_destinataire, $sujet, $message)))
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de recherche d'informations sur un sujet
|
|||
|
function info_sujet($id, $bdd)
|
|||
|
{
|
|||
|
//Requete de recherche des informations sur le sujet
|
|||
|
$sql = 'SELECT * FROM forum_sujet WHERE ID = ?';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id));
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$info = $requete->fetch();
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $info;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de recherche d'informations sur les r<>ponses d'un sujet
|
|||
|
function info_reponses($id, $bdd)
|
|||
|
{
|
|||
|
//Requete de recherche des informations sur le sujet
|
|||
|
$sql = 'SELECT * FROM forum_reponse WHERE ID_sujet = ?';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id));
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$info = array();
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
$info[] = $enregistrer;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $info;
|
|||
|
}
|
|||
|
|
|||
|
//D<>fini un message en vu
|
|||
|
function metslemessageenvu($idmessage, $bdd)
|
|||
|
{
|
|||
|
//On d<>fini un message en tant que vu
|
|||
|
$sql = "UPDATE messagerie SET lu = 1 WHERE ID = ".$idmessage;
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$update = $bdd->query($sql);
|
|||
|
}
|
|||
|
|
|||
|
//Suppression d'un message depuis son ID
|
|||
|
function suppmessagefromid($id_personne, $id_message, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de suppression d'un message
|
|||
|
$sql = "DELETE FROM messagerie WHERE ID = ? AND ID_destinataire = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_message, $id_personne));
|
|||
|
}
|
|||
|
|
|||
|
//Enregistrement de l'activit<69> de l'utilisateur
|
|||
|
function update_last_activity($id, $bdd, $time = "undefined")
|
|||
|
{
|
|||
|
//On enregistre time() si n<>cessaire
|
|||
|
if($time == "undefined")
|
|||
|
{
|
|||
|
$time = time();
|
|||
|
}
|
|||
|
|
|||
|
//On met <20> jour la derni<6E>re activit<69> de l'utilisateur
|
|||
|
$sql = "UPDATE utilisateurs SET last_activity = ? WHERE ID = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($time, $id));
|
|||
|
}
|
|||
|
|
|||
|
//Fonction qui permet de retirer la corrections des caract<63>res sp<73>ciaux
|
|||
|
function retire_adapte_caracters_speciaux($source)
|
|||
|
{
|
|||
|
//On retire les adaptations
|
|||
|
$source = str_replace("è", "e", $source);
|
|||
|
$source = str_replace("é", "e", $source);
|
|||
|
$source = str_replace("ê", "e", $source);
|
|||
|
$source = str_replace("ë", "e", $source);
|
|||
|
$source = str_replace("î", "i", $source);
|
|||
|
$source = str_replace("à", "a", $source);
|
|||
|
$source = str_replace('ç', 'c', $source);
|
|||
|
$source = str_replace('ù ', 'u', $source);
|
|||
|
$source = str_replace('ô ', 'o', $source);
|
|||
|
$source = str_replace('â ', 'a', $source);
|
|||
|
$source = str_replace('û ', 'u', $source);
|
|||
|
|
|||
|
//On renvoi le r<>slutat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de correction des erreurs d'accents d<>es aux scripts javascript
|
|||
|
function corrige_accent_javascript($source)
|
|||
|
{
|
|||
|
//On corrige les erreures javascript
|
|||
|
$source = str_replace("é", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("è", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("ê", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD><EFBFBD>", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("ù", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD><EFBFBD>", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("’", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD><EFBFBD>", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD><EFBFBD>", "<EFBFBD>", $source);
|
|||
|
//$source = str_replace("<22><>", "<22>", $source);
|
|||
|
$source = str_replace("€", "<EFBFBD>", $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de retirement de correction des erreurs d'accents d<>es aux scripts javascript
|
|||
|
function decorrige_accent_javascript($source)
|
|||
|
{
|
|||
|
//On retire les corrections javascript
|
|||
|
$source = str_replace("<EFBFBD>", "é", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "è", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "ê", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "<EFBFBD><EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "<EFBFBD>", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "ù", $source);
|
|||
|
//$source = str_replace("<22>", "<22><>", $source);
|
|||
|
//$source = str_replace("<22>", "<22><>", $source);
|
|||
|
//$source = str_replace("<22>", "<22><>", $source);
|
|||
|
$source = str_replace("<EFBFBD>", "€", $source);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d<>terminant si une notification existe
|
|||
|
function notification_exists($id_createur, $id_destination, $message, $adresse, $bdd)
|
|||
|
{
|
|||
|
//Pr<50>partion de l'ex<65>cution de la fonction
|
|||
|
$retour = false;
|
|||
|
|
|||
|
//On v<>rifie si une notification similaire existe d<>j<EFBFBD>
|
|||
|
$sql = "SELECT COUNT(*) AS nb_notifications FROM notification WHERE ID_personne = ? AND ID_createur = ? AND message = ? AND adresse = ? AND vu = 0";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_destination, $id_createur, $message, $adresse));
|
|||
|
|
|||
|
//R<>cup<75>ration des informations
|
|||
|
if($infos = $requete->fetch())
|
|||
|
{
|
|||
|
if($infos['nb_notifications'] == 0)
|
|||
|
//Il n'y en a pas
|
|||
|
$retour = false;
|
|||
|
else
|
|||
|
//Il y en a
|
|||
|
$retour = true;
|
|||
|
}
|
|||
|
else
|
|||
|
//On consid<69>re qu'il n'y en a pas
|
|||
|
$retour = false;
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction mettant en 'vu' le chat d'une personne
|
|||
|
function mettre_en_vu_private_chat($id, $id_emetteur, $bdd)
|
|||
|
{
|
|||
|
//Mise <20> jour de la base de donn<6E>es
|
|||
|
$sql = "UPDATE chatprive SET vu = 1 WHERE ID_destination = ? AND ID_personne = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id, $id_emetteur));
|
|||
|
|
|||
|
//On supprime les notifications relatives au chat priv<69> pour cette personne
|
|||
|
$sql = "DELETE FROM notification WHERE ID_personne = ? AND ID_createur = ? AND message = ?";
|
|||
|
$suppression = $bdd->prepare($sql);
|
|||
|
$suppression->execute(array($_SESSION['ID'], $id_emetteur, "vous a envoyé un message dans le chat privé."));
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si un post de chat priv<69> d'une personne n'a pas <20>t<EFBFBD> vu
|
|||
|
function verifier_si_post_chat_prive_non_vu($id, $id_emetteur, $bdd)
|
|||
|
{
|
|||
|
//First, SQL
|
|||
|
$sql = "SELECT * FROM chatprive WHERE ID_personne = ? && ID_destination = ? && vu = 0 LIMIT 0, 1";
|
|||
|
|
|||
|
//Send request
|
|||
|
$get_content = $bdd->prepare($sql);
|
|||
|
$get_content->execute(array($id_emetteur, $id));
|
|||
|
|
|||
|
if($afficher = $get_content->fetch())
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$get_content->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de v<>rification de l'existence de nouveaux messages pour l'utilisateur
|
|||
|
function verifier_nouveaux_messages_utilisateur($id, $bdd)
|
|||
|
{
|
|||
|
//First, SQL
|
|||
|
$sql = "SELECT * FROM messagerie WHERE ID_destinataire = ? && lu = 0 LIMIT 0, 1";
|
|||
|
|
|||
|
//Send request
|
|||
|
$check_content = $bdd->prepare($sql);
|
|||
|
$check_content->execute(array($id));
|
|||
|
|
|||
|
if($afficher = $check_content->fetch())
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$check_content->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de r<>cup<75>rer un extrait de source ayant un commencement et une fin
|
|||
|
function getsourceprecise($source, $debut, $fin = '\n')
|
|||
|
{
|
|||
|
preg_match_all('#'.$debut.'(.*?)'.$fin.'#is', $source, $resultat, PREG_PATTERN_ORDER);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $resultat[0];
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage de lien
|
|||
|
function afficher_lien($source)
|
|||
|
{
|
|||
|
//On pr<70>pare l'ajout des liens
|
|||
|
$source = " ".$source." ";
|
|||
|
$source = str_replace("<", " <", $source);
|
|||
|
$listetype = array("http://", "ftp://", "https://");
|
|||
|
|
|||
|
foreach($listetype as $debut)
|
|||
|
{
|
|||
|
//On r<>cup<75>re la liste des liens
|
|||
|
$liste = getsourceprecise($source, " ".$debut, " ");
|
|||
|
|
|||
|
//On modifie les liens
|
|||
|
foreach($liste as $modifier)
|
|||
|
{
|
|||
|
//On modifie les liens avec un str_replace
|
|||
|
$source = str_replace($modifier, "<a href='".$modifier."' title='Ouvrir la page' target='_blank'>".$modifier."</a>", $source);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage de la source n<>cessaire pour ajouter des smiles dans les commentaires
|
|||
|
function source_ajout_smiley($id_texte)
|
|||
|
{
|
|||
|
echo "<img src='".path_img_asset('smiley/smile_gris.gif')."' class='bouton_ajout_smiley' onClick='affiche_liste_smile(\"addcommentaire".$id_texte."\");' />";
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>finir si une personne est connect<63>e ou non
|
|||
|
function determine_si_personne_connecte($id, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations de la personne
|
|||
|
$informations = cherchenomprenom($id, $bdd);
|
|||
|
|
|||
|
//R<>cup<75>ration du temps actuel
|
|||
|
$time = time();
|
|||
|
$time = $time-35;
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return ($time > $informations['last_activity'] ? false : true);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de correction de la longueur mots des commentaires
|
|||
|
function corrige_longueur_mots_commentaires($source)
|
|||
|
{
|
|||
|
//S<>paration de tous les mots
|
|||
|
//$liste_mots = getsourceprecise($source, " ", " "); //Non fiable
|
|||
|
|
|||
|
//Insertion de retours <20> la ligne automatiques
|
|||
|
$source = wordwrap($source, 100, " ", true);
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de r<>cup<75>ration de la liste de toute les pages
|
|||
|
function get_liste_pages($id_personne, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM pages WHERE ID_personne = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_personne));
|
|||
|
|
|||
|
//Pr<50>paration de l'enregistrement
|
|||
|
$enregistrement = array();
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
//Enregistrement de la page
|
|||
|
$enregistrement[] = $enregistrer;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $enregistrement;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier la validit<69> d'un post ou d'un texte
|
|||
|
function verifie_validite_ajout($source, $exception = false)
|
|||
|
{
|
|||
|
//On enl<6E>ve les balises de paragraphe
|
|||
|
$source = str_ireplace('<p>', "", $source);
|
|||
|
$source = str_ireplace('</p>', "", $source);
|
|||
|
|
|||
|
//On enl<6E>ve les balises de mise en page
|
|||
|
$source = str_ireplace('<i>', "", $source);
|
|||
|
$source = str_ireplace('</i>', "", $source);
|
|||
|
$source = str_ireplace('<strong>', "", $source);
|
|||
|
$source = str_ireplace('</strong>', "", $source);
|
|||
|
$source = str_ireplace('<b>', "", $source);
|
|||
|
$source = str_ireplace('</b>', "", $source);
|
|||
|
$source = str_ireplace('<s>', "", $source);
|
|||
|
$source = str_ireplace('</s>', "", $source);
|
|||
|
$source = str_ireplace('</a>', "", $source);
|
|||
|
|
|||
|
//On compte le nombre de caract<63>res diff<66>rents
|
|||
|
$tableau_caracteres = count_chars($source, 3);
|
|||
|
|
|||
|
//V<>rification du nombre
|
|||
|
if(strlen($tableau_caracteres) > 2)
|
|||
|
{
|
|||
|
//Le post est valide
|
|||
|
$valide = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Le post est invalide
|
|||
|
$valide = false;
|
|||
|
}
|
|||
|
|
|||
|
//Il y a deux exceptions (si autoris<69>es)
|
|||
|
if($exception)
|
|||
|
{
|
|||
|
$valide = ($source == ":)" || $source == ":(" ? true : $valide);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//Retour du r<>sultat
|
|||
|
return $valide;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction affichant le formulaire permettant choisir quel est le niveau de visibilit<69> du contenu
|
|||
|
function choisir_niveau_visibilite($niveau = 1)
|
|||
|
{
|
|||
|
//Il y a trois niveaux :
|
|||
|
// 1 - Tout le monde (disponible uniquement si la page est ouverte)
|
|||
|
// 2 - Uniquement les amis
|
|||
|
// 3 - Uniquement la personne ayant post<73> le texte (et si il s'agit d'une page amie, le propri<72>taire de la page <20>galement)
|
|||
|
|
|||
|
?><div class='choix_niveau_visibilite'>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<label>
|
|||
|
<input type='radio' name='niveau_visibilite' value='3' />
|
|||
|
<?php echo code_inc_img(path_img_asset('user.png')); ?>
|
|||
|
<span class="label">Moi</span>
|
|||
|
</label>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<label>
|
|||
|
<input type='radio' name='niveau_visibilite' value='2' checked />
|
|||
|
<?php echo code_inc_img(path_img_asset('users_3.png')); ?>
|
|||
|
<span class="label">Mes amis</span>
|
|||
|
</label>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<label>
|
|||
|
<input type='radio' name='niveau_visibilite' value='1' />
|
|||
|
<?php echo code_inc_img(path_img_asset('users_5.png')); ?>
|
|||
|
<span class="label">Tout le monde</span>
|
|||
|
</label>
|
|||
|
</li>
|
|||
|
<!--<li><label><input type='radio' name='niveau_visibilite' value='3' onchange="affiche_formulaire_groupes(this);" /><img src='img/small/cog.png' /> <span class="label">Personnalisé</span> </label></li>-->
|
|||
|
</ul>
|
|||
|
</div><?php
|
|||
|
}
|
|||
|
|
|||
|
//Fonction affichant le menu permettant de changer le niveau de visibilit<69>
|
|||
|
function affiche_menu_change_niveau_visibilite($niveau_actuel, $id, $peut_modifier_niveau = false)
|
|||
|
{
|
|||
|
//On <20>tablit l'ID du menu de changement du niveau de visibilit<69>
|
|||
|
$id_menu_changement_niveau_visibilite = "change_niveau_visibilite_".$id;
|
|||
|
|
|||
|
//On commence par afficher (syst<73>matiquement) le niveau actuel
|
|||
|
echo "<img id='".$id_menu_changement_niveau_visibilite."_img'";
|
|||
|
if($niveau_actuel == "1")
|
|||
|
echo " src='".path_img_asset('users_5.png')."' title='Visible par tous le monde' />";
|
|||
|
elseif($niveau_actuel == "2")
|
|||
|
echo " src='".path_img_asset('users_3.png')."' title='Visible par moi et mes amis' />";
|
|||
|
elseif($niveau_actuel == "3")
|
|||
|
echo " src='".path_img_asset('user.png')."' title='Visible par moi uniquement' />";
|
|||
|
else
|
|||
|
echo " src='".path_img_asset('cog.png')."' title='Personnalisé' />";
|
|||
|
|
|||
|
//Si l'utilisateur est autoris<69>, on lui affiche le menu de modification
|
|||
|
if($peut_modifier_niveau)
|
|||
|
{
|
|||
|
//On met une fl<66>che pour proposer <20> l'utilisateur de changer le niveau de visibilit<69>
|
|||
|
echo " <img src='".path_img_asset('bullet_arrow_right.png')."' title='Changer le niveau de visibilité' onClick='show_hide_id(\"".$id_menu_changement_niveau_visibilite."\", \"visible\");' />";
|
|||
|
|
|||
|
//On envoi le code source de changement du niveau
|
|||
|
echo "<span id='".$id_menu_changement_niveau_visibilite."' class='change_niveau_visibilite'>";
|
|||
|
echo "<img src='".path_img_asset('user.png')."' title='Visible par moi uniquement' onClick='change_niveau_visibilite_post(".$id." ,3)' /> ";
|
|||
|
echo "<img src='".path_img_asset('users_3.png')."' title='Visible par moi et mes amis' onClick='change_niveau_visibilite_post(".$id." ,2)' /> ";
|
|||
|
echo "<img src='".path_img_asset('users_5.png')."' title='Visible par tous le monde' onClick='change_niveau_visibilite_post(".$id." ,1)' /> ";
|
|||
|
echo "<img src='".path_img_asset('small/cross.png')."' title='Fermer ce menu' onClick='this.parentNode.style.visibility=\"hidden\"' /> ";
|
|||
|
echo "</span>";
|
|||
|
|
|||
|
//On masque maintenant le menu de changement de niveau
|
|||
|
echo "<style type='text/css'>#".$id_menu_changement_niveau_visibilite." { visibility: hidden; }</style>";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de redimensionner et d'enregistrer une nouvelle image
|
|||
|
function redimensionnne_enregistre_image($x1, $x2, $y1, $y2, $adresse_source_image, $adresse_destination_image, $width, $height, $resize = "yes", $resize_width = 128, $resize_height = 128)
|
|||
|
{
|
|||
|
//S<>curit<69>
|
|||
|
$x1 = $x1*1;
|
|||
|
$x2 = $x2*1;
|
|||
|
$y1 = $y1*1;
|
|||
|
$y2 = $y2*1;
|
|||
|
|
|||
|
//R<>cup<75>ration des inofrmations initiales sur l'image
|
|||
|
$info_image = getimagesize($adresse_source_image);
|
|||
|
|
|||
|
if($info_image['mime']=='image/jpeg')
|
|||
|
{
|
|||
|
// Cr<43>ation des instances d'image (jpeg)
|
|||
|
$src = imagecreatefromjpeg($adresse_source_image);
|
|||
|
}
|
|||
|
elseif($info_image['mime']=='image/png')
|
|||
|
{
|
|||
|
// Cr<43>ation des instances d'image (png)
|
|||
|
$src = imagecreatefrompng($adresse_source_image);
|
|||
|
}
|
|||
|
elseif($info_image['mime']=='image/gif')
|
|||
|
{
|
|||
|
// Cr<43>ation des instances d'image (gif)
|
|||
|
$src = imagecreatefromgif($adresse_source_image);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
die("<p>Type d'image incompatible avec ce service.</p>");
|
|||
|
}
|
|||
|
|
|||
|
//Cr<43>ation de l'image de destination
|
|||
|
$dest = imagecreatetruecolor($width, $height);
|
|||
|
|
|||
|
// Copie (varie en fonction de la n<>cessit<69> de redimensionner ou pas l'image)
|
|||
|
if($resize == "yes")
|
|||
|
imagecopyresized($dest, $src, 0, 0, $x1, $y1, $resize_width, $resize_height, $x2-$x1, $y2-$y1); //Copie avec redimensionnement
|
|||
|
else
|
|||
|
imagecopy($dest, $src, 0, 0, $x1, $y1, $x2-$x1, $y2-$y1); //Copie avec redimensionnement
|
|||
|
|
|||
|
//Suppression de l'ancienne image
|
|||
|
if(file_exists($adresse_source_image))
|
|||
|
{
|
|||
|
//Suppression de l'image
|
|||
|
unlink($adresse_source_image);
|
|||
|
}
|
|||
|
|
|||
|
// Affichage et lib<69>ration de la m<>moire
|
|||
|
//header('Content-Type: image/gif');
|
|||
|
imagejpeg($dest, $adresse_destination_image);
|
|||
|
|
|||
|
imagedestroy($dest);
|
|||
|
imagedestroy($src);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant d'<27>tablir si un r<>pertoire d<>signe un utilisateur de Comunic
|
|||
|
function folder_is_an_user($repertoire, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE sous_repertoire = ?";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($repertoire));
|
|||
|
|
|||
|
//Analyse
|
|||
|
if($analyser = $requete->fetch())
|
|||
|
return $analyser; //Le r<>sultat est positif
|
|||
|
else
|
|||
|
return false; //Le r<>sultat est n<>gatif
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si un r<>pertoire est libre, valide et autoris<69>
|
|||
|
function verifie_validite_sous_repertoire($nom, $bdd)
|
|||
|
{
|
|||
|
$valide = true;
|
|||
|
|
|||
|
//Liste des caract<63>res incorrects
|
|||
|
$list_invalid_chars = array(
|
|||
|
"/",
|
|||
|
"&",
|
|||
|
"?",
|
|||
|
"^",
|
|||
|
"\\",
|
|||
|
"$",
|
|||
|
"<EFBFBD>",
|
|||
|
"*",
|
|||
|
"]",
|
|||
|
"'",
|
|||
|
'"',
|
|||
|
"{",
|
|||
|
"~",
|
|||
|
".php",
|
|||
|
".htm",
|
|||
|
".jpg",
|
|||
|
".gif",
|
|||
|
".png",
|
|||
|
".exe",
|
|||
|
".gif",
|
|||
|
".tar",
|
|||
|
".txt",
|
|||
|
".bat",
|
|||
|
"../",
|
|||
|
".cgi",
|
|||
|
".py",
|
|||
|
".ht"
|
|||
|
);
|
|||
|
|
|||
|
//Liste noire
|
|||
|
$black_list = array(
|
|||
|
"admin",
|
|||
|
"help",
|
|||
|
"img",
|
|||
|
"css",
|
|||
|
"js",
|
|||
|
"audio",
|
|||
|
"index.php",
|
|||
|
"action.php",
|
|||
|
"lang",
|
|||
|
"winpe",
|
|||
|
"upload",
|
|||
|
"doc",
|
|||
|
"fonts",
|
|||
|
"comunic",
|
|||
|
"communiquons",
|
|||
|
"service.pierre"
|
|||
|
);
|
|||
|
|
|||
|
//On commence par v<>rifier qu'il ne poss<73>de pas de caract<63>res comprommettants et qu'il n'est pas vide
|
|||
|
$valide = ($nom == "" ? false : $valide);
|
|||
|
foreach($list_invalid_chars as $verifier)
|
|||
|
$valide = (str_replace($verifier, "", $nom) != $nom ? false : $valide);
|
|||
|
|
|||
|
//On v<>rifie maintenant si il n'est pas sur la liste noire
|
|||
|
foreach($black_list as $verifier)
|
|||
|
$valide = ($nom == $verifier ? false : $valide);
|
|||
|
|
|||
|
//On v<>rifie si il est disponible
|
|||
|
$valide = (folder_is_an_user($nom, $bdd) ? false : $valide);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $valide;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Fonctions de vid<69>o
|
|||
|
//Fonction permettant de lister l'ensemble des vid<69>os de l'utilisateur
|
|||
|
function liste_videos_user($id, $bdd)
|
|||
|
{
|
|||
|
$sql = "SELECT * FROM galerie_video WHERE ID_user = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id));
|
|||
|
|
|||
|
//Enregistrement des r<>sulats
|
|||
|
$liste = array();
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
$liste[] = $enregistrer;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $liste;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage de vid<69>o (ancienne version) ! La nouvelle version n'<27>tant pas fonctionelle, on utilise celle-l<> <20> la place !
|
|||
|
function affiche_video($liste_url, $preload="metadata", $width="640", $height="264", $image_par_defaut="none", $controls = "controls", $autoload_videojs = true, $id_video = false)
|
|||
|
{
|
|||
|
?><video id="<?php echo (!$id_video ? sha1($width.$height.$liste_url[0][0]) : $id_video); ?>" class="video-js vjs-default-skin" <?php echo $controls; ?> preload="<?php echo $preload; ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" <?php
|
|||
|
if($image_par_defaut != "none") echo ' poster="'.$image_par_defaut.'"'; //Image par d<>faut
|
|||
|
if($autoload_videojs) echo ' data-setup="{}"'; //Chargement de VideoJS automatique
|
|||
|
echo ' >'; //Fermeture de la balise
|
|||
|
|
|||
|
//Listage des URL de source
|
|||
|
foreach($liste_url as $afficher)
|
|||
|
{
|
|||
|
echo "<source src='".webUserDataFolder($afficher[0])."' type='".$afficher[1]."' />";
|
|||
|
}
|
|||
|
?>
|
|||
|
<p class="vjs-no-js">Afin de pouvoir visionner cette vidéo, veuillez activer Javasript ou mettre votre navigateur à jour.</a></p>
|
|||
|
</video><?php
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de conversion du nombre d'octets vers le nombre de MO.
|
|||
|
function convertis_octets_vers_mo($valeur)
|
|||
|
{
|
|||
|
//Conversion de la valeur
|
|||
|
$valeur = $valeur/1024; //Convertion en KO
|
|||
|
$valeur = $valeur/1024; //Convertion en MO
|
|||
|
$valeur = round($valeur, 2); //Arrondis de la valeur <20> deux chiffres apr<70>s la virgule
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $valeur;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction renvoyant l'ID de la vid<69>o la plus r<>cente de l'utilisateur
|
|||
|
function id_video_plus_recente($id, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche de la vid<69>o la plus r<>cente
|
|||
|
$sql = "SELECT * FROM galerie_video WHERE ID_user = ? ORDER BY ID DESC LIMIT 1";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id));
|
|||
|
|
|||
|
//V<>rification et envoi du r<>sultat
|
|||
|
if($afficher = $requete->fetch())
|
|||
|
{
|
|||
|
//Fermeture du curseur
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $afficher['ID'];
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture du curseur
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Message d'erreur
|
|||
|
die("Il n'y a pas de vidéo disponible pour cet utilisateur. <a href='index.php'>Retour</a>");
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier l'existence d'une vid<69>o
|
|||
|
function isset_video($id_video, $id_user, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche de la vid<69>o
|
|||
|
$sql = "SELECT * FROM galerie_video WHERE ID = ? && ID_user = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_video*1, $id_user*1)); //Inclusion de s<>curit<69>
|
|||
|
|
|||
|
//V<>rification et envoi du r<>sultat
|
|||
|
if($afficher = $requete->fetch())
|
|||
|
{
|
|||
|
//Fermeture du curseur
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture du curseur
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Retour n<>gatif
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'ajout de vid<69>o
|
|||
|
function add_movie($idpersonne, $texte, $idvideo, $bdd, $niveau_visibilite = 2, $amis = 0)
|
|||
|
{
|
|||
|
$sql = 'INSERT INTO texte (ID_personne, date_envoi, idvideo, type, ID_amis, texte, niveau_visibilite) VALUES (?, NOW(), ?, ?, ?, ?, ?) ';
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$insertion = $bdd->prepare($sql);
|
|||
|
$insertion->execute(array($idpersonne, $idvideo, "video", $amis, corrige_echapement($texte), $niveau_visibilite));
|
|||
|
|
|||
|
//Et la notification (uniquement si n<>cessaire => Si le post n'a pas un niveau <20>gal <20> 3)
|
|||
|
if(!visibilite_privee($niveau_visibilite))
|
|||
|
{
|
|||
|
if($amis == 0) //Envoi de la notification
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté une vidéo personnelle sur sa page.", $bdd, "page:".$_SESSION['ID'], "", "video");
|
|||
|
else //Si c'est un ami
|
|||
|
{
|
|||
|
$infopersonne = cherchenomprenom($idpersonne, $bdd);
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté une vidéo personnelle sur la page de ".$infopersonne['prenom'].' '.$infopersonne['nom'].".", $bdd, "page:".$infopersonne['ID'], $infopersonne['ID'], "video");
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if($amis == 0) //Envoi de la notification
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté une vidéo personnelle sur sa page.", $bdd, "page:".$_SESSION['ID'], "", "video", list_personnes_groupes($niveau_visibilite, $bdd));
|
|||
|
else //Si c'est un ami
|
|||
|
{
|
|||
|
$infopersonne = cherchenomprenom($idpersonne, $bdd);
|
|||
|
sendnotification($_SESSION['ID'], "a ajouté une vidéo personnelle sur la page de ".$infopersonne['prenom'].' '.$infopersonne['nom'].".", $bdd, "page:".$infopersonne['ID'], $infopersonne['ID'], "video", list_personnes_groupes($niveau_visibilite, $bdd));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de r<>cup<75>ration des informations d'une vid<69>o
|
|||
|
function get_info_video($id, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM galerie_video WHERE ID = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id*1)); //S<>curit<69> impl<70>ment<6E>e
|
|||
|
|
|||
|
//R<>cup<75>ration du r<>sultat
|
|||
|
$retour = $requete->fetch();
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de lister l'ensemble des posts relatifs <20> une vid<69>o
|
|||
|
function list_ensemble_posts_relatif_a_video($id, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM texte WHERE idvideo = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id));
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$liste = array();
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
$liste[] = $enregistrer;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $liste;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si un compte existe
|
|||
|
function isset_account($id, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM utilisateurs WHERE ID = ?";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id*1)); //S<>curit<69> incorpor<6F>e
|
|||
|
|
|||
|
//V<>rification
|
|||
|
if($verifier = $requete->fetch())
|
|||
|
$retour = true;
|
|||
|
else
|
|||
|
$retour = false;
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de r<>cup<75>rer la liste des types de contact
|
|||
|
function get_list_type_contact($bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM sujet_contact";
|
|||
|
$requete = $bdd->query($sql);
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$liste = array();
|
|||
|
while($enregistrer_type_contact = $requete->fetch())
|
|||
|
{
|
|||
|
$liste[] = $enregistrer_type_contact;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $liste;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de cryptage de mot de passe selon la strat<61>gie de mot de passe utilisateur de Comunic
|
|||
|
function crypt_password($password)
|
|||
|
{
|
|||
|
//Cryptage du mot de passe et renvoi du r<>sultat
|
|||
|
$password = sha1($password);
|
|||
|
return crypt($password, $password);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant d'ajouter l'URL du site sur un block de texte
|
|||
|
function add_url_site($source, $urlsite)
|
|||
|
{
|
|||
|
//Conversion et renvoi du r<>sultat
|
|||
|
return str_replace("%URL_SITE%", $urlsite, $source);
|
|||
|
}
|
|||
|
|
|||
|
//Transforme une date issue d'un datepicker en date normalis<69>e pour la base de donn<6E>es
|
|||
|
function normalise_datepicker($date)
|
|||
|
{
|
|||
|
//Transformation de la date en tableau
|
|||
|
$array_date = explode(".", $date);
|
|||
|
|
|||
|
//V<>rification de s<>curit<69>
|
|||
|
if(count($array_date) != 3)
|
|||
|
die("Date incorrecte!");
|
|||
|
|
|||
|
return $array_date[2]."-".$array_date[1]."-".$array_date[0]." 00:00:00";
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>terminer si une personne est abonn<6E>e aux notifications d'une autre
|
|||
|
function personne_abonnee_notification_ami($ami, $personne_connectee, $bdd)
|
|||
|
{
|
|||
|
//On r<>cup<75>re les informations sur la table ami
|
|||
|
$sql = "SELECT * FROM amis WHERE (ID_personne = ?) && (ID_amis = ?) && (actif = 1)";
|
|||
|
$requeteamis = $bdd->prepare($sql);
|
|||
|
$requeteamis->execute(array($ami, $personne_connectee));
|
|||
|
|
|||
|
//On renvoi le r<>sultat suivant si la personne est amie ou non
|
|||
|
if(!$info_ami = $requeteamis->fetch())
|
|||
|
{
|
|||
|
//Fermeture de la requete
|
|||
|
$requeteamis->closeCursor();
|
|||
|
|
|||
|
//La personne ne peut pas <20>tre abonn<6E>e: elle n'est pas amie
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requete
|
|||
|
$requeteamis->closeCursor();
|
|||
|
|
|||
|
//On d<>finit maintenant si la personne est amie ou pas
|
|||
|
return ($info_ami['abonnement'] == 0 ? false : true);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'enregistrement d'une image encod<6F>e en base64 vers un fichier
|
|||
|
function base64_to_jpeg($base64_string, $output_file) {
|
|||
|
$ifp = fopen($output_file, "wb");
|
|||
|
|
|||
|
$data = explode(',', $base64_string);
|
|||
|
|
|||
|
fwrite($ifp, base64_decode($data[1]));
|
|||
|
fclose($ifp);
|
|||
|
|
|||
|
return $output_file;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de nettoyage des anciennes notifications
|
|||
|
function nettoie_anciennes_notifications($id, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations sur l'utilisateur
|
|||
|
$info_user = cherchenomprenom($id, $bdd);
|
|||
|
|
|||
|
//On v<>rifie que le nettoyage automatique des anciennes notifications est activ<69>
|
|||
|
if($info_user['nettoyage_automatique_notifications'] == 1)
|
|||
|
{
|
|||
|
//On cr<63>e la date avant laquelle les notifications seront supprim<69>es
|
|||
|
$array_date = getdate();
|
|||
|
|
|||
|
//On r<>cup<75>re la date en seconde en dessous de laquelle les notifications seront supprim<69>es
|
|||
|
$time = strtotime("-".$info_user['mois_nettoyage_automatique_notifications']." month -".$info_user['jour_nettoyage_automatique_notifications']." days -".$info_user['heure_nettoyage_automatique_notifications']." hours");
|
|||
|
|
|||
|
//On convertit la date en format normalis<69>
|
|||
|
$date = date("Y-m-d H:i:s", $time);
|
|||
|
|
|||
|
//On supprime les notifications ant<6E>rieurs <20> cette date MAINTENANT
|
|||
|
$sql = "DELETE FROM notification WHERE date_envoi <= ? AND ID_personne = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($date, $id));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction retournant le pr<70>nom suivi du nom d'un utilisateur
|
|||
|
function return_nom_prenom_user($id, $bdd)
|
|||
|
{
|
|||
|
//On recherche le pr<70>nom et le nom de l'utilisateur
|
|||
|
$info_user = cherchenomprenom($id, $bdd);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $info_user['prenom']." ".$info_user['nom'];
|
|||
|
}
|
|||
|
|
|||
|
//Fonction optimisant la fonction return_nom_prenom_user en <20>vitant de faire des requ<71>tes inutiles
|
|||
|
function optimise_search_info_users($id, $bdd, $liste = array())
|
|||
|
{
|
|||
|
if(!isset($liste[$id]['table_utilisateurs']) || !isset($liste[$id]['avatar_32_32']))
|
|||
|
{
|
|||
|
$liste[$id]['table_utilisateurs'] = cherchenomprenom($id, $bdd);
|
|||
|
$liste[$id]['avatar_32_32'] = avatar($id, "./", 32, 32);
|
|||
|
}
|
|||
|
|
|||
|
//Renvoi de la liste
|
|||
|
return $liste;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage de la vid<69>o d'un texte
|
|||
|
function affiche_video_texte($id, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations de la vid<69>o
|
|||
|
$info_video = get_info_video($id, $bdd);
|
|||
|
|
|||
|
//Pr<50>paration de l'affichage des vid<69>os
|
|||
|
echo "<div class='video_contener'>";
|
|||
|
|
|||
|
//Affichage de la vid<69>o
|
|||
|
affiche_video(array(array($info_video['URL'], $info_video['file_type'])));
|
|||
|
|
|||
|
//Fermeture de l'affichage de la vid<69>o
|
|||
|
echo "</div>";
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//Fonction d'affichage de l'image d'un texte
|
|||
|
function affiche_image_texte($info, $afficher_infos = false)
|
|||
|
{
|
|||
|
//On v<>rifie qu'il s'agit d'une image
|
|||
|
if($info["type"] == "image")
|
|||
|
{
|
|||
|
//Affichage de l'image
|
|||
|
echo '<a class="fancybox" rel="group" href="';
|
|||
|
echo webUserDataFolder($info['path']);
|
|||
|
echo '"><img height="200" src="';
|
|||
|
echo webUserDataFolder($info['path']);
|
|||
|
echo '" alt="" /></a> <br />';
|
|||
|
|
|||
|
//Si n<>cessaire on affiche les donn<6E>es techniques de l'image
|
|||
|
if($afficher_infos)
|
|||
|
{
|
|||
|
echo "Taille de l'image: ".convertis_octets_vers_mo($info['size'])." Mo;";
|
|||
|
echo " Type d'image: ".$info['file_type'].";";
|
|||
|
echo " Chemin d'accès: <a href='".webUserDataFolder($info['path'])."'>".webUserDataFolder($info['path'])."</a><br />";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de suppression d'une vid<69>o
|
|||
|
function delete_movie($idvideo, $iduser, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations
|
|||
|
$sql = "SELECT * FROM galerie_video WHERE ID = ? AND ID_user = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($idvideo, $iduser));
|
|||
|
|
|||
|
if(!$analyser = $requete->fetch())
|
|||
|
die("Vidéo non trouvé.");
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Suppression des posts relatifs <20> la video
|
|||
|
$list_posts_relatif = list_ensemble_posts_relatif_a_video($_GET['delete'], $bdd); //R<>cup<75>ration de la liste
|
|||
|
foreach($list_posts_relatif as $enregistrer)
|
|||
|
{
|
|||
|
//Suppression du post
|
|||
|
deletetexte($enregistrer['ID'], $enregistrer['texte'], $bdd);
|
|||
|
}
|
|||
|
|
|||
|
//Suppression du fichier
|
|||
|
unlink(relativeUserDataFolder($analyser['URL']));
|
|||
|
|
|||
|
//Suppression de l'entr<74>e dans la base de donn<6E>es
|
|||
|
$sql = "DELETE FROM galerie_video WHERE ID = ? AND ID_user = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requete
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($_GET['delete'], $_SESSION['ID']));
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>finir si une personne est autoris<69>e <20> visualiser une page ou pas et avec quel niveau de visibilit<69>
|
|||
|
function is_allowed_to_view_page($idpage, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations sur la page
|
|||
|
$info_page = cherchenomprenom($idpage, $bdd);
|
|||
|
|
|||
|
//On v<>rifie si la personne n'est pas connect<63>e
|
|||
|
if(!isset($_SESSION['ID']))
|
|||
|
{
|
|||
|
if($info_page['pageouverte'] == 0)
|
|||
|
return false; //Personne non autoris<69>e
|
|||
|
else
|
|||
|
return 1; //Personne autoris<69>e <20> voire les posts publiques uniquements
|
|||
|
}
|
|||
|
|
|||
|
//La personne est connect<63>e
|
|||
|
//On v<>rifie si c'est la page de la persone
|
|||
|
if($_SESSION['ID'] == $idpage)
|
|||
|
return 3; //La personne peut voire tout les posts
|
|||
|
|
|||
|
//On v<>rifie si les persones sont amies
|
|||
|
if(!detectesilapersonneestamie($_SESSION['ID'], $idpage, $bdd))
|
|||
|
{
|
|||
|
//On v<>rifie si la page est publique
|
|||
|
if($info_page['public'] == 1)
|
|||
|
return 1; //La personne est autoris<69>e <20> visualiser les posts publics
|
|||
|
else
|
|||
|
return false; //La personne n'est pas autoris<69>e <20> visualiser les posts publiques
|
|||
|
}
|
|||
|
|
|||
|
//La personne est autoris<69>e <20> visualiser les posts de niveau 2 (avec les amis)
|
|||
|
return 2;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction renvoyant le code source pour afficher une vid<69>o YouTube
|
|||
|
function code_video_youtube($adresse)
|
|||
|
{
|
|||
|
//Pr<50>paration de la source
|
|||
|
$source = "";
|
|||
|
|
|||
|
//G<>n<EFBFBD>ration de la source
|
|||
|
$source .= '<iframe width="420" height="315" src="https:/';
|
|||
|
$source .= '/www.youtube.com/embed/';
|
|||
|
$source .= $adresse;
|
|||
|
$source .= '?rel=0" frameborder="0" allowfullscreen></iframe> <br />';
|
|||
|
|
|||
|
//Renvoi du code source
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction convertissant une date type "NOW()" en timestamp
|
|||
|
//Exemple de date : 2013-11-16 14:30:00
|
|||
|
function to_timestamp($source)
|
|||
|
{
|
|||
|
//Cr<43>ation d'un premier tableau
|
|||
|
$array_1 = explode(" ", $source);
|
|||
|
if(count($array_1) != 2) return $source; //Rien <20> faire
|
|||
|
|
|||
|
//Cr<43>ation du second tableau
|
|||
|
$array_2 = explode("-", $array_1[0]);
|
|||
|
if(count($array_2) != 3) return $source; //Rien <20> faire
|
|||
|
|
|||
|
//Cr<43>ation du troisi<73>me tableau
|
|||
|
$array_3 = explode(":", $array_1[1]);
|
|||
|
if(count($array_2) != 3) return $source; //Rien <20> faire
|
|||
|
|
|||
|
//Cr<43>ation et renvoi du r<>sultat
|
|||
|
return mktime($array_3[0], $array_3[1], $array_3[2], $array_2[1], $array_2[2], $array_2[0]);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant d'adapter la date pour l'affichages d'une page
|
|||
|
function adapte_date($source, $timestamp = 0)
|
|||
|
{
|
|||
|
if($timestamp == 0)
|
|||
|
$timestamp = to_timestamp($source)-3600; //Exemple de date : 2013-11-16 14:30:00
|
|||
|
|
|||
|
$now = time();
|
|||
|
$difference = $now-$timestamp;
|
|||
|
|
|||
|
if($difference == 0) //Il y a moins d'une seconde
|
|||
|
return "Il y a quelques instants";
|
|||
|
elseif($difference == 1) //Il y a une seconde
|
|||
|
return "Il y a une seconde";
|
|||
|
elseif($difference <= 60) //Inf<6E>rieur <20> une minute
|
|||
|
return "Il y a ".$difference." secondes";
|
|||
|
elseif($difference <= 3600) //Inf<6E>rieur <20> une heure
|
|||
|
{
|
|||
|
$nb_minutes = floor($difference/60);
|
|||
|
if($nb_minutes == 1)
|
|||
|
return "Il y a une minute";
|
|||
|
else
|
|||
|
return "Il y a ".$nb_minutes." minutes";
|
|||
|
}
|
|||
|
elseif($difference <= 86400) //Inf<6E>rieur <20> un jour
|
|||
|
{
|
|||
|
$nb_heures = floor(($difference/60)/60);
|
|||
|
if($nb_heures == 1)
|
|||
|
return "Il y a une heure";
|
|||
|
else
|
|||
|
return "Il y a ".$nb_heures." heures";
|
|||
|
}
|
|||
|
elseif($difference <= 2678400) //Inf<6E>rieur <20> un mois
|
|||
|
{
|
|||
|
$nb_jours = floor((($difference/60)/60)/24);
|
|||
|
if($nb_jours == 1)
|
|||
|
return "Il y a un jour";
|
|||
|
else
|
|||
|
return "Il y a ".$nb_jours." jours";
|
|||
|
}
|
|||
|
elseif($source != "") //On affiche le jour pr<70>cis
|
|||
|
{
|
|||
|
//On se sert du timestamp : $timestamp
|
|||
|
$datas_date = date( "w|j|n|Y|H|i|s" , $timestamp);
|
|||
|
$array_date = explode('|', $datas_date);
|
|||
|
|
|||
|
//On v<>rifie que la date est correcte
|
|||
|
if(count($array_date) != 7)
|
|||
|
return $date; //Rien <20> faire
|
|||
|
|
|||
|
//D<>finition des donn<6E>es
|
|||
|
$days = array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
|
|||
|
$months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
|
|||
|
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return "Le ".$days[$array_date[0]]." ".$array_date[1]." ".$months[$array_date[2]-1]." ".$array_date[3]." à ".$array_date[4].":".$array_date[5].":".$array_date[6];
|
|||
|
}
|
|||
|
else //Rien <20> faire, on renvoi la date
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de r<>cup<75>rer la source des commentaires dans un tableau
|
|||
|
function getsourcecommentaire_html($source, $type, $fin = '\n')
|
|||
|
{
|
|||
|
preg_match_all('#'.$type.'(.*?)'.$fin.'#is', $source, $resultat, PREG_PATTERN_ORDER);
|
|||
|
|
|||
|
//On renvoi le r<>sultat
|
|||
|
return $resultat[0];
|
|||
|
}
|
|||
|
|
|||
|
//Fonction de compilation de code source (n<>cessite : getsourcecommentaire_html)
|
|||
|
function compile_code_source($source, $allow_comment_slash_slash = false, $free_hosting = false)
|
|||
|
{
|
|||
|
if($allow_comment_slash_slash == false)
|
|||
|
{
|
|||
|
$source = str_replace(":/"."/", ':adaptecompilewithcomunicforsecurityofhttppleasedontremove', $source); //Protection http://
|
|||
|
$source = str_replace(getsourcecommentaire_html($source, '/'.'/'), '', $source);
|
|||
|
$source = str_replace(':adaptecompilewithcomunicforsecurityofhttppleasedontremove', ":/"."/", $source); //Retire protection http://
|
|||
|
}
|
|||
|
$source = str_replace("\n", ' ', $source);
|
|||
|
$source = str_replace(getsourcecommentaire_html($source, '<!'.'--', '-'.'->'), '', $source);
|
|||
|
//$source = str_replace(getsourcecommentaire_html($source, '/*', '*/'), '', $source);
|
|||
|
//$source = str_replace(getsourcecommentaire_html($source, '', ''), '', $source);
|
|||
|
$source = str_replace(' ', ' ', $source);
|
|||
|
|
|||
|
//Correction des probl<62>mes Javascript
|
|||
|
$source = str_replace(' xhr.send(null);', "\n xhr.send(null);", $source);
|
|||
|
|
|||
|
//On enl<6E>ve les espaces en trop
|
|||
|
for ($i = 0; 15>$i; $i++)
|
|||
|
{
|
|||
|
$source = str_replace(' ', ' ', $source);
|
|||
|
}
|
|||
|
|
|||
|
//Derni<6E>res corrections... ! Non op<6F>rationnel !
|
|||
|
//$source = str_replace('> <', '><', $source);
|
|||
|
//$source = str_replace('; ', ';', $source);
|
|||
|
|
|||
|
//On adapte si il s'agit de Comunic
|
|||
|
if($free_hosting == true)
|
|||
|
{
|
|||
|
//Adaptation de la page
|
|||
|
$source = str_replace('chat.js', 'comunicrapid.js', $source);
|
|||
|
$source = str_replace('chat.css', 'comunicrapid.css', $source);
|
|||
|
$source = str_replace('chat.php', 'comunicrapid.php', $source);
|
|||
|
}
|
|||
|
|
|||
|
//Renvoi de la source
|
|||
|
return $source;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de lister l'ensemble des groupes d'une personne
|
|||
|
function list_groupes_personnes($id_personne, $bdd)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT * FROM groupe_personnes WHERE ID_personne = ?";
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_personne*1));
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$retour = array();
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
$retour[] = $enregistrer;
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Renvoi du r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Print_r d'un tableau avec <pre> int<6E>gr<67>
|
|||
|
function print_r_pre($tableau)
|
|||
|
{
|
|||
|
echo "<pre>";
|
|||
|
print_r($tableau);
|
|||
|
echo "</pre>";
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de rechercher l'appartenance <20> un groupe
|
|||
|
function search_appartenance_groupes($id_user, $id_user_connected, $bdd, $open = true)
|
|||
|
{
|
|||
|
//On v<>rifie si l'on doit chercher tous les groupes ou non
|
|||
|
if(!$open)
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT ID FROM groupe_personnes WHERE ID_personne = ? AND ((liste_ID = ?) OR (liste_ID LIKE ?) OR (liste_ID LIKE ?) OR (liste_ID LIKE ?))";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_user, $id_user_connected, "%|".$id_user_connected, $id_user_connected."|%", "%|".$id_user_connected."|%"));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Requ<71>te de recherche
|
|||
|
$sql = "SELECT ID FROM groupe_personnes WHERE (liste_ID = ?) OR (liste_ID LIKE ?) OR (liste_ID LIKE ?) OR (liste_ID LIKE ?)";
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute(array($id_user_connected, "%|".$id_user_connected, $id_user_connected."|%", "%|".$id_user_connected."|%"));
|
|||
|
}
|
|||
|
|
|||
|
//Enregistrement des r<>sultats
|
|||
|
$retour = array();
|
|||
|
while($enregistrer = $requete->fetch())
|
|||
|
{
|
|||
|
$retour[] = $enregistrer['ID'];
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
|
|||
|
//Retour des r<>sultat
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de dire si la vid<69>o est partiellement (ou totalement) restreinte
|
|||
|
function visibilite_privee($niveau_visibilite)
|
|||
|
{
|
|||
|
if($niveau_visibilite == 3)
|
|||
|
return true;
|
|||
|
elseif(preg_match("<3>", $niveau_visibilite))
|
|||
|
return true;
|
|||
|
else
|
|||
|
return false; //La vid<69>o est publique
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de finir la compilation de source
|
|||
|
function fin_mise_en_cache()
|
|||
|
{
|
|||
|
$source = ob_get_contents();
|
|||
|
ob_end_clean();
|
|||
|
echo compile_code_source($source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>finir si une page en cache est disponible ou non pour ce fichier
|
|||
|
function is_page_cached($nom_page)
|
|||
|
{
|
|||
|
if(file_exists("cache/".sha1($nom_page)))
|
|||
|
return true;
|
|||
|
else
|
|||
|
return false;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'<27>criture du fichier dans le cache
|
|||
|
function write_cache($file, $source)
|
|||
|
{
|
|||
|
//Adaptation du nom de fichier si n<>cessaire
|
|||
|
if(!preg_match("<cache/>", $file))
|
|||
|
$file = "cache/".sha1($file);
|
|||
|
|
|||
|
//Ecriture du fichier dans le cache
|
|||
|
file_put_contents($file, $source);
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant d'afficher un message d'erreur
|
|||
|
function affiche_message_erreur($message, $metro_enabled = false)
|
|||
|
{
|
|||
|
if(!$metro_enabled)
|
|||
|
echo '<span class="metro"><p class="padding20 bg-darkRed fg-white"><span class="icon-warning"> '.$message.'</span></p></span>';
|
|||
|
else
|
|||
|
echo '<p class="padding20 bg-darkRed fg-white"><span class="icon-warning"> '.$message.'</span></p>';
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage d'un compte <20> rebours
|
|||
|
function affiche_compte_rebours($infos_texte)
|
|||
|
{
|
|||
|
//D<>termination de la date de fin
|
|||
|
//$date_fin = date("D M d Y H:i:s", strtotime($infos_texte['annee_fin']."-".$infos_texte['mois_fin']."-".$infos_texte['jour_fin']))." UTC"; //Sun Aug 05 2035 12:00:00 GMT+0200
|
|||
|
//$date_fin = date("c", strtotime($infos_texte['annee_fin']."-".$infos_texte['mois_fin']."-".$infos_texte['jour_fin']))." GMT+0200"; //Sun Aug 05 2035 12:00:00 GMT+0200
|
|||
|
$date_fin = strtotime($infos_texte['annee_fin']."-".$infos_texte['mois_fin']."-".$infos_texte['jour_fin']);
|
|||
|
//$date_fin = time();
|
|||
|
$id_counter = 'time_'.$infos_texte['ID'];
|
|||
|
|
|||
|
echo '<timers>'.$id_counter.'|'.$date_fin.'</timers><div class="metro"><div class="countdown" id="'.$id_counter.'" data-role="countdown" data-stoptimer="'.$date_fin.'" data-style-background="bg-cyan" style="font-size: 60px"></div></div>';
|
|||
|
|
|||
|
?><script>launch_countdown(<?php echo $date_fin; ?>, '<?php echo $id_counter; ?>');</script><?php
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage d'un lien vers une page externe
|
|||
|
function affiche_lien_webpage($infos_texte)
|
|||
|
{
|
|||
|
if($infos_texte['type'] == "webpage_link")
|
|||
|
{
|
|||
|
if($infos_texte['url_page'] != "")
|
|||
|
{
|
|||
|
//Titre de la page
|
|||
|
if($infos_texte['titre_page'] != "default")
|
|||
|
$titre_page = $infos_texte['titre_page'];
|
|||
|
else
|
|||
|
$titre_page = "Page Web";
|
|||
|
|
|||
|
//Description de la page
|
|||
|
if($infos_texte['description_page'] != "default")
|
|||
|
$description_page = $infos_texte['description_page'];
|
|||
|
else
|
|||
|
$description_page = "Page web externe";
|
|||
|
|
|||
|
//Image de la page
|
|||
|
if($infos_texte['image_page'] != "default")
|
|||
|
$image_page = $infos_texte['image_page'];
|
|||
|
else
|
|||
|
$image_page = path_img_asset('world.png');
|
|||
|
|
|||
|
?><div class="link_webpage">
|
|||
|
<a target="_blank" href="<?php echo $infos_texte['url_page']; ?>">
|
|||
|
<img class="image_webpage" src="<?php echo $image_page; ?>" />
|
|||
|
<div class="titre_webpage"><?php echo $titre_page; ?></div>
|
|||
|
<div class="url_webpage"><?php echo $infos_texte['url_page']; ?></div>
|
|||
|
<div class="description_webpage"><?php echo $description_page; ?></div>
|
|||
|
</a>
|
|||
|
</div>
|
|||
|
<?php
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage d'un lien vers un PDF
|
|||
|
function affiche_lien_pdf($infos_texte)
|
|||
|
{
|
|||
|
if($infos_texte['type'] == "pdf")
|
|||
|
{
|
|||
|
if($infos_texte['path'] != "")
|
|||
|
{
|
|||
|
//Titre de la page
|
|||
|
?><div class="link_pdf">
|
|||
|
<a target="_blank" href="<?php echo webUserDataFolder($infos_texte['path']); ?>">
|
|||
|
<?php echo code_inc_img(path_img_asset('file_extension_pdf.png'), "T&eaucte;lécharger le PDF"); ?>
|
|||
|
Fichier PDF
|
|||
|
</a>
|
|||
|
</div>
|
|||
|
<?php
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>finir toutes les personnes autoris<69>es <20> voir un post
|
|||
|
function list_personnes_groupes($valeur, $bdd)
|
|||
|
{
|
|||
|
//On importe la liste dans un tableau
|
|||
|
$array = explode("|", $valeur);
|
|||
|
|
|||
|
//On supprime la premi<6D>re valeur (valeur <20> validit<69> g<>n<EFBFBD>rale)
|
|||
|
unset($array[0]);
|
|||
|
|
|||
|
//Pr<50>paration du retour
|
|||
|
$retour = array();
|
|||
|
|
|||
|
//On ne continue que si la liste n'est pas vide
|
|||
|
if(count($array) != 0)
|
|||
|
{
|
|||
|
//On traite maintenant la liste
|
|||
|
$sql = "SELECT * FROM groupe_personnes WHERE ID = ? ";
|
|||
|
|
|||
|
foreach($array as $ajouter)
|
|||
|
{
|
|||
|
$sql .= "OR ID = ? ";
|
|||
|
}
|
|||
|
|
|||
|
$array[0] = $array[1];
|
|||
|
|
|||
|
//Ex<45>cution de la requ<71>te
|
|||
|
$requete = $bdd->prepare($sql);
|
|||
|
$requete->execute($array);
|
|||
|
|
|||
|
//Affichage des r<>sultats
|
|||
|
while($afficher = $requete->fetch())
|
|||
|
{
|
|||
|
//R<>cup<75>ration de la liste des membres du groupe
|
|||
|
$liste_membres = explode('|', $afficher['liste_ID']);
|
|||
|
$liste_membres[] = $afficher['ID_personne'];
|
|||
|
|
|||
|
//Traitement de la liste des membres
|
|||
|
foreach($liste_membres as $traiter)
|
|||
|
{
|
|||
|
//On v<>rifie si le membre a d<>j<EFBFBD> <20>t<EFBFBD> ajout<75>
|
|||
|
if(!in_array($traiter, $retour, true))
|
|||
|
$retour[] = $traiter; //Ajout de l'entr<74>e
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fermeture de la requ<71>te
|
|||
|
$requete->closeCursor();
|
|||
|
}
|
|||
|
|
|||
|
return $retour;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant d'afficher qu'une page est v<>rifi<66>e
|
|||
|
function message_checked_page()
|
|||
|
{
|
|||
|
echo "</td><td><img style='vertical-align: middle;' src='img/tick.png' title='Page vérifiée' />";
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de rapporter une erreur durant l'ex<65>cution du comunic
|
|||
|
function report_error($nom_erreur, $raison = "La raison n'a pas été spécifiée.", $details = array())
|
|||
|
{
|
|||
|
//Inclusion de la configuration
|
|||
|
include('inc/config/config.php');
|
|||
|
|
|||
|
|
|||
|
//Envoi du message
|
|||
|
//V<>rification de l'autorisation d'envoi de mails
|
|||
|
if($active_envoi_mail == "oui")
|
|||
|
{
|
|||
|
//Envoi du message
|
|||
|
$send_mail = true;
|
|||
|
$sujet = "[Erreur Comunic] Erreur lors de l'ex<65>cution d'une page dans Comunic"; //Sujet
|
|||
|
$description_rapide = "Une erreure fatale est arrivee dans une requete pour Comunic.";
|
|||
|
$nom_destinataire = "Dev de Comunic";
|
|||
|
$adresse_mail_destinataire = $mail_envoi_erreur_sql;
|
|||
|
$message = "<h2 style='text-align: center'>Erreur dans une page Comunic</h2>
|
|||
|
<p>Bonjour, ce message vous a été adressé suite à une erreur fatale dans un script PHP. L'erreur PHP est la suivante : <i>".$nom_erreur."</i></p>
|
|||
|
<p>La raison de l'erreur est la suivante: ".$raison."</p>
|
|||
|
<p>Les informations complémentaires sont les suivantes :</p>
|
|||
|
<table>
|
|||
|
<tr><td><b>$"."_POST</b></td></tr>";
|
|||
|
//Parcours de la variable $_POST
|
|||
|
foreach($_POST as $nom=>$valeur)
|
|||
|
$message.= "<tr><td>".$nom." :</td><td>".$valeur."</td></tr>";
|
|||
|
|
|||
|
$message .= "<tr><td><b>$"."_GET</b></td></tr>";
|
|||
|
//Parcours de la variable $_GET
|
|||
|
foreach($_GET as $nom=>$valeur)
|
|||
|
$message.= "<tr><td>".$nom." :</td><td>".$valeur."</td></tr>";
|
|||
|
|
|||
|
$message .= "<tr><td><b>$"."_SERVER</b></td></tr>";
|
|||
|
//Parcours de la variable $_SERVER
|
|||
|
foreach($_SERVER as $nom=>$valeur)
|
|||
|
$message.= "<tr><td>".$nom." :</td><td>".$valeur."</td></tr>";
|
|||
|
$message .= "<tr><td><b>$"."_SESSION</b></td></tr>";
|
|||
|
|
|||
|
//Parcours de la variable $_SESSION
|
|||
|
foreach($_SESSION as $nom=>$valeur)
|
|||
|
$message.= "<tr><td>".$nom." :</td><td>".$valeur."</td></tr>";
|
|||
|
$message .= "<tr><td><b>$"."details</b></td></tr>";
|
|||
|
|
|||
|
//Parcours de la variable $details
|
|||
|
foreach($details as $nom=>$valeur)
|
|||
|
$message.= "<tr><td>".$nom." :</td><td>".$valeur."</td></tr>";
|
|||
|
$message .= "</table>"; //Message
|
|||
|
$texte_message = $message;
|
|||
|
|
|||
|
//Envoi du message
|
|||
|
include(websiteRelativePath('inc/envoi_mail.php'));
|
|||
|
|
|||
|
echo "<!-- MailAdmin sent -->";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de d<>terminer si une personne a d<>j<EFBFBD> particip<69> <20> un sondage ou non
|
|||
|
//Retourne false si la personne n'a pas vot<6F>
|
|||
|
//Retourne l'ID du choix si la personne a vot<6F>
|
|||
|
function vote_personne_sondage($id_personne, $id_sondage, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations dans la base de donn<6E>es
|
|||
|
$infos_vote_sondage = select_sql("sondage_reponse", "ID_utilisateurs = ? AND ID_sondage = ?", $bdd, array($id_personne, $id_sondage));
|
|||
|
|
|||
|
//On d<>termine si la personne a vot<6F> ou non
|
|||
|
if(count($infos_vote_sondage) == 0)
|
|||
|
{
|
|||
|
//Retour n<>gatif
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Retour de l'ID du choix
|
|||
|
return $infos_vote_sondage[0]['ID_sondage_choix'];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Fonction d'affichage d'erreur
|
|||
|
function echo_erreur($erreur)
|
|||
|
{
|
|||
|
echo "<p><b>Erreur : </b> ".$erreur."</p>";
|
|||
|
}
|
|||
|
|
|||
|
//R<>cup<75>ration d'un sondage par l'ID du texte correspondant
|
|||
|
function get_sondage_by_text_id($id_texte, $bdd)
|
|||
|
{
|
|||
|
//R<>cup<75>ration des informations sur le sondage
|
|||
|
$infos_sondage = select_sql("sondage", "ID_texte = ?", $bdd, array($id_texte));
|
|||
|
|
|||
|
//Si il n'y a pas de sondage => Erreur
|
|||
|
if(count($infos_sondage) == 0)
|
|||
|
{
|
|||
|
//Rapport d'erreur
|
|||
|
report_error('', 'Un sondage devrait être affiché, mais celui-ci est introuvable dans la BDD. Erreur dans le fichier view_textes.php (inc).');
|
|||
|
|
|||
|
//On casse la cha<68>ne apr<70>s erreur
|
|||
|
affiche_message_erreur("Une erreur a survenue lors de récupération d'informations relatives au post (Err Get Info Sond0.). Passage au texte suivant");
|
|||
|
echo "</td></tr>";
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
return $infos_sondage;
|
|||
|
}
|
|||
|
|
|||
|
//Fonction permettant de v<>rifier si un dossier appartient bien <20> un utilisateur
|
|||
|
function checkPersonnalFolder($container_path, $id_user) {
|
|||
|
//D<>termination du chemin
|
|||
|
$path = $container_path.$id_user."/";
|
|||
|
|
|||
|
//On v<>rifie l'existence du dossier
|
|||
|
if(!is_dir($path))
|
|||
|
{
|
|||
|
if(!mkdir($path))
|
|||
|
{
|
|||
|
//Rapport d'erreur
|
|||
|
report_error("Error in checkPersonnalFolder()", "Impossible de créer un dossier personnel d'utilisateur", $details = array("path" => $path));
|
|||
|
|
|||
|
//Erreur fatale
|
|||
|
echo "<p>Une erreur fatale a survenue (checkPersonnalFolder in creating personnal folder). Veuillez réessayer...</p>";
|
|||
|
exit();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//On v<>rifie l'existence d'un fichier index.php de s<>curit<69>
|
|||
|
if(!file_exists($path."index.html"))
|
|||
|
{
|
|||
|
$file_content = "<html><title>Acess Forbiden</title><h1>Access Forbiden.</h1><a href='/'>Go back to main page.</a></html>";
|
|||
|
$file_name = $path."index.html";
|
|||
|
|
|||
|
if(!file_put_contents($file_name, $file_content))
|
|||
|
{
|
|||
|
//Rapport d'erreur
|
|||
|
report_error("Erreur in checkPersonnalFolder()", "Impossible de créer le fichier de sécurité <i>index.html</i>", $details = array(
|
|||
|
"file" => $file_name,
|
|||
|
"content" => $file_content));
|
|||
|
|
|||
|
//Erreur fatale
|
|||
|
echo "<p>Une erreur fatale a survenue (checkPersonnalFolder in creating security file). Veuillez réessayer...</p>";
|
|||
|
exit();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Renvoi du chemin du dossier
|
|||
|
return $path;
|
|||
|
}
|
|||
|
|
|||
|
//End Of File
|
|||
|
//Merci d'utiliser le Service Pierre avec Comunic ! :)
|