00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 if ( !defined ('ALLOWED')) die('Forbidden');
00030 require_once("class_itext.php");
00031 require_once("class_icheckbox.php");
00032 require_once ('class_extension.php');
00033
00034 $sa = (isset($_REQUEST['sa'])) ? $_REQUEST['sa'] : 'list';
00035 if (isset($_POST['upd']) &&
00036 isset($_POST['m']))
00037 {
00038 if (isset($_POST['name']) && isset($_POST['desc']))
00039 {
00040 extract($_POST);
00041 $cn = new Database();
00042 if (strlen(trim($name)) != 0
00043 && $cn->get_value('select count(*) from modeledef where ' .
00044 'mod_name=$1 and mod_id !=$2', array(trim($name), $m)) == 0
00045 )
00046 {
00047
00048 $cn->exec_sql("update modeledef set mod_name=$1, " .
00049 " mod_desc=$2 where mod_id=$3 ", array(trim($name), trim($desc), $m));
00050 }
00051 }
00052 $sa = "list";
00053 }
00054
00055 $cn = new Database();
00056
00057
00058
00059
00060 if (isset($_POST["FMOD_NAME"]))
00061 {
00062 $encoding = $cn->get_value("select encoding from pg_database where " .
00063 " datname='" . domaine . 'dossier' . sql_string($_POST["FMOD_DBID"]) . "'");
00064
00065 if ($encoding != 6)
00066 {
00067 alert('Désolé vous devez migrer ce modèle en unicode');
00068 echo '<span class="error">la base de donnée ' .
00069 domaine . 'mod' . $_POST["FMOD_DBID"] . " doit être migrée en unicode</span>";
00070 echo '<span class="error"> Pour le passer en unicode, faites-en un backup puis restaurez le fichier reçu</span>';
00071
00072 echo HtmlInput::button_anchor('Retour', 'admin_repo.php?action=dossier_mgt');
00073 exit();
00074 }
00075
00076 $mod_name = sql_string($_POST["FMOD_NAME"]);
00077 $mod_desc = sql_string($_POST["FMOD_DESC"]);
00078 if ($mod_name != null)
00079 {
00080 $Res = $cn->exec_sql("insert into modeledef(mod_name,mod_desc)
00081 values ('" . $mod_name . "'," .
00082 "'" . $mod_desc . "')");
00083
00084
00085 $l_id = $cn->get_current_seq('s_modid');
00086 if ($l_id != 0)
00087 {
00088 $Sql = sprintf("CREATE DATABASE %sMOD%d encoding='UTF8' TEMPLATE %sDOSSIER%s", domaine, $l_id, domaine, $_POST["FMOD_DBID"]);
00089 ob_start();
00090 if ($cn->exec_sql($Sql) == false)
00091 {
00092 ob_end_clean();
00093 echo "<h2 class=\"error\"> Base de donnée " . domaine . "dossier" . $_POST['FMOD_DBID'] . " est accèdée, déconnectez-vous en d'abord</h2>";
00094 $Res = $cn->exec_sql("delete from modeledef where mod_id=" . $l_id);
00095
00096 exit;
00097 }
00098 }
00099 }
00100
00101 $cn_mod = new Database($l_id, 'mod');
00102
00103
00104
00105 $Res = $cn_mod->exec_sql("select distinct jr_pj from jrn where jr_pj is not null ");
00106 if (Database::num_row($Res) != 0)
00107 {
00108 $a_lob = Database::fetch_all($Res);
00109 for ($i = 0; $i < count($a_lob); $i++)
00110 $cn_mod->lo_unlink($a_lob[$i]['jr_pj']);
00111 }
00112 Extension::clean($cn_mod);
00113 $Res = $cn_mod->exec_sql("truncate table centralized");
00114 $Res = $cn_mod->exec_sql("truncate table jrn cascade");
00115 $Res = $cn_mod->exec_sql("delete from del_jrn");
00116 $Res = $cn_mod->exec_sql("delete from del_jrnx");
00117 $Res = $cn_mod->exec_sql("truncate table jrnx cascade ");
00118 $Res = $cn_mod->exec_sql("delete from del_action");
00119 $Res = $cn_mod->exec_sql("delete from profile_user");
00120 $Res = $cn_mod->exec_sql("delete from jnt_letter");
00121
00122 $Res = $cn_mod->exec_sql('delete from operation_analytique');
00123
00124
00125 $Res = $cn_mod->exec_sql("update parm_periode set p_closed='f'");
00126 $Res = $cn_mod->exec_sql('delete from jrn_periode');
00127 $Res = $cn_mod->exec_sql(' insert into jrn_periode(p_id,jrn_def_id,status) ' .
00128 ' select p_id,jrn_def_id,\'OP\' ' .
00129 ' from ' .
00130 ' parm_periode cross join jrn_def');
00131
00132
00133 $a_seq = array('s_jrn', 's_jrn_op', 's_centralized', 's_stock_goods', 's_internal');
00134 foreach ($a_seq as $seq)
00135 {
00136 $sql = sprintf("select setval('%s',1,false)", $seq);
00137 $Res = $cn_mod->exec_sql($sql);
00138 }
00139 $sql = "select jrn_def_id from jrn_def ";
00140 $Res = $cn_mod->exec_sql($sql);
00141 $Max = Database::num_row($Res);
00142 for ($seq = 0; $seq < $Max; $seq++)
00143 {
00144 $row = Database::fetch_array($Res, $seq);
00145
00146 if ($cn_mod->exist_sequence('s_jrn_' . $row['jrn_def_id']) == false)
00147 {
00148 $cn_mod->create_sequence('s_jrn_' . $row['jrn_def_id']);
00149 }
00150
00151
00152 $sql = sprintf("select setval('s_jrn_%d',1,false)", $row['jrn_def_id']);
00153 $cn_mod->exec_sql($sql);
00154
00155 $sql = sprintf("select setval('s_jrn_pj%d',1,false)", $row['jrn_def_id']);
00156 $cn_mod->exec_sql($sql);
00157 $sql = sprintf("select setval('jnt_letter_jl_id_seq',1,false)");
00158 $cn_mod->exec_sql($sql);
00159 }
00160
00161
00162
00163 if (isset($_POST['DOC']))
00164 {
00165 $Res = $cn_mod->exec_sql("delete from action_gestion");
00166 $Res = $cn_mod->exec_sql("delete from document");
00167
00168
00169 $Res = $cn_mod->exec_sql("select distinct loid from pg_largeobject except select md_lob from document_modele");
00170 if (Database::num_row($Res) != 0)
00171 {
00172 $a_lob = Database::fetch_all($Res);
00173
00174 foreach ($a_lob as $lob)
00175 {
00176 $cn_mod->lo_unlink($lob['loid']);
00177 }
00178 }
00179 }
00180 if (isset($_POST['CARD']))
00181 {
00182 $Res = $cn_mod->exec_sql("delete from fiche_detail");
00183 $Res = $cn_mod->exec_sql("delete from fiche");
00184 $Res = $cn_mod->exec_sql("delete from action_gestion");
00185 $Res = $cn_mod->exec_sql("delete from document");
00186 $Res = $cn_mod->exec_sql("delete from document_modele");
00187 $Res = $cn_mod->exec_sql("delete from op_predef");
00188
00189
00190 $Res = $cn_mod->exec_sql("select distinct loid from pg_largeobject");
00191 if (Database::num_row($Res) != 0)
00192 {
00193 $a_lob = Database::fetch_all($Res);
00194 foreach ($a_lob as $lob)
00195 $cn_mod->lo_unlink($lob['loid']);
00196 }
00197 }
00198 if (isset($_POST['CANAL']))
00199 {
00200 $Res = $cn_mod->exec_sql('delete from poste_analytique');
00201 $Res = $cn_mod->exec_sql('delete from plan_analytique');
00202 }
00203
00204 }
00205
00206 require_once('class_sort_table.php');
00207 $url=$_SERVER['PHP_SELF']."?sa=list&action=".$_REQUEST['action'];
00208
00209 $header=new Sort_Table();
00210 $header->add("id",$url," order by mod_id asc"," order by mod_id desc","ia","id");
00211 $header->add("Nom",$url," order by mod_name asc"," order by mod_name desc","na","nd");
00212 $header->add("Description",$url," order by mod_desc asc"," order by mod_desc desc","da","dd");
00213
00214 $ord=(isset($_REQUEST['ord']))?$_REQUEST['ord']:'na';
00215 $sql_order=$header->get_sql_order($ord);
00216
00217 $Res = $cn->exec_sql("select mod_id,mod_name,mod_desc from
00218 modeledef $sql_order");
00219
00220 $count = Database::num_row($Res);
00221 echo '<div class="content" style="width:80%;margin-left:10%">';
00222 echo "<H2>Modèles</H2>";
00223 if ($sa == 'list')
00224 {
00225 if ($count == 0)
00226 {
00227 echo "Aucun modèle disponible";
00228 }
00229 else
00230 {
00231
00232 echo '<p>';
00233 echo HtmlInput::button_anchor('Rafraîchir', 'admin_repo.php?action=modele_mgt');
00234 echo HtmlInput::button_anchor('Ajouter', 'admin_repo.php?action=modele_mgt&sa=add');
00235 echo '</p>';
00236 echo '<span style="display:block;margin-top:10">';
00237 echo _('Filtre').HtmlInput::infobulle(23);
00238 echo HtmlInput::filter_table("t_modele", "0,1,2","1");
00239 echo '</span>';
00240 echo '<table id="t_modele" class="table_large" style="border-spacing:10;border-collapse:separate" >';
00241 echo "<TR>".
00242 "<TH>".$header->get_header(0)."</TH>" .
00243 "<TH>".$header->get_header(1)."</TH>" .
00244 "<TH>".$header->get_header(2)."</TH>" .
00245 "<th> </th>" .
00246 "<th> </th>" .
00247 "</TR>";
00248
00249 for ($i = 0; $i < $count; $i++)
00250 {
00251 $mod = Database::fetch_array($Res, $i);
00252 $class = ($i % 2 == 0) ? "odd" : "even";
00253 printf('<TR class="' . $class . '" style="vertical-align:top">' .
00254 '<TD>%d </td><td><b> %s</b> </TD>' .
00255 '<TD><I> %s </I></TD>' .
00256 '<td> ' .
00257 HtmlInput::button_anchor('Effacer', '?action=modele_mgt&sa=del&m=' . $mod['mod_id']) . '</td>' .
00258 '</td>' .
00259 '<td>' . HtmlInput::button_anchor('Modifie', '?action=modele_mgt&sa=mod&m=' . $mod['mod_id']) . '</td>' .
00260 '</td>' .
00261 '<td>' . HtmlInput::button_anchor('Backup', 'backup.php?action=backup&sa=b&t=m&d='
00262 . $mod['mod_id']) . '</td>' .
00263 '</TR>', $mod['mod_id'], $mod['mod_name'], $mod['mod_desc']);
00264 }
00265 echo "</table>";
00266 }
00267 echo "<p class=\"notice\">Si vous voulez récupérer toutes les adaptations d'un dossier " .
00268 " dans un autre dossier, vous pouvez en faire un modèle." .
00269 " Seules les fiches, la structure des journaux, les périodes,... seront reprises " .
00270 "et aucune donnée du dossier sur lequel le dossier est basé. Les données contenues dans les extensions ne sont pas effacées</p>";
00271 }
00272
00273
00274
00275 if ($sa == 'add')
00276 {
00277
00278 $Res = $cn->exec_sql("select dos_id, dos_name,dos_description from ac_dossier
00279 order by dos_name");
00280 $count = Database::num_row($Res);
00281 $available = "";
00282 if ($count != 0)
00283 {
00284 $available = '<SELECT NAME="FMOD_DBID">';
00285 for ($i = 0; $i < $count; $i++)
00286 {
00287 $db = Database::fetch_array($Res, $i);
00288 $available.='<OPTION VALUE="' . $db['dos_id'] . '">' . $db['dos_name'] . ':' . $db['dos_description'];
00289 }
00290 $available.='</SELECT>';
00291 }
00292 ?>
00293 <form action="admin_repo.php?action=modele_mgt" METHOD="post">
00294 <TABLE>
00295 <tr>
00296 <td>Nom </TD>
00297 <TD><INPUT TYPE="TEXT" VALUE="" NAME="FMOD_NAME"></TD>
00298 </TR>
00299 <TR>
00300 <TD>Description</TD>
00301 <TD><TEXTAREA ROWS="2" COLS="60" NAME="FMOD_DESC"></Textarea></TD>
00302 </TR>
00303 <TR>
00304 <TD> Basé
00305 sur </TD>
00306 <TD> <?php echo $available?></TD>
00307 </TR>
00308 <TR>
00309 <TD>Nettoyage des Documents et courriers (ce qui n'effacera pas les modèles de documents)</TD>
00310 <TD> <input type="checkbox" name="DOC"></TD></TR>
00311 <TR>
00312 <TD>Nettoyage de toutes les fiches (ce qui effacera client,
00313 opérations prédéfinies fournisseurs modèles de documents et documents)</TD>
00314 <TD> <input type="checkbox" name="CARD"></TD>
00315 </TR>
00316
00317 <TR>
00318 <TD>Nettoyage de la comptabilité analytique : effacement des plans et des postes, les opérations
00319 sont de toute façon effacées </TD>
00320 <TD> <input type="checkbox" name="CANAL"></TD>
00321 </TR>
00322 </TABLE>
00323
00324 '
00325
00326 <INPUT TYPE="SUBMIT" class="button" VALUE="Ajout d'un modele">
00327 <?php
00328 echo HtmlInput::button_anchor('Retour', '?action=modele_mgt');
00329 ?>
00330
00331 </form>
00332 <?php
00333 }
00334
00335
00336 if ($sa == 'mod' && isset($_GET['m']))
00337 {
00338 $cn = new Database();
00339
00340 echo '<form method="post">';
00341 $name = $cn->get_value(
00342 "select mod_name from modeledef where " .
00343 " mod_id=$1", array($_GET['m']));
00344
00345 $desc = $cn->get_value(
00346 "select mod_desc from modeledef where " .
00347 " mod_id=$1", array($_GET['m']));
00348 $wText = new IText();
00349 echo 'Nom : ' . $wText->input('name', $name);
00350 $wDesc = new ITextArea();
00351 $wDesc->heigh = 5;
00352 echo '<br>Description :<br>';
00353 echo $wDesc->input('desc', $desc);
00354 echo HtmlInput::hidden('m', $_GET['m']);
00355 echo HtmlInput::hidden('action', 'modele_mgt');
00356 echo '<br>';
00357 echo HtmlInput::button_anchor('Retour', '?action=modele_mgt');
00358 echo HtmlInput::submit('upd', 'Modifie');
00359 echo '</form>';
00360 }
00361
00362
00363
00364
00365 if ($sa == 'del')
00366 {
00367 $cn = new Database();
00368 $name = $cn->get_value('select mod_name from modeledef where mod_id=$1', array($_REQUEST['m']));
00369 echo '<form method="post">';
00370 echo HtmlInput::hidden('d', $_REQUEST['m']);
00371 echo HtmlInput::hidden('sa', 'remove');
00372 echo '<h2 class="error">Etes vous sure et certain de vouloir effacer ' . $name . ' ???</h2>';
00373 $confirm = new ICheckBox();
00374 $confirm->name = "p_confirm";
00375 echo 'Cochez la case si vous êtes sûr de vouloir effacer ce modèle';
00376 echo $confirm->input();
00377 echo HtmlInput::submit('remove', 'Effacer');
00378 echo HtmlInput::button_anchor('Retour', '?action=modele_mgt');
00379 echo '</form>';
00380 }
00381
00382
00383
00384 if ($sa == 'remove')
00385 {
00386 if (!isset($_REQUEST['p_confirm']))
00387 {
00388 echo('Désolé, vous n\'avez pas coché la case');
00389 echo HtmlInput::button_anchor('Retour', '?action=modele_mgt');
00390 exit();
00391 }
00392
00393 $cn = new Database();
00394 $msg = "dossier";
00395 $name = $cn->get_value("select mod_name from modeledef where mod_id=$1", array($_REQUEST['m']));
00396 if (strlen(trim($name)) == 0)
00397 {
00398 echo "<h2 class=\"error\"> $msg inexistant</h2>";
00399 exit();
00400 }
00401 $sql = "drop database " . domaine . "mod" . sql_string($_REQUEST['m']);
00402 ob_start();
00403 if ($cn->exec_sql($sql) == false)
00404 {
00405 ob_end_clean();
00406
00407 echo "<h2 class=\"error\">
00408 Base de donnée " . domaine . "mod" . $_REQUEST['m'] . " est accèdée, déconnectez-vous d'abord</h2>";
00409 exit;
00410 }
00411 ob_flush();
00412 $sql = "delete from modeledef where mod_id=$1";
00413 $cn->exec_sql($sql, array($_REQUEST['m']));
00414 print '<h2 class="error">';
00415 print "Le modèle $name est effacé</H2>";
00416 echo HtmlInput::button_anchor('Retour', '?action=modele_mgt');
00417 }
00418 echo '</div>';
00419 ?>
00420