| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 | 
							- <?php
 
- # ***** BEGIN LICENSE BLOCK *****
 
- # This file is part of DotClear.
 
- # Copyright (c) 2004 Olivier Meunier and contributors. All rights
 
- # reserved.
 
- #
 
- # DotClear is free software; you can redistribute it and/or modify
 
- # it under the terms of the GNU General Public License as published by
 
- # the Free Software Foundation; either version 2 of the License, or
 
- # (at your option) any later version.
 
- # 
 
- # DotClear is distributed in the hope that it will be useful,
 
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
 
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
- # GNU General Public License for more details.
 
- # 
 
- # You should have received a copy of the GNU General Public License
 
- # along with DotClear; if not, write to the Free Software
 
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
- #
 
- # ***** END LICENSE BLOCK *****
 
- require dirname(__FILE__).'/../inc/prepend.php';
 
- # Si on a une session active
 
- if (defined('DC_SESSION_NAME') && isset($_COOKIE[DC_SESSION_NAME])) {
 
- 	require dirname(__FILE__).'/../inc/session.php';
 
- }
 
- require dirname(__FILE__).'/lib.mod.php';
 
- require dirname(__FILE__).'/lib.cache.php';
 
- require dirname(__FILE__).'/class.xblog.php';
 
- require dirname(__FILE__).'/class.xblogpost.php';
 
- require dirname(__FILE__).'/class.xblogcomment.php';
 
- require dirname(__FILE__).'/functions.php';
 
- $mode = dcGetMod();
 
- $year = $month = $day = NULL;
 
- $post_id = (!empty($_GET['p'])) ? $_GET['p'] : NULL;
 
- $cat_id = (!empty($_GET['cat'])) ? $_GET['cat'] : NULL;
 
- $lang = (!empty($_GET['l'])) ? $_GET['l'] : NULL;
 
- $mod_files = $mod_ts = array();
 
- if (!empty($_GET['d'])) {
 
- 	$year = substr($_GET['d'],0,4);
 
- 	if (strlen($_GET['d']) >= 7) {
 
- 		$month = substr($_GET['d'],5,2);
 
- 		if (strlen($_GET['d']) == 10) {
 
- 			$day = substr($_GET['d'],8,2);
 
- 		}
 
- 	}
 
- }
 
- $err_msg = $form_err = $form_msg = '';
 
- # Tableau des dates de modif
 
- $arry_last_mod = array();
 
- # Variables pour le formulaire
 
- $c_nom = $c_mail = $c_content = '';
 
- $c_site = 'http://';
 
- $preview = false;
 
- if (!empty($_COOKIE['comment_info'])) {
 
- 	$c_cookie = unserialize($_COOKIE['comment_info']);
 
- 	$c_nom = $c_cookie['c_nom'];
 
- 	$c_mail = $c_cookie['c_mail'];
 
- 	$c_site = $c_cookie['c_site'];
 
- }
 
- # Variable de conf
 
- $theme_path = $blog_dc_path.'/themes/';
 
- $theme_uri = dc_app_url.'/themes/';
 
- $img_path = dc_img_url;
 
- # Définition du thème et de la langue
 
- $__theme = dc_theme;
 
- $__lang = dc_default_lang;
 
- # Ajout des functions.php des plugins
 
- $objPlugins = new plugins(dirname(__FILE__).'/../'.DC_ECRIRE.'/tools/');
 
- foreach ($objPlugins->getFunctions() as $pfunc) {
 
- 	require_once $pfunc;
 
- }
 
- # Définition du template
 
- if (!is_dir($theme_path.$__theme)) {
 
- 	header('Content-type: text/plain');
 
- 	echo 'Le thème '.$__theme.' n\'existe pas';
 
- 	exit;
 
- }
 
- if (file_exists($theme_path.$__theme.'/template.php')) {
 
- 	$dc_template_file = $theme_path.$__theme.'/template.php';
 
- } else {
 
- 	$dc_template_file = $theme_path.'default/template.php';
 
- }
 
- # Prepend du template s'il existe
 
- if (file_exists(dirname($dc_template_file).'/prepend.php')) {
 
- 	require dirname($dc_template_file).'/prepend.php';
 
- }
 
- # Chargement des langues
 
- if (dc_encoding == 'UTF-8') {
 
- 	l10n::set(dirname(__FILE__).'/../l10n/'.$__lang.'-utf8/date');
 
- 	l10n::set(dirname(__FILE__).'/../l10n/'.$__lang.'-utf8/messages');
 
- } else {
 
- 	l10n::set(dirname(__FILE__).'/../l10n/'.$__lang.'/date');
 
- 	l10n::set(dirname(__FILE__).'/../l10n/'.$__lang.'/messages');
 
- }
 
- # Fichier de langue du template s'il existe
 
- if (dc_encoding == 'UTF-8') {
 
- 	l10n::set(dirname($dc_template_file).'/l10n/'.$__lang.'-utf8/main');
 
- } else {
 
- 	l10n::set(dirname($dc_template_file).'/l10n/'.$__lang.'/main');
 
- }
 
