/* Action permettant d'ajouter un blog
*
* Cette action va permettre d'ajouter un blog. En fait, elle ne fait
* rien de compliqué : elle va simplement proposer une liste de
* sections, puis quand l'utilisateur va valider, va ouvrir la page
* Blog-DATE-SECTION pour que l'utilisateur puisse taper son billet.
*
* C'est donc ici qu'il faut ajouter des sections pour les billets
* (oui, c'est un peu crado)
*
* Développé par Thomas Petazzoni, thomas.petazzoni@enix.org
*/
if ( $_POST["from"] != "" ) { $from = $_POST["from"]; } /* ARmod added 20050131 */
if (!isset($from)) $from = $_SERVER["HTTP_REFERER"]; /* ARmod added 20050131 */
if($this->hasAccess("write"))
{
$blogpage="";
if ($this->GetParameter("local") == "yes")
{
$blogpage = $this->tag;
}
else if($this->GetParameter("page"))
{
$blogpage = $this->GetParameter("page");
}
if($blogpage)
{
$prefix = "Blog".$blogpage;
echo $this->ComposeLinkToPage($prefix . "-" . date("YmdHis") . "-" . $prefix, "edit", "Ajouter un billet");/* ARmod modified 20050126 */
}
else if($_POST)
{
$dest = "edit";
if ( isset($from)) {$dest .= "&from=". $from; }
header("Location: " . $this->config["base_url"] . "Blog-" . date("YmdHis") . "-" . $_POST["blogsection"] . "/" . $dest);
exit;
}
else
{
echo $this->FormOpen();
echo "
/* Action permettant de creer un blog
*
* Chaque billet d'un blog est en fait une page Wiki, dont le nom est
* de la forme Blog-DATE-SECTION. La DATE est de la forme
* YYYYMMDDHHMMSS. Par exemple : Blog-20040502115413-Technologie.
*
* Cette fonction affiche les differents billets d'un blog. Si aucun
* argument n'est fourni, alors les 10 derniers billets sont
* affichees. On peut egalement donner une spéeification de date
* "datespec" pour restreindre l'affichage des billets a un mois, un
* jour, une annee, ou bien specifier la section du billet.
*
* IMPORTANT : dans tous les cas, cette page affiche uniquement les 10
* derniers billets. Il faudrait peut etre afficher tous les billets
* si une section est demandee par exemple.
*
* Developpe par Thomas Petazzoni, thomas.petazzoni@enix.org
*/
/* Fonction de conversion d'une date. Il y a peut etre moyen de faire
plus propre, mais je ne suis pas un specialiste de la bibliotheque
de fonctions PHP */
function BlogConvertDate($date)
{
$minute = substr($date, 10, 2);
$hour = substr($date, 8, 2);
$day = substr($date, 6, 2);
$month = substr($date, 4, 2);
$year = substr($date, 0, 4);
if($hour != "")
{
return $day . "/" . $month . "/" . $year . " - " . $hour . ":" . $minute;
}
else
{
return $day . "/" . $month . "/" . $year;
}
}
/* On commence par construire ce que doit matcher le nom de la page
correspond au billet, en fonction de la specification de date et de
section. */
$blogpage="";
if ($this->GetParameter("local") == "yes")
{
$blogpage = $this->tag;
}
else if($this->GetParameter("page"))
{
$blogpage = $this->GetParameter("page");
}
if ($blogpage)
{
$match = "Blog".$blogpage;
}
else
{
$match = "Blog";
}
if($_GET["datespec"])
{
$match .= "-".$_GET["datespec"] . "%";
}
else
{
$match .= "-%";
}
if($_GET["section"])
{
$match = $match . "-" . $_GET["section"];
}
$limit = 10;
if (is_integer($_GET["limit"]))
{
$limit=$_GET["limit"];
}
/* On va ensuite charger toutes les pages Wiki qui correspondent a la recherche */
$pages = $this->LoadAll("select tag, owner, body from " .
$this->config["table_prefix"]."pages where latest = 'Y' and tag like '$match' order by tag desc limit $limit");
if (is_array($pages)) {
/* Puis on les affiche */
foreach ($pages as $page)
{
/* Si le visiteur n'a pas le droit de lecture sur le billet, on
ne l'affiche pas. Cela permet par exemple de preparer des
billets, de les relire avant de les publier sur le site en
activant le droit de lecture pour tous. */
if(! $this->hasAccess("read", $page["tag"]))
{
continue;
}
/* On commence le billet */
echo "
\n";
$vals = split('-', $page["tag"]);
/* On compte le nombre de commentaire */
$comment_count = count($this->LoadComments($page["tag"]));
/* Le titre du billet */
echo "