noalyss  Version-6.7.2
 All Data Structures Namespaces Files Functions Variables Enumerations
modele.inc.php
Go to the documentation of this file.
00001 <?php
00002 /*
00003  *   This file is part of NOALYSS.
00004  *
00005  *   NOALYSS is free software; you can redistribute it and/or modify
00006  *   it under the terms of the GNU General Public License as published by
00007  *   the Free Software Foundation; either version 2 of the License, or
00008  *   (at your option) any later version.
00009  *
00010  *   NOALYSS is distributed in the hope that it will be useful,
00011  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  *   GNU General Public License for more details.
00014  *
00015  *   You should have received a copy of the GNU General Public License
00016  *   along with NOALYSS; if not, write to the Free Software
00017  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018  */
00019 
00020 // Copyright Author Dany De Bontridder danydb@aevalys.eu
00021 
00022 /**
00023  * \file
00024  *
00025  *
00026  * \brief concerne only the template
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 // IF FMOD_NAME is posted then must add a template
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                 // get the mod_id
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&eacute;e " . domaine . "dossier" . $_POST['FMOD_DBID'] . "  est accèd&eacute;e, d&eacute;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         }// if $mod_name != null
00100 
00101         $cn_mod = new Database($l_id, 'mod');
00102 
00103         // Clean some tables
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         //      Reset the closed periode
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         // Reset Sequence
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                 /* if seq doesn't exist create it */
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         // Cleaning Follow_Up
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                 // Remove lob file
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                         //var_dump($a_lob);
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                 // Remove lob file
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 // Show all available templates
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&icirc;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                 }// for
00265                 echo "</table>";
00266         }// if count = 0
00267         echo "<p class=\"notice\">Si vous voulez r&eacute;cup&eacute;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&eacute;riodes,... seront reprises " .
00270         "et aucune donn&eacute;e du dossier sur lequel le dossier est bas&eacute;. Les données contenues dans les extensions ne sont pas effacées</p>";
00271 }
00272 //---------------------------------------------------------------------------
00273 // Add a template
00274 //---------------------------------------------------------------------------
00275 if ($sa == 'add')
00276 {
00277 // Show All available folder
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                 }//for i
00290                 $available.='</SELECT>';
00291         }//if count !=0
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&eacute;
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&eacute;rations pr&eacute;d&eacute;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&eacute; analytique : effacement des plans et des postes, les op&eacute;rations
00319         sont de toute fa&ccedil;on effac&eacute;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         // Modify
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         // action = del
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         // action = del
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 
 All Data Structures Namespaces Files Functions Variables Enumerations