Go to the documentation of this file.
29 if ( !defined (
'ALLOWED')) die(
'Forbidden');
32 if (isset(
$_POST[
'upd']) &&
37 $mod_id=
$http->post(
"m", 0);
39 if (trim(
$name) !=
"" && $mod_id != 0 &&
isNumber($mod_id)==1)
42 $cn->exec_sql(
"update modeledef set mod_name=$1, " .
43 " mod_desc=$2 where mod_id=$3 ",
54 if (isset(
$_POST[
"FMOD_NAME"]))
56 $encoding =
$cn->get_value(
"select encoding from pg_database where " .
57 " datname=$1",array(domaine .
'dossier' .
$fmod_dbid));
61 alert(_(
'Désolé vous devez migrer ce modèle en unicode'));
62 echo
'<span class="error">';
63 printf (_(
'la base de donnée %smod%s doit être migrée en unicode'),domaine,
$fmod_dbid);
65 echo
'<span class="error"> '._(
"Pour le passer en unicode, faites-en un backup puis restaurez le fichier reçu").
'</span>';
71 $mod_name =
$http->post(
"FMOD_NAME");
72 $mod_desc =
$http->post(
"FMOD_DESC");
73 if ($mod_name !=
null || trim ($mod_name) !=
"")
75 $Res =
$cn->exec_sql(
"insert into modeledef(mod_name,mod_desc)
76 values ($1,$2)",array($mod_name,$mod_desc));
79 $l_id =
$cn->get_current_seq(
's_modid');
82 $Sql = sprintf(
"CREATE DATABASE %sMOD%d encoding='UTF8' TEMPLATE %sDOSSIER%s", domaine, $l_id, domaine,
$_POST[
"FMOD_DBID"]);
84 if (
$cn->exec_sql($Sql) ==
false)
87 echo
"<h2 class=\"error\">";
88 printf(_(
'Base de donnée %sdossier%d" est accèdée, déconnectez-vous en d\'abord'),domaine,
$fmod_dbid);
90 $Res =
$cn->exec_sql(
"delete from modeledef where mod_id=$1",array($l_id));
98 alert(_(
'Le nom est vide'));
101 $cn_mod =
new Database($l_id,
'mod');
105 $Res = $cn_mod->exec_sql(
"select distinct jr_pj from jrn where jr_pj is not null ");
109 $nb_lob=($a_lob == FALSE)?0:count($a_lob);
110 for (
$i = 0;
$i < $nb_lob;
$i++)
111 $cn_mod->lo_unlink($a_lob[
$i][
'jr_pj']);
113 $Res = $cn_mod->exec_sql(
"truncate table centralized");
114 $Res = $cn_mod->exec_sql(
"truncate table jrn cascade");
115 $Res = $cn_mod->exec_sql(
"delete from del_jrn");
116 $Res = $cn_mod->exec_sql(
"delete from del_jrnx");
117 $Res = $cn_mod->exec_sql(
"truncate table jrnx cascade ");
118 $Res = $cn_mod->exec_sql(
"truncate table todo_list cascade ");
119 $Res = $cn_mod->exec_sql(
"delete from del_action");
120 $Res = $cn_mod->exec_sql(
"delete from profile_user");
121 $Res = $cn_mod->exec_sql(
"delete from jnt_letter");
123 $Res = $cn_mod->exec_sql(
'delete from operation_analytique');
125 $Res = $cn_mod->exec_sql(
'delete from user_sec_act');
126 $Res = $cn_mod->exec_sql(
'delete from user_sec_action_profile');
127 $Res = $cn_mod->exec_sql(
'delete from user_local_pref');
128 $Res = $cn_mod->exec_sql(
'delete from user_sec_jrn');
129 $Res = $cn_mod->exec_sql(
'delete from bookmark');
132 $Res = $cn_mod->exec_sql(
"update parm_periode set p_closed='f'");
133 $Res = $cn_mod->exec_sql(
'delete from jrn_periode');
134 $Res = $cn_mod->exec_sql(
' insert into jrn_periode(p_id,jrn_def_id,status) ' .
135 ' select p_id,jrn_def_id,\'OP\' ' .
137 ' parm_periode cross join jrn_def');
140 $a_seq = array(
's_jrn',
's_jrn_op',
's_centralized',
's_stock_goods',
's_internal');
141 foreach ($a_seq as
$seq)
143 $sql = sprintf(
"select setval('%s',1,false)",
$seq);
146 $sql =
"select jrn_def_id from jrn_def ";
153 if ($cn_mod->exist_sequence(
's_jrn_' .
$row[
'jrn_def_id']) ==
false)
155 $cn_mod->create_sequence(
's_jrn_' .
$row[
'jrn_def_id']);
159 $sql = sprintf(
"select setval('s_jrn_%d',1,false)",
$row[
'jrn_def_id']);
160 $cn_mod->exec_sql(
$sql);
162 $sql = sprintf(
"select setval('s_jrn_pj%d',1,false)",
$row[
'jrn_def_id']);
163 $cn_mod->exec_sql(
$sql);
164 $sql = sprintf(
"select setval('jnt_letter_jl_id_seq',1,false)");
165 $cn_mod->exec_sql(
$sql);
172 $Res = $cn_mod->exec_sql(
"delete from action_gestion_related");
173 $Res = $cn_mod->exec_sql(
"delete from action_gestion_comment");
174 $Res = $cn_mod->exec_sql(
"delete from action_gestion_related");
175 $Res = $cn_mod->exec_sql(
"delete from action_person");
176 $Res = $cn_mod->exec_sql(
"delete from action_gestion");
177 $Res = $cn_mod->exec_sql(
"delete from tags");
178 $Res = $cn_mod->exec_sql(
"delete from action_tags");
179 $Res = $cn_mod->exec_sql(
"delete from document");
182 $a_seq=$cn_mod->get_array(
" select sequence_name "
183 .
" from information_schema.sequences "
184 .
"where sequence_name like 'seq_doc_type%'"
186 $n_seq=count($a_seq);
187 for (
$i = 0;
$i < $n_seq;
$i++) {
188 $cn_mod->alter_seq($a_seq[
$i][
'sequence_name'], 1);
191 if (isset(
$_POST[
'CARD']))
195 $a_schema=$cn_mod->get_array(
"
196 select nspname from pg_namespace
198 nspname not like 'pg_%'
199 and nspname in ('amortissement')
201 $nb_schema=count($a_schema);
202 for (
$i=0;
$i < $nb_schema;
$i++)
204 $cn_mod->exec_sql(
" drop schema ".$a_schema[
$i][
'nspname'].
" cascade");
206 $Res = $cn_mod->exec_sql(
"delete from action_gestion");
207 $Res = $cn_mod->exec_sql(
"delete from fiche_detail");
208 $Res = $cn_mod->exec_sql(
"delete from fiche");
209 $Res = $cn_mod->exec_sql(
"delete from document");
210 $Res = $cn_mod->exec_sql(
"delete from document_modele");
211 $Res = $cn_mod->exec_sql(
"delete from op_predef");
215 if (isset(
$_POST[
'CANAL']))
217 $Res = $cn_mod->exec_sql(
'delete from poste_analytique');
218 $Res = $cn_mod->exec_sql(
'delete from plan_analytique');
220 if ( isset (
$_POST[
'PLUGIN'])) {
221 $a_schema=$cn_mod->get_array(
"
222 select nspname from pg_namespace
224 nspname not like 'pg_%'
225 and nspname not in ('information_schema','public','comptaproc')
227 $nb_schema=count($a_schema);
228 for (
$i=0;
$i < $nb_schema;
$i++)
230 $cn_mod->exec_sql(
" drop schema ".$a_schema[
$i][
'nspname'].
" cascade");
234 $cn_mod->clean_orphan_lob();
238 $url=$_SERVER[
'PHP_SELF'].
"?".http_build_query(array(
"sa"=>
"list",
"action"=>
$http->request(
'action')));
241 $header->add(_(
"id"),
$url,
" order by mod_id asc",
" order by mod_id desc",
"ia",
"id");
242 $header->add(_(
"Nom"),
$url,
" order by mod_name asc",
" order by mod_name desc",
"na",
"nd");
243 $header->add(_(
"Description"),
$url,
" order by mod_desc asc",
" order by mod_desc desc",
"da",
"dd");
248 $Res =
$cn->exec_sql(
"select mod_id,mod_name,mod_desc from
249 modeledef $sql_order");
252 echo
'<div class="content">';
253 echo
"<H2>"._(
'Modèles').
"</H2>";
257 echo
HtmlInput::button(_(
'Ajouter'),_(
'Ajouter un modèle'),
" onclick=\$('folder_add_id').show()");
260 echo
"<p class=\"notice\">" . _(
"Si vous voulez récupérer toutes les adaptations d'un dossier " .
261 " dans un autre dossier, vous pouvez en faire un modèle." .
262 " Seules les fiches, la structure des journaux, les périodes,... seront reprises " .
263 "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>";
264 echo
h2(_(
"Modèles locaux"));
267 echo _(
"Aucun modèle disponible");
272 echo
'<span style="display:block;margin-top:10">';
273 echo _(
'Filtre').Icon_Action::infobulle(23);
276 echo
'<table id="t_modele" class="table_large" style="border-spacing:10;border-collapse:separate" >';
278 "<TH>".$header->get_header(0).
"</TH>" .
279 "<TH>".$header->get_header(1).
"</TH>" .
280 "<TH>".$header->get_header(2).
"</TH>" .
281 "<TH>"._(
'Nom base de données').
"</TH>" .
289 $class = (
$i % 2 == 0) ?
"odd" :
"even";
296 $mod_status=_(
'Inexistant');
299 $mod_cn=
new Database($mod[
'mod_id'],
'mod');
300 if ( $mod_cn->exist_table(
"version")==0) {
302 $mod_status=_(
'Invalide');
305 printf(
'<TR class="' .
$class .
'" style="vertical-align:top">' .
306 '<TD>%d </td><td><b> %s</b> </TD>' .
307 '<TD><I> %s </I></TD>' .
311 HtmlInput::anchor(_(
'Effacer'),
'?action=modele_mgt&sa=del&m=' . $mod[
'mod_id'],
" onclick = \"modele_drop('{$mod['mod_id']}') \"") .
'</td>' .
313 '<td>' .
HtmlInput::anchor(_(
'Modifie'),
'?action=modele_mgt&sa=mod&m=' . $mod[
'mod_id'],
" onclick = \"modele_modify('{$mod['mod_id']}') \"") .
'</td>' .
316 . $mod[
'mod_id']) .
'</td>' .
317 '</TR>', $mod[
'mod_id'], $mod[
'mod_name'], $mod[
'mod_desc']);
321 echo
h2(_(
"Modèles disponibles dans le dépôt"));
323 require NOALYSS_INCLUDE .
"/upgrade-template.php";
327 <div
id=
"folder_add_id" class=
"inner_box" style=
"display:none;top:50px">
335 $Res =
$cn->exec_sql(
"select dos_id, dos_name,dos_description from ac_dossier
341 $available =
'<SELECT NAME="FMOD_DBID">';
345 $available.=
'<OPTION VALUE="' . $db[
'dos_id'] .
'">' . $db[
'dos_name'] .
':' . $db[
'dos_description'];
347 $available.=
'</SELECT>';
350 <form action=
"admin-noalyss.php?action=modele_mgt" METHOD=
"post" onsubmit=
"waiting_box();return true;">
353 <
td><?php echo _(
'Nom')?> </TD>
354 <TD><INPUT TYPE=
"TEXT" class=
"input_text" VALUE=
"" NAME=
"FMOD_NAME"></TD>
357 <TD><?php echo _(
'Description')?></TD>
358 <TD><TEXTAREA ROWS=
"2" class=
"input_text" COLS=
"60" NAME=
"FMOD_DESC"></Textarea></TD>
361 <TD> <?php echo _(
"Basé sur")?> </TD>
362 <TD> <?php echo $available?></TD>
365 <ol
style=
"list-style: none">
367 <input
type=
"checkbox" class=
"input_text" name=
"DOC">
368 <?php echo _(
"Nettoyage des Documents et courriers (ce qui n'effacera pas les modèles de documents)")?>
371 <input
type=
"checkbox" class=
"input_text" name=
"CARD">
372 <?php echo _(
"Nettoyage de toutes les fiches (ce qui effacera client,
373 opérations prédéfinies fournisseurs modèles de documents et documents)")?>
376 <input
class=
"input_text" type=
"checkbox" name=
"CANAL">
377 <?php echo _(
"Nettoyage de la comptabilité analytique : effacement des plans et des postes, les opérations
378 sont de toute façon effacées")?>
381 <input
class=
"input_text" type=
"checkbox" name=
"PLUGIN">
382 <?php echo _(
"Effacement de toutes les données des plugins")?>
385 <INPUT TYPE=
"SUBMIT" class=
"button" VALUE=
"<?php echo _("Ajout d
'un modele")?>" >
390 //---------------------------------------------------------------------------
392 //---------------------------------------------------------------------------
395 if (!isset($_REQUEST['p_confirm
']))
397 echo _('Désolé, vous
n\
'avez pas coché la case');
402 $mod_id=
$http->request(
'm',
"number");
407 echo _(
'Donnée invalide');
412 $name =
$cn->get_value(
"select mod_name from modeledef where mod_id=$1", array($mod_id));
413 if (strlen(trim(
$name)) == 0)
415 echo
"<h2 class=\"error\"> $msg inexistant</h2>";
419 if (
$cn->exist_database(domaine.
'mod'.$mod_id) == 1)
423 if (
$cn->exec_sql(
$sql) ==
false)
427 echo
"<h2 class=\"error\">";
428 printf (_(
"Base de donnée %s mod %s est accèdée, déconnectez-vous d'abord"),domaine,$mod_id )
434 $sql =
"delete from modeledef where mod_id=$1";
435 $cn->exec_sql(
$sql, array($mod_id));
437 printf (_(
"Le modèle %s est effacé").
"</H2>",
$name );
static fetch_all($ret)
wrapper for the function pg_fetch_all
if(isset($_POST['upd']) &&isset($_POST['m'])) $cn
if(strlen(trim($name))==0) if( $cn->exist_database(domaine. 'mod'. $mod_id)==1) $sql
tr($p_string, $p_extra='')
if(isset($_POST["FMOD_NAME"])) $url
static fetch_array($ret, $p_indice=0)
wrapper for the function pg_fetch_array
sql_string($p_string)
Fix the problem with the quote char for the database.
Description of class_syn_sort_table.
h2($p_string, $p_class="", $raw="")
static num_row($ret)
wrapper for the function pg_NumRows
for($e=0; $e< count($afiche); $e++) exit
contains the class for connecting to Noalyss
alert($p_msg, $buffer=false)
alert in javascript
td($p_string='', $p_extra='')
surround the string with td