29if ( !defined (
'ALLOWED')) die(
'Forbidden');
38 $mod_id=
$http->post(
"m",
"number",0);
40 if (trim(
$name) !=
"" && $mod_id != 0 &&
isNumber($mod_id)==1)
43 $cn->exec_sql(
"update modeledef set mod_name=$1, " .
44 " mod_desc=$2 where mod_id=$3 ",
55if (isset(
$_POST[
"FMOD_NAME"]))
57 $encoding =
$cn->get_value(
"select encoding from pg_database where " .
62 alert(
_(
'Désolé vous devez migrer ce modèle en unicode'));
63 echo
'<span class="error">';
64 printf (
_(
'la base de donnée %smod%s doit être migrée en unicode'),
domaine,
$fmod_dbid);
66 echo
'<span class="error"> '._(
"Pour le passer en unicode, faites-en un backup puis restaurez le fichier reçu").
'</span>';
68 echo HtmlInput::button_anchor(
_(
'Retour'),
'admin-noalyss.php?action=dossier_mgt');
72 $mod_name =
$http->post(
"FMOD_NAME");
73 $mod_desc =
$http->post(
"FMOD_DESC");
74 if ($mod_name !=
null || trim ($mod_name) !=
"")
76 $Res =
$cn->exec_sql(
"insert into modeledef(mod_name,mod_desc)
77 values ($1,$2)",array($mod_name,$mod_desc));
80 $l_id =
$cn->get_current_seq(
's_modid');
83 $Sql = sprintf(
"CREATE DATABASE %sMOD%d encoding='UTF8' TEMPLATE %sDOSSIER%s",
domaine, $l_id,
domaine,
$_POST[
"FMOD_DBID"]);
85 if (
$cn->exec_sql($Sql) ==
false)
88 echo
"<h2 class=\"error\">";
89 printf(
_(
'Base de donnée %sdossier%d" est accèdée, déconnectez-vous en d\'abord'),
domaine,
$fmod_dbid);
91 $Res =
$cn->exec_sql(
"delete from modeledef where mod_id=$1",array($l_id));
99 alert(
_(
'Le nom est vide'));
102 $cn_mod =
new Database($l_id,
'mod');
106 $Res = $cn_mod->exec_sql(
"select distinct jr_pj from jrn where jr_pj is not null ");
110 $nb_lob=($a_lob == FALSE)?0:count($a_lob);
111 for (
$i = 0;
$i < $nb_lob;
$i++)
112 $cn_mod->lo_unlink($a_lob[
$i][
'jr_pj']);
114 $Res = $cn_mod->exec_sql(
"truncate table tool_uos");
115 $Res = $cn_mod->exec_sql(
"truncate table user_filter");
116 $Res = $cn_mod->exec_sql(
"truncate table user_widget");
117 $Res = $cn_mod->exec_sql(
"truncate table centralized");
118 $Res = $cn_mod->exec_sql(
"truncate table stock_change cascade");
119 $Res = $cn_mod->exec_sql(
"truncate table parm_periode cascade");
120 $Res = $cn_mod->exec_sql(
"truncate table operation_exercice cascade");
121 $Res = $cn_mod->exec_sql(
"truncate table jrn cascade");
122 $Res = $cn_mod->exec_sql(
"truncate table forecast cascade");
123 $Res = $cn_mod->exec_sql(
"delete from del_jrn");
124 $Res = $cn_mod->exec_sql(
"delete from del_jrnx");
125 $Res = $cn_mod->exec_sql(
"truncate table jrnx cascade ");
126 $Res = $cn_mod->exec_sql(
"truncate table todo_list cascade ");
127 $Res = $cn_mod->exec_sql(
"delete from del_action");
128 $Res = $cn_mod->exec_sql(
"delete from profile_user");
129 $Res = $cn_mod->exec_sql(
"delete from jnt_letter");
131 $Res = $cn_mod->exec_sql(
'delete from operation_analytique');
133 $Res = $cn_mod->exec_sql(
'delete from user_sec_act');
134 $Res = $cn_mod->exec_sql(
'delete from user_sec_action_profile');
135 $Res = $cn_mod->exec_sql(
'delete from user_local_pref');
136 $Res = $cn_mod->exec_sql(
'delete from user_sec_jrn');
137 $Res = $cn_mod->exec_sql(
'delete from bookmark');
140 $Res = $cn_mod->exec_sql(
"update parm_periode set p_closed='f'");
141 $Res = $cn_mod->exec_sql(
'delete from jrn_periode');
142 $Res = $cn_mod->exec_sql(
' insert into jrn_periode(p_id,jrn_def_id,status) ' .
143 ' select p_id,jrn_def_id,\'OP\' ' .
145 ' parm_periode cross join jrn_def');
147 $Res= $cn_mod->exec_sql(
'update "parameter" set pr_value=null');
148 $Res= $cn_mod->exec_sql(
'update "parameter_extra" set pe_value=null');
149 $Res= $cn_mod->exec_sql(
'update parm_mail_server set pe_value=null');
154 $a_seq = array(
's_jrn',
's_jrn_op',
's_centralized',
's_stock_goods',
's_internal');
155 foreach ($a_seq as
$seq)
157 $sql = sprintf(
"select setval('%s',1,false)",
$seq);
160 $sql =
"select jrn_def_id from jrn_def ";
167 if ($cn_mod->exist_sequence(
's_jrn_' .
$row[
'jrn_def_id']) ==
false)
169 $cn_mod->create_sequence(
's_jrn_' .
$row[
'jrn_def_id']);
173 $sql = sprintf(
"select setval('s_jrn_%d',1,false)",
$row[
'jrn_def_id']);
174 $cn_mod->exec_sql(
$sql);
176 $sql = sprintf(
"select setval('s_jrn_pj%d',1,false)",
$row[
'jrn_def_id']);
177 $cn_mod->exec_sql(
$sql);
178 $sql = sprintf(
"select setval('jnt_letter_jl_id_seq',1,false)");
179 $cn_mod->exec_sql(
$sql);
186 $Res = $cn_mod->exec_sql(
"delete from action_gestion_related");
187 $Res = $cn_mod->exec_sql(
"delete from action_gestion_filter");
188 $Res = $cn_mod->exec_sql(
"delete from action_gestion_comment");
189 $Res = $cn_mod->exec_sql(
"delete from action_gestion_related");
190 $Res = $cn_mod->exec_sql(
"delete from action_person");
191 $Res = $cn_mod->exec_sql(
"delete from action_gestion");
192 $Res = $cn_mod->exec_sql(
"delete from tags");
193 $Res = $cn_mod->exec_sql(
"delete from tag_group");
194 $Res = $cn_mod->exec_sql(
"delete from action_tags");
195 $Res = $cn_mod->exec_sql(
"delete from document");
198 $a_seq=$cn_mod->get_array(
" select sequence_name "
199 .
" from information_schema.sequences "
200 .
"where sequence_name like 'seq_doc_type%'"
202 $n_seq=count($a_seq);
203 for (
$i = 0;
$i < $n_seq;
$i++) {
204 $cn_mod->alter_seq($a_seq[
$i][
'sequence_name'], 1);
207 if (isset(
$_POST[
'CARD']))
211 $a_schema=$cn_mod->get_array(
"
212 select nspname from pg_namespace
214 nspname not like 'pg_%'
215 and nspname in ('amortissement')
217 $nb_schema=count($a_schema);
218 for (
$i=0;
$i < $nb_schema;
$i++)
220 $cn_mod->exec_sql(
" drop schema ".$a_schema[
$i][
'nspname'].
" cascade");
222 $Res = $cn_mod->exec_sql(
"delete from action_gestion");
223 $Res = $cn_mod->exec_sql(
"delete from fiche_detail");
224 $Res = $cn_mod->exec_sql(
"delete from fiche");
225 $Res = $cn_mod->exec_sql(
"delete from document");
226 $Res = $cn_mod->exec_sql(
"delete from document_modele");
227 $Res = $cn_mod->exec_sql(
"delete from op_predef");
228 $Res = $cn_mod->exec_sql(
"delete from op_predef_detail");
232 if (isset(
$_POST[
'CANAL']))
234 $Res = $cn_mod->exec_sql(
'delete from poste_analytique');
235 $Res = $cn_mod->exec_sql(
'delete from plan_analytique');
236 $Res = $cn_mod->exec_sql(
'truncate key_distribution cascade');
238 if ( isset (
$_POST[
'PLUGIN'])) {
239 $a_schema=$cn_mod->get_array(
"
240 select nspname from pg_namespace
242 nspname not like 'pg_%'
243 and nspname not in ('information_schema','public','comptaproc')
245 $nb_schema=count($a_schema);
246 for (
$i=0;
$i < $nb_schema;
$i++)
248 $cn_mod->exec_sql(
" drop schema ".$a_schema[
$i][
'nspname'].
" cascade");
250 $Res = $cn_mod->exec_sql(
"delete from profile_mobile where me_code not in ('AGENDA','LOGOUT')");
251 $Res = $cn_mod->exec_sql(
"delete from menu_ref where me_type='PL'");
252 $Res = $cn_mod->exec_sql(
"delete from extension ");
255 $cn_mod->clean_orphan_lob();
259$url=$_SERVER[
'PHP_SELF'].
"?".http_build_query(array(
"sa"=>
"list",
"action"=>
$http->request(
'action')));
262$header->add(
_(
"id"),
$url,
" order by mod_id asc",
" order by mod_id desc",
"ia",
"id");
263$header->add(
_(
"Nom"),
$url,
" order by mod_name asc",
" order by mod_name desc",
"na",
"nd");
264$header->add(
_(
"Description"),
$url,
" order by mod_desc asc",
" order by mod_desc desc",
"da",
"dd");
269$Res =
$cn->exec_sql(
"select mod_id,mod_name,mod_desc from
270 modeledef $sql_order");
273echo
'<div class="content">';
274echo
'<h2 class="">'._(
'Modèles').
"</H2>";
278 echo HtmlInput::button(
_(
'Ajouter'),
_(
'Ajouter un modèle'),
" onclick=\$('folder_add_id').show()");
281 echo
"<p class=\"notice\">" .
_(
"Si vous voulez récupérer toutes les adaptations d'un dossier " .
282 " dans un autre dossier, vous pouvez en faire un modèle." .
283 " Seules les fiches, la structure des journaux, les périodes,... seront reprises " .
284 "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>";
285 echo
h2(
_(
"Modèles locaux"),
'class="h-section"');
288 echo
_(
"Aucun modèle disponible");
293 echo
'<span style="display:block;margin-top:10">';
294 echo
_(
'Filtre').Icon_Action::infobulle(23);
295 echo HtmlInput::filter_table(
"t_modele",
"0,1,2",
"1");
297 echo
'<table id="t_modele" class="table_large" style="border-spacing:10;border-collapse:separate" >';
299 "<TH>".$header->get_header(0).
"</TH>" .
300 "<TH>".$header->get_header(1).
"</TH>" .
301 "<TH>".$header->get_header(2).
"</TH>" .
302 "<TH>"._(
'Nom base de données').
"</TH>" .
310 $class = (
$i % 2 == 0) ?
"odd" :
"even";
317 $mod_status=
_(
'Inexistant');
320 $mod_cn=
new Database($mod[
'mod_id'],
'mod');
321 if ( $mod_cn->exist_table(
"version")==0) {
323 $mod_status=
_(
'Invalide');
326 printf(
'<TR class="' .
$class .
'" style="vertical-align:top">' .
327 '<TD>%d </td><td><b> %s</b> </TD>' .
328 '<TD><I> %s </I></TD>' .
332 HtmlInput::anchor(
_(
'Effacer'),
'?action=modele_mgt&sa=del&m=' . $mod[
'mod_id'],
" onclick = \"modele_drop('{$mod['mod_id']}') \"") .
'</td>' .
334 '<td>' . HtmlInput::anchor(
_(
'Modifie'),
'?action=modele_mgt&sa=mod&m=' . $mod[
'mod_id'],
" onclick = \"modele_modify('{$mod['mod_id']}') \"") .
'</td>' .
336 '<td>' . HtmlInput::anchor(
_(
'Backup'),
'?action=backup&sa=b&t=m&d='
337 . $mod[
'mod_id']) .
'</td>' .
338 '</TR>', $mod[
'mod_id'], $mod[
'mod_name'], $mod[
'mod_desc']);
342 echo
h2(
_(
"Modèles disponibles dans le dépôt"),
' class="h-section"');
344 require NOALYSS_INCLUDE .
"/upgrade-template.php";
348<div
id=
"folder_add_id" class=
"inner_box" style=
"display:none;top:50px">
356 $Res =
$cn->exec_sql(
"select dos_id, dos_name,dos_description from ac_dossier
366 $available.=
'<OPTION VALUE="' . $db[
'dos_id'] .
'">' . $db[
'dos_name'] .
':' . $db[
'dos_description'];
371 <form action=
"admin-noalyss.php?action=modele_mgt" METHOD=
"post" onsubmit=
"waiting_box();return true;">
374 <
td><?php echo
_(
'Nom')?> </TD>
375 <TD><INPUT TYPE=
"TEXT" class=
"input_text" VALUE=
"" NAME=
"FMOD_NAME"></TD>
378 <TD><?php echo
_(
'Description')?></TD>
379 <TD><TEXTAREA ROWS=
"2" class=
"input_text" COLS=
"60" NAME=
"FMOD_DESC"></Textarea></TD>
382 <TD> <?php echo
_(
"Basé sur")?> </TD>
386 <ol
style=
"list-style: none">
388 <input
type=
"checkbox" class=
"input_text" name=
"DOC">
389 <?php echo
_(
"Nettoyage des Documents et courriers (ce qui n'effacera pas les modèles de documents)")?>
392 <input
type=
"checkbox" class=
"input_text" name=
"CARD">
393 <?php echo
_(
"Nettoyage de toutes les fiches (ce qui effacera client,
394 opérations prédéfinies fournisseurs modèles de documents et documents)")?>
397 <input
class=
"input_text" type=
"checkbox" name=
"CANAL">
398 <?php echo
_(
"Nettoyage de la comptabilité analytique : effacement des plans et des postes, les opérations
399 sont de toute façon effacées")?>
402 <input
class=
"input_text" type=
"checkbox" name=
"PLUGIN">
403 <?php echo
_(
"Effacement de toutes les données des plugins")?>
406 <INPUT TYPE=
"SUBMIT" class=
"button" VALUE=
"<?php echo _("Ajout d
'un modele")?>" >
411 //---------------------------------------------------------------------------
413 //---------------------------------------------------------------------------
416 if (!isset($_REQUEST['p_confirm
']))
418 echo _('Désolé, vous
n\
'avez pas coché la case');
419 echo HtmlInput::button_anchor(
_(
'Retour'),
'?action=modele_mgt');
423 $mod_id=
$http->request(
'm',
"number");
428 echo
_(
'Donnée invalide');
433 $name =
$cn->get_value(
"select mod_name from modeledef where mod_id=$1", array($mod_id));
436 echo
"<h2 class=\"error\"> $msg inexistant</h2>";
440 if (
$cn->exist_database(
domaine.
'mod'.$mod_id) == 1)
444 if (
$cn->exec_sql(
$sql) ==
false)
448 echo
"<h2 class=\"error\">";
449 printf (
_(
"Base de donnée %s mod %s est accèdée, déconnectez-vous d'abord"),
domaine,$mod_id )
455 $sql =
"delete from modeledef where mod_id=$1";
456 $cn->exec_sql(
$sql, array($mod_id));
458 printf (
_(
"Le modèle %s est effacé").
"</H2>",
$name );
459 echo HtmlInput::button_anchor(
_(
'Retour'),
'?action=modele_mgt');
h2($p_string, $p_class="", $raw="")
noalyss_strlentrim($p_string)
tr($p_string, $p_extra='')
sql_string($p_string)
Fix the problem with the quote char for the database.
td($p_string='', $p_extra='')
surround the string with td
alert($p_msg, $buffer=false)
alert in javascript
_("actif, passif,charge,...")
$class
Display the Plugin and for each profile were it is installed or not.
static fetch_array($ret, $p_indice=0, $p_mode=PGSQL_ASSOC)
wrapper for the function pg_fetch_array
static fetch_all($ret, $p_mode=PGSQL_ASSOC)
wrapper for the function pg_fetch_all
static num_row($ret)
wrapper for the function pg_num_rows
contains the class for connecting to Noalyss
static echo_file($msg, $print=true)
display the file
Description of class_syn_sort_table.
for($e=0; $e< count($afiche); $e++) exit
if(count($a_accounting)==0) $header