45494da38e26a16f2e4ad5dcacd2fedc0b3f4d51
[velocampus/web/www.git] / www / ecrire / base / create.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('inc/acces');
16 include_spip('base/serial');
17 include_spip('base/auxiliaires');
18 include_spip('base/typedoc');
19 include_spip('base/abstract_sql');
20
21 // http://doc.spip.org/@creer_ou_upgrader_table
22 function creer_ou_upgrader_table($table,$desc,$autoinc,$upgrade=false,$serveur='') {
23 $sql_desc = $upgrade ? sql_showtable($table,true,$serveur) : false;
24 if (!$sql_desc)
25 sql_create($table, $desc['field'], $desc['key'], $autoinc, false, $serveur);
26 else {
27 // ajouter les champs manquants
28 $last = '';
29 foreach($desc['field'] as $field=>$type){
30 if (!isset($sql_desc['field'][$field]))
31 sql_alter("TABLE $table ADD $field $type".($last?" AFTER $last":""),$serveur);
32 $last = $field;
33 }
34 foreach($desc['key'] as $key=>$type){
35 if (!isset($sql_desc['key'][$key]))
36 sql_alter("TABLE $table ADD $key ($type)",$serveur);
37 $last = $field;
38 }
39
40 }
41 }
42
43 function alterer_base($tables_inc, $tables_noinc, $up=false, $serveur='')
44 {
45 if ($up === false) {
46 $old = false;
47 $up = array();
48 } else {
49 $old = true;
50 if (!is_array($up)) $up = array($up);
51 }
52 foreach($tables_inc as $k => $v)
53 if (!$old OR in_array($k, $up))
54 creer_ou_upgrader_table($k,$v,true,$old,$serveur);
55
56 foreach($tables_noinc as $k => $v)
57 if (!$old OR in_array($k, $up))
58 creer_ou_upgrader_table($k,$v,false,$old,$serveur);
59 }
60
61 // http://doc.spip.org/@creer_base
62 function creer_base($serveur='') {
63
64 // Note: les mises a jour reexecutent ce code pour s'assurer
65 // de la conformite de la base
66 // pas de panique sur "already exists" et "duplicate entry" donc.
67
68 alterer_base($GLOBALS['tables_principales'],
69 $GLOBALS['tables_auxiliaires'],
70 false,
71 $serveur);
72 }
73
74 // http://doc.spip.org/@maj_tables
75 function maj_tables($upgrade_tables=array(),$serveur=''){
76 alterer_base($GLOBALS['tables_principales'],
77 $GLOBALS['tables_auxiliaires'],
78 $upgrade_tables,
79 $serveur);
80 }
81
82 // http://doc.spip.org/@creer_base_types_doc
83 function creer_base_types_doc($serveur='') {
84 global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
85 // Init ou Re-init ==> replace pas insert
86
87 $freplace = sql_serveur('replace', $serveur);
88 foreach ($tables_mime as $extension => $type_mime) {
89 if (isset($tables_images[$extension])) {
90 $titre = $tables_images[$extension];
91 $inclus='image';
92 }
93 else if (isset($tables_sequences[$extension])) {
94 $titre = $tables_sequences[$extension];
95 $inclus='embed';
96 }
97 else {
98 $inclus='non';
99 if (isset($tables_documents[$extension]))
100 $titre = $tables_documents[$extension];
101 else
102 $titre = '';
103 }
104
105 $freplace('spip_types_documents',
106 array('mime_type' => $type_mime,
107 'titre' => $titre,
108 'inclus' => $inclus,
109 'extension' => $extension,
110 'upload' => 'oui'
111 ),
112 '', $serveur);
113 }
114 }
115 ?>