Пример #1
0
 /**
  * Mettre à jour le fichier RSS d'un prof avec une demande d'évaluation d'élève.
  * 
  * @param string   $fichier_chemin
  * @param string   $titre
  * @param string   $texte
  * @param string   $guid
  * @return void
  */
 public static function modifier_fichier_prof($prof_id, $titre, $texte, $guid)
 {
     $fichier_nom = RSS::nom_fichier_prof($prof_id);
     $fichier_chemin = CHEMIN_DOSSIER_RSS . $_SESSION['BASE'] . DS . $fichier_nom;
     $fichier_url = URL_DIR_RSS . $_SESSION['BASE'] . '/' . $fichier_nom;
     // S'il n'existe pas, en créer un vierge.
     if (!file_exists($fichier_chemin)) {
         RSS::creer_fichier($fichier_chemin, $fichier_url);
     }
     // Ajouter l'article
     $date = date('r', $_SERVER['REQUEST_TIME']);
     $fichier_contenu = file_get_contents($fichier_chemin);
     $article = '  <item>' . "\r\n";
     $article .= '    <title>' . html($titre) . '</title>' . "\r\n";
     $article .= '    <link>' . URL_INSTALL_SACOCHE . '</link>' . "\r\n";
     $article .= '    <description>' . html($texte) . '</description>' . "\r\n";
     $article .= '    <pubDate>' . $date . '</pubDate>' . "\r\n";
     $article .= '    <guid isPermaLink="false">' . $guid . '</guid>' . "\r\n";
     $article .= '  </item>' . "\r\n\r\n";
     $bad = '  </image>' . "\r\n\r\n";
     $bon = '  </image>' . "\r\n\r\n" . $article;
     $fichier_contenu = str_replace($bad, $bon, $fichier_contenu);
     // Mettre à jour la date de reconstruction
     $pbad = '#<lastBuildDate>(.*?)</lastBuildDate>#';
     $pbon = '<lastBuildDate>' . $date . '</lastBuildDate>';
     $fichier_contenu = preg_replace($pbad, $pbon, $fichier_contenu);
     // Couper si le fichier est long (on le ramène à 100Ko) ; ça laisse encore environ 250 entrées dans le flux.
     if (mb_strlen($fichier_contenu) > 120000) {
         $pos = mb_strpos($fichier_contenu, '</item>', 100000);
         $fichier_contenu = mb_substr($fichier_contenu, 0, $pos) . '</item>' . "\r\n\r\n" . '</channel>' . "\r\n" . '</rss>' . "\r\n";
     }
     // Enregistrer
     FileSystem::ecrire_fichier($fichier_chemin, $fichier_contenu);
 }