- /* Création du tableau des dates de modification de tous les fichiers
 
- inclus. On ajoute aussi le fichier UPDATE, append.php, le template,
 
- dotclear.ini et tous les fichiers de langue */
 
- $mod_files = array_merge($mod_files,get_included_files(),$GLOBALS['__l10n_files']);
 
- $mod_files[] = DC_UPDATE_FILE;
 
- $mod_files[] = $dc_template_file;
 
- $mod_files[] = $blog_dc_path.'/layout/append.php';
 
- $mod_files[] = $blog_dc_path.'/conf/dotclear.ini';
 
- # Cache HTTP
 
- if (dc_http_cache && $mode != 'search' && empty($_POST) &&
 
- defined('DC_UPDATE_FILE_W') && DC_UPDATE_FILE_W)
 
- {
 
- 	cache::http($mod_files,$mod_ts);
 
- }
 
- # Connexion et création du blog
 
- $con = new connection(DB_USER,DB_PASS,DB_HOST,DB_DBASE);
 
- if($con->error()) {
 
- 	header('Content-Type: text/plain');
 
- 	echo 'MySQL Error : '.$con->error();
 
- 	exit;
 
- }
 
- $blog = new xblog($con,DB_PREFIX,1,dc_encoding);
 
- $blog->rs_blogpost = 'xblogpost';
 
- $blog->rs_blogcomment = 'xblogcomment';
 
- $blog->setLang($lang);
 
- $blog->setURL('post',dc_blog_url.dc_format_post_url);
 
- $blog->setURL('cat',dc_blog_url.dc_format_cat_url);
 
- $blog->setURL('archive',dc_blog_url.dc_format_archive_url);
 
- $blog->setURL('day',dc_blog_url.dc_format_day_url);
 
- $blog->setDateFormat(dc_date_format,dc_time_format);
 
- $blog->setUseSmilies(dc_use_smilies);
 
- if (is_dir($theme_path.$__theme.'/smilies/')) {
 
- 	$blog->setSmiliesPath($theme_path.$__theme.'/smilies/',$theme_uri.$__theme.'/smilies/');
 
- } else {
 
- 	$blog->setSmiliesPath($theme_path.'default/smilies/',$theme_uri.'default/smilies/');
 
- }
 
- # postcon.php du template s'il existe
 
- if (file_exists(dirname($dc_template_file).'/postcon.php')) {
 
- 	require dirname($dc_template_file).'/postcon.php';
 
- }
 
- # postcon.php des plugins
 
- foreach ($objPlugins->getFunctions('postcon.php') as $pfunc) {
 
- 	require_once $pfunc;
 
- }
 
- # Catégories
 
- $rs_cat = $blog->getCat();
 
- # Mois pour les archives
 
- $arry_months = $blog->getAllDates('m','','','',$cat_id);
 
- # Les langues du blog
 
- $rs_lang = $blog->getPostLanguages();
 
- if($mode == 'home' || ($mode == 'cat' && $cat_id) || $mode == 'year')
 
- {
 
- 	# Dernières nouvelles
 
- 	$news = $blog->getLastNews(dc_nb_post_per_page,$cat_id,'post_dt DESC');
 
- 	
 
- 	if ($news->isEmpty()) {
 
- 		$err_msg = '<p>'.__('No entry.').'</p>';
 
- 	}
 
- }
 
- elseif($mode == 'day')
 
- {
 
- 	$news = $blog->getPostByDate($year,$month,$day,$cat_id,'post_dt DESC');
 
- 	
 
- 	if ($news->isEmpty()) {
 
- 		$err_msg = '<p>'.__('No entry.').'</p>';
 
- 	}
 
- }
 
- elseif($mode == 'month')
 
- {
 
- 	$news = $blog->getPostByDate($year,$month,'',$cat_id,'post_dt DESC');
 
- 	
 
- 	if ($news->isEmpty()) {
 
- 		$err_msg = '<p>'.__('No entry.').'</p>';
 
- 	}
 
- }
 
- elseif($mode == 'post' && $post_id)
 
