File: fork.php - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

001: <?php
002: 
003: /*
004: ** Parties de code � adapter � yN :
005: ** - Appels � mysql_connect et mysql_select_db � ajouter (lignes 106 et 107)
006: ** - Fonctions showCadre (ligne 11) et showError (ligne 47) � remplacer
007: ** - Nom des tables et des champs dans les requ�tes SQL
008: ** --- topics.forum : ID du forum d'appartenance du topic
009: ** --- topics.id : ID du topic
010: ** --- topics.posts : nombre de post dans le topic
011: ** --- topics.title : titre du topic
012: ** --- posts.num : num�ro du post dans le topic (de 0 � N - 1 pour un topic de N posts)
013: ** --- posts.topic : ID du topic auquel appartient le post
014: ** --- last_post.num : num�ro du dernier post lu dans le topic
015: ** --- last_post.topic : ID du topic auquel appartient le post
016: ** - Indexes de la variable $topic (adapter aux noms des champs de la table topics)
017: */
018: 
019: ?>
020: 
021: <?php function showCadre ($title, $text) { ?>
022: 
023: <?xml version="1.0" encoding="windows-1252"?>
024: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
025: <html lang="fr">
026:     <head>
027:         <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
028:         <meta name="Author" content="yAro" />
029:         <meta name="Description" content="Vous cherchez des forums, un endroit pour discuter ? C'est ici ! Actualit�, blogs, bd, cin�, programmation, jeux vid�o, consoles, calculettes TI, �tudes ... y'a too :) Attention ... addictif ! :D" />
030:         <meta name="Keywords" content="forum,discussion,forums,board,chat,gratuit,free,actualite,news,rss,blogs,blog,journal,chat,discuter,ti89,ti,calculette,console,cuisine,recettes,pocket,gba,gp32,zodiac,n-gage,lynx,nintendo,sega,sony,psp,playstation,atari,aide,informatique,d�panage,jeux,r�tro,retrogaming,videolud�lisme,petite,annonce,petites,annonces,citations,annuaire,selection,multimedia,images,video,musique,dvd,mp3,cin�ma,bd,livres,manga,liens,favoris,hors,sujet,divers,t�l�,tv,real,humour,blagues,newbie,portables,logiciel,windows,web,irc,ressources,webmasters,services,adulte" />
031:         <meta name="Identifier-URL" content="http://www.yaronet.com" />
032:         <meta name="Reply-to" content="webmaster@yaronet.com" />
033:         <meta name="revisit-after" content="15 days" />
034:         <meta name="robots" content="index, follow" />
035:         <title><?php echo $title; ?></title>
036:         <link type='text/css' rel='stylesheet' href='http://www.yaronet.com/v31/defaut/styles.css' />
037:         <link type='text/css' rel='stylesheet' href='http://www.yaronet.com/v31/gfx/global.css' />
038:         <script language="JavaScript" type="text/javascript" src="http://www.yaronet.com/v31/defaut/styles.js"></script>
039:         <script language="JavaScript" type="text/javascript" src="http://www.yaronet.com/xcite.js"></script>
040:         <script language="JavaScript" type="text/javascript" src="http://www.yaronet.com/v31/gfx/js/scripts2.js"></script>
041:     </head>
042:     <body>
043:         <a name='haut'></a>
044:         <div id='bulle' style='position:absolute; visibility: hidden; z-index:3;'></div>
045:         <div id='mylinks' style='top:0;left:0;position:absolute;z-index:1;visibility: hidden; display:inline;'></div>
046:         <script language='JavaScript' type="text/javascript" src='http://www.yaronet.com/bulle.js'></script>
047:         <img src='http://www.yaronet.com/v31/defaut/null.gif' height='10' alt='' />
048:         <div class='cadre'>
049:             <h1>&raquo; <?php echo $title; ?></h1>
050:             <br />
051:             <?php echo $text; ?>
052:         </div>
053:     </body>
054: </html>
055: 
056: <?php } ?>
057: <?php function showError ($msg, $url = '') { ?>
058: 
059: <?xml version="1.0" encoding="windows-1252"?>
060: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
061: <html lang="fr">
062:     <head>
063:         <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
064:         <meta name="Author" content="yAro" />
065:         <meta name="Description" content="Vous cherchez des forums, un endroit pour discuter ? C'est ici ! Actualit�, blogs, bd, cin�, programmation, jeux vid�o, consoles, calculettes TI, �tudes ... y'a too :) Attention ... addictif ! :D" />
066:         <meta name="Keywords" content="forum,discussion,forums,board,chat,gratuit,free,actualite,news,rss,blogs,blog,journal,chat,discuter,ti89,ti,calculette,console,cuisine,recettes,pocket,gba,gp32,zodiac,n-gage,lynx,nintendo,sega,sony,psp,playstation,atari,aide,informatique,d�panage,jeux,r�tro,retrogaming,videolud�lisme,petite,annonce,petites,annonces,citations,annuaire,selection,multimedia,images,video,musique,dvd,mp3,cin�ma,bd,livres,manga,liens,favoris,hors,sujet,divers,t�l�,tv,real,humour,blagues,newbie,portables,logiciel,windows,web,irc,ressources,webmasters,services,adulte" />
067:         <meta name="Identifier-URL" content="http://www.yaronet.com" />
068:         <meta name="Reply-to" content="webmaster@yaronet.com" />
069:         <meta name="revisit-after" content="15 days" />
070:         <meta name="robots" content="index, follow" />
071:         <link type='text/css' rel='stylesheet' href='http://www.yaronet.com/v31/defaut/styles.css' />
072:         <script language="JavaScript" type="text/javascript" src="http://www.yaronet.com/v31/defaut/styles.js"></script>
073:         <title>Error</title>
074:     </head>
075:     <body>
076:         <a name='haut'></a>
077:         <div id='bulle' style='position:absolute; visibility: hidden; z-index:3;'></div>
078:         <div id='mylinks' style='top:0;left:0;position:absolute;z-index:1;visibility: hidden; display:inline;'></div>
079:         <script language='JavaScript' type='text/javascript' src='http://www.yaronet.com/bulle.js'></script>
080:         <img src='http://www.yaronet.com/v31/defaut/null.gif' height='10' alt='' />
081:         <div class='error'>
082:             <h1>&lt;!\ Erreur</h1>
083:             <br />
084:             <br />
085:             <?php echo $msg; ?><br />
086:             <br />
087:             <a href='<?php echo $url; ?>'>
088:                 <img src='http://www.yaronet.com/v31/defaut/okw.gif' alt='OK' title='OK' />
089:             </a>
090:         </div>
091:     <br />
092:     </body>
093: </html>
094:    
095: <?php } ?>
096: <?php
097: 
098: if (!is_numeric ($_GET['s']) || !is_numeric ($_GET['p1']))
099: {
100:     header ('Location: index.php');
101: 
102:     exit (0);
103: }
104: 
105: /*
106: mysql_connect (...);
107: mysql_select_db (...);
108: */
109: 
110: if (!($handle = mysql_query ('SELECT forum, id, posts, title FROM topics WHERE id = \'' . $_GET['s'] . '\''))
111:  || !($topic = mysql_fetch_assoc ($handle)))
112:     showError ('Le sujet n�' . $_GET['s'] . ' n\'a pas �t� trouv�.');
113: else if ($_GET['p1'] < 0 || $_GET['p1'] >= $topic['posts'])
114:     showError ('Le num�ro du premier post � extraire est invalide.');
115: else if (!is_numeric ($_POST['p2']))
116: {
117:     $options = '';
118: 
119:     for ($i = min ($topic['posts'], $_GET['p1'] + 20); $i > $_GET['p1']; --$i)
120:         $options = '<option value="' . ($i - 1) . '">' . ($i - 1) . '</option>' . $options;
121: 
122:     showCadre ('S�parer un sujet', '
123:         <form action="?s=' . $_GET['s'] . '&amp;p1=' . $_GET['p1'] . '" method="post">
124:             <b>Topic � s�parer :</b> ' . htmlentities ($topic['title']) . '<br />
125:             <br />
126:             <b>Premier post :</b> ./' . $_GET['p1'] . '<br />
127:             <br />
128:             <b>Dernier post :</b> ./<select name="p2">' . $options . '</select><br />
129:             <br />
130:             <b>Nouveau titre : </b> <input maxlength="100" name="title" size="50" type="text" value="' . htmlentities ('Fork de "' . $topic['title'] . '"') . '" /><br />
131:             <br />
132:             <input type="submit" value="S�parer le topic" />
133:         </form>');
134: }
135: else if ($_POST['p2'] < $_GET['p1'] || $_POST['p2'] >= $topic['posts'])
136:     showError ('Le num�ro du dernier post � extraire est invalide.');
137: else
138: {
139:     $p1 = $_GET['p1'];
140:     $p2 = $_POST['p2'];
141: 
142:     // Cr�e le nouveau topic
143:     mysql_query ('INSERT INTO topics (forum, title) VALUES (\'' . $topic['forum'] . '\', \'' . mysql_real_escape_string ($_POST['title']) . '\'') or die;
144: 
145:     $id = mysql_insert_id ();
146: 
147:     // Affecte les posts fork�s au nouveau topic
148:     mysql_query ('UPDATE posts SET topic = \'' . $id . '\' WHERE topic = \'' . $topic['id'] . '\' AND num >= \'' . $p1 . '\' AND NUM <= \'' . $p2 . '\'');
149: 
150:     // Corrige la num�rotation des posts dans le nouveau topic
151:     mysql_query ('UPDATE posts SET num = (num - ' . $p1 . ') WHERE topic = \'' . $id . '\'');
152: 
153:     // Corrige la num�rotation des posts dans l'ancien topic
154:     mysql_query ('UPDATE posts SET num = (num - ' . ($p2 - $p1 + 1) . ') WHERE topic = \'' . $topic['id'] . '\' AND num > \'' . $p2 . '\'');
155: 
156:     // Corrige les infos sur le dernier post lu dans l'ancien topic
157:     mysql_query ('UPDATE last_post SET num = (num - ' . ($p2 - $p1 + 1) . ') WHERE topic = \'' . $topic['id'] . '\' AND num > \'' . $p2 . '\'');
158: 
159:     // FIXME: Post de Boo dans l'ancien topic pour pr�venir du fork et fournir un lien vers le nouveau topic ?
160: 
161:     showCadre ('OK !', '
162:         Topic s�par� !
163:         <div style="text-align: center;">
164:             <a href="javascript:window.close();">
165:                 <img title="OK" alt="OK" src="http://www.yaronet.com/v31/defaut/okw.gif"/>
166:             </a>
167:         </div>');
168: }
169: 
170: ?>