- {
 
- 	$news = $blog->getPostByID($post_id);
 
- 	
 
- 	if ($news->isEmpty())
 
- 	{
 
- 		$err_msg = '<p>'.__('No entry.').'</p>';
 
- 	}
 
- 	else
 
- 	{
 
- 		# Ajout d'un commentaire
 
- 		if (!empty($_POST['redir']) && $news->openComment())
 
- 		{
 
- 			$c_nom = trim($_POST['c_nom']);
 
- 			$c_mail = trim($_POST['c_mail']);
 
- 			$c_site = trim($_POST['c_site']);
 
- 			
 
- 			if (trim($_POST['c_content']) == '')
 
- 			{
 
- 				$in_content = $c_content = '';
 
- 			}
 
- 			else
 
- 			{
 
- 				$c_content = $_POST['c_content'];
 
- 				
 
- 				if (dc_wiki_comments)
 
- 				{
 
- 					$objWiki = new wiki2xhtmlComment();
 
- 					
 
- 					# Options wiki
 
- 					$objWiki->setOpt('active_fix_word_entities',(dc_encoding != 'UTF-8')); 
 
- 					$objWiki->setOpt('active_fr_syntax',(dc_default_lang == 'fr'));
 
- 					
 
- 					$in_content = $objWiki->transform($c_content);
 
- 				}
 
- 				else
 
- 				{
 
- 					$in_content = '<p>'.
 
- 					nl2br($blog->parseContent(htmlspecialchars($c_content))).'</p>';
 
- 				}
 
- 			}
 
- 			
 
- 			if (!empty($_POST['preview']))
 
- 			{
 
- 				$preview = true;
 
- 			}
 
- 			else
 
- 			{
 
- 				
 
- 				if ($blog->addComment($post_id,$c_nom,$c_mail,$c_site,
 
- 				$in_content,0,dc_time_delta,dc_comments_pub) === false)
 
- 				{
 
- 					$form_err = $blog->error(1,0);
 
- 				}
 
- 				else
 
- 				{
 
- 					if (!empty($_POST['c_remember']) || !empty($_COOKIE['comment_info']))
 
- 					{
 
- 						$c_cookie = array(
 
- 							'c_nom' => $c_nom,
 
- 							'c_mail' => $c_mail,
 
- 							'c_site' => $c_site
 
- 						);
 
- 						$c_cookie = serialize($c_cookie);
 
- 						setcookie('comment_info',$c_cookie,
 
- 							strtotime('+3 month'),'/',
 
- 							$_SERVER['HTTP_HOST']);
 
- 					}
 
- 					
 
- 					if (dc_comment_notification && $news->f('user_email') != ''
 
- 					&& $news->f('user_email') != $c_mail)
 
- 					{
 
- 						$n_titre = $blog->removeEntities($news->f('post_titre'));
 
- 						$n_mail = $news->f('user_email');
 
- 						$n_subject = util::mimeEncode('['.dc_blog_name.'] '.$n_titre,dc_encoding);
 
- 						
 
- 						$n_content =
 
- 						sprintf(__('Comment for entry %s'),$n_titre)."\n\n".
 
- 						sprintf(__('By: %s'),$c_nom.(($c_mail!='') ? ' <'.$c_mail.'>' : ''))."\n".
 
- 						sprintf(__('Website: %s'),$c_site)."\n".
 
- 						"\n".str_replace("\r",'',$c_content)."\n\n".
 
- 						"--\n".
 
- 						'http://'.$_SERVER['HTTP_HOST'].$news->getPermURL();
 
- 						
 
- 						if (isset($_SERVER['REMOTE_ADDR'])) {
 
- 							$client_ip = $_SERVER['REMOTE_ADDR'];
 
- 						} else {
 
- 							$client_ip = "unknown";
 
- 						}
 
- 						
 
- 						$n_headers =
 
- 						'From: '.$n_mail."\r\n".
 
- 						(($c_mail!='') ? 'Reply-To: '.$c_mail."\r\n" : '').
 
- 						'Content-Type: text/plain; charset='.dc_encoding.";\r\n".
 
- 						"X-Mailer: DotClear\r\n".
 
- 						'X-Blog: http://'.$_SERVER['HTTP_HOST'].dc_blog_url."\r\n".
 
- 						'X-Client: '.$client_ip."\r\n";
 
- 						
 
- 						@mail($n_mail,$n_subject,$n_content,$n_headers);
 
- 					}
 
- 					
 
- 					$redir = $_POST['redir'].(strpos($_POST['redir'],'?') ? '&' : '?').'cos=1';
 
- 					header('Location: '.$redir);
 
- 					exit;
 
- 				}
 
- 			}
 
- 		}
 
- 		
 
- 		# Message si modération
 
- 		if (!empty($_GET['cos']) && dc_comments_pub == 0) {
 
- 			$form_msg = __('Your comment has been sent '.
 
- 			'successfully. It will be online soon.');
 
- 		}
 
- 		
 
- 		$comments = $blog->getComments($post_id);
 
- 		$trackbacks = $comments->extractTrackbacks();
 
- 		
 
- 		$rs_prev = $blog->getNextID($news->getTS(),-1);
 
- 		$rs_next = $blog->getNextID($news->getTS(),1);
 
- 	}
 
- }
 
- elseif($mode == 'search')
 
- {
 
- 	# Résultat de recherche
 
- 	$news = $blog->searchPost($_GET['q']);
 
- 	
 
- 	if ($news->isEmpty()) {
 
- 		$err_msg =
 
- 		'<p>'.
 
- 		sprintf(__('Search of %s doesn\'t give any result.'),
 
- 		'<em>'.htmlspecialchars($_GET['q']).'</em>').
 
- 		'</p>';
 
- 	}
 
- }
 
- ?>
 
 
  |