@@ -7,7 +7,7 @@ discard block |
||
| 7 | 7 | **/ |
| 8 | 8 | |
| 9 | 9 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 10 | - return; |
|
| 10 | + return; |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | include_spip('inc/actions'); |
@@ -37,21 +37,21 @@ discard block |
||
| 37 | 37 | * Environnement du formulaire |
| 38 | 38 | **/ |
| 39 | 39 | function formulaires_editer_auteur_charger_dist( |
| 40 | - $id_auteur = 'new', |
|
| 41 | - $retour = '', |
|
| 42 | - $associer_objet = '', |
|
| 43 | - $config_fonc = 'auteurs_edit_config', |
|
| 44 | - $row = array(), |
|
| 45 | - $hidden = '' |
|
| 40 | + $id_auteur = 'new', |
|
| 41 | + $retour = '', |
|
| 42 | + $associer_objet = '', |
|
| 43 | + $config_fonc = 'auteurs_edit_config', |
|
| 44 | + $row = array(), |
|
| 45 | + $hidden = '' |
|
| 46 | 46 | ) { |
| 47 | - $valeurs = formulaires_editer_objet_charger('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden); |
|
| 48 | - $valeurs['new_login'] = $valeurs['login']; |
|
| 47 | + $valeurs = formulaires_editer_objet_charger('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden); |
|
| 48 | + $valeurs['new_login'] = $valeurs['login']; |
|
| 49 | 49 | |
| 50 | - if (!autoriser('modifier', 'auteur', intval($id_auteur))) { |
|
| 51 | - $valeurs['editable'] = ''; |
|
| 52 | - } |
|
| 50 | + if (!autoriser('modifier', 'auteur', intval($id_auteur))) { |
|
| 51 | + $valeurs['editable'] = ''; |
|
| 52 | + } |
|
| 53 | 53 | |
| 54 | - return $valeurs; |
|
| 54 | + return $valeurs; |
|
| 55 | 55 | } |
| 56 | 56 | |
| 57 | 57 | /** |
@@ -75,14 +75,14 @@ discard block |
||
| 75 | 75 | * Hash du formulaire |
| 76 | 76 | */ |
| 77 | 77 | function formulaires_editer_auteur_identifier_dist( |
| 78 | - $id_auteur = 'new', |
|
| 79 | - $retour = '', |
|
| 80 | - $associer_objet = '', |
|
| 81 | - $config_fonc = 'auteurs_edit_config', |
|
| 82 | - $row = array(), |
|
| 83 | - $hidden = '' |
|
| 78 | + $id_auteur = 'new', |
|
| 79 | + $retour = '', |
|
| 80 | + $associer_objet = '', |
|
| 81 | + $config_fonc = 'auteurs_edit_config', |
|
| 82 | + $row = array(), |
|
| 83 | + $hidden = '' |
|
| 84 | 84 | ) { |
| 85 | - return serialize(array(intval($id_auteur), $associer_objet)); |
|
| 85 | + return serialize(array(intval($id_auteur), $associer_objet)); |
|
| 86 | 86 | } |
| 87 | 87 | |
| 88 | 88 | |
@@ -95,29 +95,29 @@ discard block |
||
| 95 | 95 | * Configuration pour le formulaire |
| 96 | 96 | */ |
| 97 | 97 | function auteurs_edit_config($row) { |
| 98 | - global $spip_lang; |
|
| 99 | - |
|
| 100 | - $config = $GLOBALS['meta']; |
|
| 101 | - $config['lignes'] = 8; |
|
| 102 | - $config['langue'] = $spip_lang; |
|
| 103 | - |
|
| 104 | - // pour instituer_auteur |
|
| 105 | - $config['auteur'] = $row; |
|
| 106 | - |
|
| 107 | - //$config['restreint'] = ($row['statut'] == 'publie'); |
|
| 108 | - $auth_methode = $row['source']; |
|
| 109 | - include_spip('inc/auth'); |
|
| 110 | - $config['edit_login'] = |
|
| 111 | - (auth_autoriser_modifier_login($auth_methode) |
|
| 112 | - and autoriser('modifier', 'auteur', $row['id_auteur'], null, array('login' => true)) |
|
| 113 | - // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email |
|
| 114 | - and autoriser('modifier', 'auteur', $row['id_auteur'], null, array('email' => true)) |
|
| 115 | - ); |
|
| 116 | - $config['edit_pass'] = |
|
| 117 | - (auth_autoriser_modifier_pass($auth_methode) |
|
| 118 | - and autoriser('modifier', 'auteur', $row['id_auteur'])); |
|
| 119 | - |
|
| 120 | - return $config; |
|
| 98 | + global $spip_lang; |
|
| 99 | + |
|
| 100 | + $config = $GLOBALS['meta']; |
|
| 101 | + $config['lignes'] = 8; |
|
| 102 | + $config['langue'] = $spip_lang; |
|
| 103 | + |
|
| 104 | + // pour instituer_auteur |
|
| 105 | + $config['auteur'] = $row; |
|
| 106 | + |
|
| 107 | + //$config['restreint'] = ($row['statut'] == 'publie'); |
|
| 108 | + $auth_methode = $row['source']; |
|
| 109 | + include_spip('inc/auth'); |
|
| 110 | + $config['edit_login'] = |
|
| 111 | + (auth_autoriser_modifier_login($auth_methode) |
|
| 112 | + and autoriser('modifier', 'auteur', $row['id_auteur'], null, array('login' => true)) |
|
| 113 | + // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email |
|
| 114 | + and autoriser('modifier', 'auteur', $row['id_auteur'], null, array('email' => true)) |
|
| 115 | + ); |
|
| 116 | + $config['edit_pass'] = |
|
| 117 | + (auth_autoriser_modifier_pass($auth_methode) |
|
| 118 | + and autoriser('modifier', 'auteur', $row['id_auteur'])); |
|
| 119 | + |
|
| 120 | + return $config; |
|
| 121 | 121 | } |
| 122 | 122 | |
| 123 | 123 | /** |
@@ -147,132 +147,132 @@ discard block |
||
| 147 | 147 | * Erreurs des saisies |
| 148 | 148 | **/ |
| 149 | 149 | function formulaires_editer_auteur_verifier_dist( |
| 150 | - $id_auteur = 'new', |
|
| 151 | - $retour = '', |
|
| 152 | - $associer_objet = '', |
|
| 153 | - $config_fonc = 'auteurs_edit_config', |
|
| 154 | - $row = array(), |
|
| 155 | - $hidden = '' |
|
| 150 | + $id_auteur = 'new', |
|
| 151 | + $retour = '', |
|
| 152 | + $associer_objet = '', |
|
| 153 | + $config_fonc = 'auteurs_edit_config', |
|
| 154 | + $row = array(), |
|
| 155 | + $hidden = '' |
|
| 156 | 156 | ) { |
| 157 | - // auto-renseigner le nom si il n'existe pas, sans couper |
|
| 158 | - titre_automatique('nom', array('email', 'login'), 255); |
|
| 159 | - |
|
| 160 | - $oblis = array('nom'); |
|
| 161 | - // si on veut renvoyer des identifiants il faut un email et un login |
|
| 162 | - if (_request('reset_password')) { |
|
| 163 | - $oblis[] = 'email'; |
|
| 164 | - $oblis[] = 'new_login'; |
|
| 165 | - } |
|
| 166 | - // mais il reste obligatoire si on a rien trouve |
|
| 167 | - $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis); |
|
| 168 | - if (isset($erreurs['new_login'])) { |
|
| 169 | - $erreurs['login'] = $erreurs['new_login']; |
|
| 170 | - unset($erreurs['new_login']); |
|
| 171 | - } |
|
| 172 | - |
|
| 173 | - $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 174 | - $auth_methode = ($auth_methode ? $auth_methode : 'spip'); |
|
| 175 | - include_spip('inc/auth'); |
|
| 176 | - |
|
| 177 | - if (!nom_acceptable(_request('nom'))) { |
|
| 178 | - $erreurs['nom'] = _T('info_nom_pas_conforme'); |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - if ($email = _request('email')) { |
|
| 182 | - include_spip('inc/filtres'); |
|
| 183 | - include_spip('inc/autoriser'); |
|
| 184 | - // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un |
|
| 185 | - if (!autoriser('modifier', 'auteur', $id_auteur, null, array('email' => '?')) |
|
| 186 | - and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur |
|
| 187 | - and !strlen(trim($email)) |
|
| 188 | - and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))) |
|
| 189 | - ) { |
|
| 190 | - $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email')); |
|
| 191 | - } else { |
|
| 192 | - if (!email_valide($email)) { |
|
| 193 | - $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email')); |
|
| 194 | - } |
|
| 195 | - } |
|
| 196 | - # Ne pas autoriser d'avoir deux auteurs avec le même email |
|
| 197 | - # cette fonctionalité nécessite que la base soit clean à l'activation : pas de |
|
| 198 | - # doublon sur la requête select email,count(*) from spip_auteurs group by email ; |
|
| 199 | - if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) { |
|
| 200 | - #Nouvel auteur |
|
| 201 | - if (intval($id_auteur) == 0) { |
|
| 202 | - #Un auteur existe deja avec cette adresse ? |
|
| 203 | - if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) { |
|
| 204 | - $erreurs['email'] = _T('erreur_email_deja_existant'); |
|
| 205 | - } |
|
| 206 | - } else { |
|
| 207 | - #Un auteur existe deja avec cette adresse ? et n'est pas le user courant. |
|
| 208 | - if ((sql_countsel( |
|
| 209 | - 'spip_auteurs', |
|
| 210 | - 'email=' . sql_quote($email) |
|
| 211 | - ) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel( |
|
| 212 | - 'id_auteur', |
|
| 213 | - 'spip_auteurs', |
|
| 214 | - 'email=' . sql_quote($email) |
|
| 215 | - )))) { |
|
| 216 | - $erreurs['email'] = _T('erreur_email_deja_existant'); |
|
| 217 | - } |
|
| 218 | - } |
|
| 219 | - } |
|
| 220 | - } |
|
| 221 | - |
|
| 222 | - // quand c'est un auteur existant on fait le reset password ici |
|
| 223 | - if (!count($erreurs) and _request('reset_password') and intval($id_auteur)) { |
|
| 224 | - $erreurs = auteur_reset_password($id_auteur, $erreurs); |
|
| 225 | - return $erreurs; |
|
| 226 | - } |
|
| 227 | - |
|
| 228 | - // corriger un cas si frequent : www.example.org sans le http:// qui precede |
|
| 229 | - if ($url = _request('url_site') and !tester_url_absolue($url)) { |
|
| 230 | - if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) { |
|
| 231 | - $url = 'http://' . $url; |
|
| 232 | - set_request('url_site', $url); |
|
| 233 | - } |
|
| 234 | - } |
|
| 235 | - // traiter les liens implicites avant de tester l'url |
|
| 236 | - include_spip('inc/lien'); |
|
| 237 | - if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) { |
|
| 238 | - $erreurs['url_site'] = _T('info_url_site_pas_conforme'); |
|
| 239 | - } |
|
| 240 | - |
|
| 241 | - $erreurs['message_erreur'] = ''; |
|
| 242 | - if ( |
|
| 243 | - $login = _request('login') and |
|
| 244 | - $login !== sql_getfetsel('login','spip_auteurs', 'id_auteur='.intval($id_auteur)) |
|
| 245 | - ) { |
|
| 246 | - // on verifie la meme chose que dans auteurs_edit_config() |
|
| 247 | - if ( ! auth_autoriser_modifier_login($auth_methode) |
|
| 248 | - or !autoriser('modifier', 'auteur', intval($id_auteur), null, array('email' => true))){ |
|
| 249 | - $erreurs['login'] = _T('info_non_modifiable'); |
|
| 250 | - } |
|
| 251 | - } |
|
| 252 | - |
|
| 253 | - if (empty($erreurs['login'])) { |
|
| 254 | - if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) { |
|
| 255 | - $erreurs['login'] = $err; |
|
| 256 | - $erreurs['message_erreur'] .= $err; |
|
| 257 | - } else { |
|
| 258 | - // pass trop court ou confirmation non identique |
|
| 259 | - if ($p = _request('new_pass')) { |
|
| 260 | - if ($p != _request('new_pass2')) { |
|
| 261 | - $erreurs['new_pass'] = _T('info_passes_identiques'); |
|
| 262 | - $erreurs['message_erreur'] .= _T('info_passes_identiques'); |
|
| 263 | - } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) { |
|
| 264 | - $erreurs['new_pass'] = $err; |
|
| 265 | - $erreurs['message_erreur'] .= $err; |
|
| 266 | - } |
|
| 267 | - } |
|
| 268 | - } |
|
| 269 | - } |
|
| 270 | - |
|
| 271 | - if (!$erreurs['message_erreur']) { |
|
| 272 | - unset($erreurs['message_erreur']); |
|
| 273 | - } |
|
| 274 | - |
|
| 275 | - return $erreurs; |
|
| 157 | + // auto-renseigner le nom si il n'existe pas, sans couper |
|
| 158 | + titre_automatique('nom', array('email', 'login'), 255); |
|
| 159 | + |
|
| 160 | + $oblis = array('nom'); |
|
| 161 | + // si on veut renvoyer des identifiants il faut un email et un login |
|
| 162 | + if (_request('reset_password')) { |
|
| 163 | + $oblis[] = 'email'; |
|
| 164 | + $oblis[] = 'new_login'; |
|
| 165 | + } |
|
| 166 | + // mais il reste obligatoire si on a rien trouve |
|
| 167 | + $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis); |
|
| 168 | + if (isset($erreurs['new_login'])) { |
|
| 169 | + $erreurs['login'] = $erreurs['new_login']; |
|
| 170 | + unset($erreurs['new_login']); |
|
| 171 | + } |
|
| 172 | + |
|
| 173 | + $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 174 | + $auth_methode = ($auth_methode ? $auth_methode : 'spip'); |
|
| 175 | + include_spip('inc/auth'); |
|
| 176 | + |
|
| 177 | + if (!nom_acceptable(_request('nom'))) { |
|
| 178 | + $erreurs['nom'] = _T('info_nom_pas_conforme'); |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + if ($email = _request('email')) { |
|
| 182 | + include_spip('inc/filtres'); |
|
| 183 | + include_spip('inc/autoriser'); |
|
| 184 | + // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un |
|
| 185 | + if (!autoriser('modifier', 'auteur', $id_auteur, null, array('email' => '?')) |
|
| 186 | + and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur |
|
| 187 | + and !strlen(trim($email)) |
|
| 188 | + and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))) |
|
| 189 | + ) { |
|
| 190 | + $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email')); |
|
| 191 | + } else { |
|
| 192 | + if (!email_valide($email)) { |
|
| 193 | + $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email')); |
|
| 194 | + } |
|
| 195 | + } |
|
| 196 | + # Ne pas autoriser d'avoir deux auteurs avec le même email |
|
| 197 | + # cette fonctionalité nécessite que la base soit clean à l'activation : pas de |
|
| 198 | + # doublon sur la requête select email,count(*) from spip_auteurs group by email ; |
|
| 199 | + if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) { |
|
| 200 | + #Nouvel auteur |
|
| 201 | + if (intval($id_auteur) == 0) { |
|
| 202 | + #Un auteur existe deja avec cette adresse ? |
|
| 203 | + if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) { |
|
| 204 | + $erreurs['email'] = _T('erreur_email_deja_existant'); |
|
| 205 | + } |
|
| 206 | + } else { |
|
| 207 | + #Un auteur existe deja avec cette adresse ? et n'est pas le user courant. |
|
| 208 | + if ((sql_countsel( |
|
| 209 | + 'spip_auteurs', |
|
| 210 | + 'email=' . sql_quote($email) |
|
| 211 | + ) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel( |
|
| 212 | + 'id_auteur', |
|
| 213 | + 'spip_auteurs', |
|
| 214 | + 'email=' . sql_quote($email) |
|
| 215 | + )))) { |
|
| 216 | + $erreurs['email'] = _T('erreur_email_deja_existant'); |
|
| 217 | + } |
|
| 218 | + } |
|
| 219 | + } |
|
| 220 | + } |
|
| 221 | + |
|
| 222 | + // quand c'est un auteur existant on fait le reset password ici |
|
| 223 | + if (!count($erreurs) and _request('reset_password') and intval($id_auteur)) { |
|
| 224 | + $erreurs = auteur_reset_password($id_auteur, $erreurs); |
|
| 225 | + return $erreurs; |
|
| 226 | + } |
|
| 227 | + |
|
| 228 | + // corriger un cas si frequent : www.example.org sans le http:// qui precede |
|
| 229 | + if ($url = _request('url_site') and !tester_url_absolue($url)) { |
|
| 230 | + if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) { |
|
| 231 | + $url = 'http://' . $url; |
|
| 232 | + set_request('url_site', $url); |
|
| 233 | + } |
|
| 234 | + } |
|
| 235 | + // traiter les liens implicites avant de tester l'url |
|
| 236 | + include_spip('inc/lien'); |
|
| 237 | + if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) { |
|
| 238 | + $erreurs['url_site'] = _T('info_url_site_pas_conforme'); |
|
| 239 | + } |
|
| 240 | + |
|
| 241 | + $erreurs['message_erreur'] = ''; |
|
| 242 | + if ( |
|
| 243 | + $login = _request('login') and |
|
| 244 | + $login !== sql_getfetsel('login','spip_auteurs', 'id_auteur='.intval($id_auteur)) |
|
| 245 | + ) { |
|
| 246 | + // on verifie la meme chose que dans auteurs_edit_config() |
|
| 247 | + if ( ! auth_autoriser_modifier_login($auth_methode) |
|
| 248 | + or !autoriser('modifier', 'auteur', intval($id_auteur), null, array('email' => true))){ |
|
| 249 | + $erreurs['login'] = _T('info_non_modifiable'); |
|
| 250 | + } |
|
| 251 | + } |
|
| 252 | + |
|
| 253 | + if (empty($erreurs['login'])) { |
|
| 254 | + if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) { |
|
| 255 | + $erreurs['login'] = $err; |
|
| 256 | + $erreurs['message_erreur'] .= $err; |
|
| 257 | + } else { |
|
| 258 | + // pass trop court ou confirmation non identique |
|
| 259 | + if ($p = _request('new_pass')) { |
|
| 260 | + if ($p != _request('new_pass2')) { |
|
| 261 | + $erreurs['new_pass'] = _T('info_passes_identiques'); |
|
| 262 | + $erreurs['message_erreur'] .= _T('info_passes_identiques'); |
|
| 263 | + } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) { |
|
| 264 | + $erreurs['new_pass'] = $err; |
|
| 265 | + $erreurs['message_erreur'] .= $err; |
|
| 266 | + } |
|
| 267 | + } |
|
| 268 | + } |
|
| 269 | + } |
|
| 270 | + |
|
| 271 | + if (!$erreurs['message_erreur']) { |
|
| 272 | + unset($erreurs['message_erreur']); |
|
| 273 | + } |
|
| 274 | + |
|
| 275 | + return $erreurs; |
|
| 276 | 276 | } |
| 277 | 277 | |
| 278 | 278 | |
@@ -309,121 +309,121 @@ discard block |
||
| 309 | 309 | * Retour des traitements |
| 310 | 310 | **/ |
| 311 | 311 | function formulaires_editer_auteur_traiter_dist( |
| 312 | - $id_auteur = 'new', |
|
| 313 | - $retour = '', |
|
| 314 | - $associer_objet = '', |
|
| 315 | - $config_fonc = 'auteurs_edit_config', |
|
| 316 | - $row = array(), |
|
| 317 | - $hidden = '' |
|
| 312 | + $id_auteur = 'new', |
|
| 313 | + $retour = '', |
|
| 314 | + $associer_objet = '', |
|
| 315 | + $config_fonc = 'auteurs_edit_config', |
|
| 316 | + $row = array(), |
|
| 317 | + $hidden = '' |
|
| 318 | 318 | ) { |
| 319 | - if (_request('saisie_webmestre') or _request('webmestre')) { |
|
| 320 | - set_request('webmestre', _request('webmestre') ? _request('webmestre') : 'non'); |
|
| 321 | - } |
|
| 322 | - $retour = parametre_url($retour, 'email_confirm', ''); |
|
| 323 | - |
|
| 324 | - if ($restreintes = _request('restreintes')) { |
|
| 325 | - foreach ($restreintes as $k => $v) { |
|
| 326 | - if(strpos($v, 'rubrique|') === 0) { |
|
| 327 | - $restreintes[$k] = substr($v, 9); |
|
| 328 | - } |
|
| 329 | - } |
|
| 330 | - set_request('restreintes', $restreintes); |
|
| 331 | - } |
|
| 332 | - |
|
| 333 | - set_request( |
|
| 334 | - 'email', |
|
| 335 | - email_valide(_request('email')) |
|
| 336 | - ); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier : |
|
| 337 | - // "[email protected] " ou encore "Marie Toto <[email protected]>" |
|
| 338 | - |
|
| 339 | - include_spip('inc/autoriser'); |
|
| 340 | - if (!autoriser('modifier', 'auteur', $id_auteur, null, array('email' => '?'))) { |
|
| 341 | - $email_nouveau = _request('email'); |
|
| 342 | - set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email |
|
| 343 | - // mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique |
|
| 344 | - // pour qu'il confirme qu'il possede bien cette adresse |
|
| 345 | - // son clic sur l'url du message permettre de confirmer le changement |
|
| 346 | - // et de revenir sur son profil |
|
| 347 | - if ($GLOBALS['visiteur_session']['id_auteur'] == $id_auteur |
|
| 348 | - and $email_nouveau != |
|
| 349 | - ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))) |
|
| 350 | - ) { |
|
| 351 | - $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); |
|
| 352 | - $texte = _T( |
|
| 353 | - 'form_auteur_mail_confirmation', |
|
| 354 | - array( |
|
| 355 | - 'url' => generer_action_auteur( |
|
| 356 | - 'confirmer_email', |
|
| 357 | - $email_nouveau, |
|
| 358 | - parametre_url($retour, 'email_modif', 'ok') |
|
| 359 | - ) |
|
| 360 | - ) |
|
| 361 | - ); |
|
| 362 | - $envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte); |
|
| 363 | - set_request('email_confirm', $email_nouveau); |
|
| 364 | - if ($email_ancien) { |
|
| 365 | - $envoyer_mail($email_ancien, _T('form_auteur_confirmation'), |
|
| 366 | - _T('form_auteur_envoi_mail_confirmation', array('email' => $email_nouveau))); |
|
| 367 | - } |
|
| 368 | - $retour = parametre_url($retour, 'email_confirm', $email_nouveau); |
|
| 369 | - } |
|
| 370 | - } |
|
| 371 | - |
|
| 372 | - $res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden); |
|
| 373 | - |
|
| 374 | - if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) { |
|
| 375 | - $erreurs = array(); |
|
| 376 | - $erreurs = auteur_reset_password($res['id_auteur'], $erreurs); |
|
| 377 | - if (isset($erreurs['message_ok'])) { |
|
| 378 | - if (!isset($res['message_ok'])) $res['message_ok'] = ''; |
|
| 379 | - $res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']); |
|
| 380 | - } |
|
| 381 | - if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) { |
|
| 382 | - if (!isset($res['message_erreur'])) $res['message_erreur'] = ''; |
|
| 383 | - $res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']); |
|
| 384 | - } |
|
| 385 | - } |
|
| 386 | - |
|
| 387 | - // Un lien auteur a prendre en compte ? |
|
| 388 | - if ($associer_objet and $id_auteur = $res['id_auteur']) { |
|
| 389 | - $objet = ''; |
|
| 390 | - if (intval($associer_objet)) { |
|
| 391 | - $objet = 'article'; |
|
| 392 | - $id_objet = intval($associer_objet); |
|
| 393 | - } elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) { |
|
| 394 | - list($objet, $id_objet) = explode('|', $associer_objet); |
|
| 395 | - } |
|
| 396 | - if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) { |
|
| 397 | - include_spip('action/editer_auteur'); |
|
| 398 | - auteur_associer($id_auteur, array($objet => $id_objet)); |
|
| 399 | - if (isset($res['redirect'])) { |
|
| 400 | - $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&'); |
|
| 401 | - } |
|
| 402 | - } |
|
| 403 | - } |
|
| 404 | - |
|
| 405 | - return $res; |
|
| 319 | + if (_request('saisie_webmestre') or _request('webmestre')) { |
|
| 320 | + set_request('webmestre', _request('webmestre') ? _request('webmestre') : 'non'); |
|
| 321 | + } |
|
| 322 | + $retour = parametre_url($retour, 'email_confirm', ''); |
|
| 323 | + |
|
| 324 | + if ($restreintes = _request('restreintes')) { |
|
| 325 | + foreach ($restreintes as $k => $v) { |
|
| 326 | + if(strpos($v, 'rubrique|') === 0) { |
|
| 327 | + $restreintes[$k] = substr($v, 9); |
|
| 328 | + } |
|
| 329 | + } |
|
| 330 | + set_request('restreintes', $restreintes); |
|
| 331 | + } |
|
| 332 | + |
|
| 333 | + set_request( |
|
| 334 | + 'email', |
|
| 335 | + email_valide(_request('email')) |
|
| 336 | + ); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier : |
|
| 337 | + // "[email protected] " ou encore "Marie Toto <[email protected]>" |
|
| 338 | + |
|
| 339 | + include_spip('inc/autoriser'); |
|
| 340 | + if (!autoriser('modifier', 'auteur', $id_auteur, null, array('email' => '?'))) { |
|
| 341 | + $email_nouveau = _request('email'); |
|
| 342 | + set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email |
|
| 343 | + // mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique |
|
| 344 | + // pour qu'il confirme qu'il possede bien cette adresse |
|
| 345 | + // son clic sur l'url du message permettre de confirmer le changement |
|
| 346 | + // et de revenir sur son profil |
|
| 347 | + if ($GLOBALS['visiteur_session']['id_auteur'] == $id_auteur |
|
| 348 | + and $email_nouveau != |
|
| 349 | + ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))) |
|
| 350 | + ) { |
|
| 351 | + $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); |
|
| 352 | + $texte = _T( |
|
| 353 | + 'form_auteur_mail_confirmation', |
|
| 354 | + array( |
|
| 355 | + 'url' => generer_action_auteur( |
|
| 356 | + 'confirmer_email', |
|
| 357 | + $email_nouveau, |
|
| 358 | + parametre_url($retour, 'email_modif', 'ok') |
|
| 359 | + ) |
|
| 360 | + ) |
|
| 361 | + ); |
|
| 362 | + $envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte); |
|
| 363 | + set_request('email_confirm', $email_nouveau); |
|
| 364 | + if ($email_ancien) { |
|
| 365 | + $envoyer_mail($email_ancien, _T('form_auteur_confirmation'), |
|
| 366 | + _T('form_auteur_envoi_mail_confirmation', array('email' => $email_nouveau))); |
|
| 367 | + } |
|
| 368 | + $retour = parametre_url($retour, 'email_confirm', $email_nouveau); |
|
| 369 | + } |
|
| 370 | + } |
|
| 371 | + |
|
| 372 | + $res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden); |
|
| 373 | + |
|
| 374 | + if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) { |
|
| 375 | + $erreurs = array(); |
|
| 376 | + $erreurs = auteur_reset_password($res['id_auteur'], $erreurs); |
|
| 377 | + if (isset($erreurs['message_ok'])) { |
|
| 378 | + if (!isset($res['message_ok'])) $res['message_ok'] = ''; |
|
| 379 | + $res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']); |
|
| 380 | + } |
|
| 381 | + if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) { |
|
| 382 | + if (!isset($res['message_erreur'])) $res['message_erreur'] = ''; |
|
| 383 | + $res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']); |
|
| 384 | + } |
|
| 385 | + } |
|
| 386 | + |
|
| 387 | + // Un lien auteur a prendre en compte ? |
|
| 388 | + if ($associer_objet and $id_auteur = $res['id_auteur']) { |
|
| 389 | + $objet = ''; |
|
| 390 | + if (intval($associer_objet)) { |
|
| 391 | + $objet = 'article'; |
|
| 392 | + $id_objet = intval($associer_objet); |
|
| 393 | + } elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) { |
|
| 394 | + list($objet, $id_objet) = explode('|', $associer_objet); |
|
| 395 | + } |
|
| 396 | + if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) { |
|
| 397 | + include_spip('action/editer_auteur'); |
|
| 398 | + auteur_associer($id_auteur, array($objet => $id_objet)); |
|
| 399 | + if (isset($res['redirect'])) { |
|
| 400 | + $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&'); |
|
| 401 | + } |
|
| 402 | + } |
|
| 403 | + } |
|
| 404 | + |
|
| 405 | + return $res; |
|
| 406 | 406 | } |
| 407 | 407 | |
| 408 | 408 | |
| 409 | 409 | function auteur_reset_password($id_auteur, $erreurs = array()) { |
| 410 | - $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 411 | - $config = auteurs_edit_config($auteur); |
|
| 412 | - |
|
| 413 | - if ($config['edit_pass']) { |
|
| 414 | - if ($email = auteur_regenerer_identifiants($id_auteur)) { |
|
| 415 | - $erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', array('email' => $email)); |
|
| 416 | - $erreurs['message_erreur'] = ''; |
|
| 417 | - } elseif ($email === false) { |
|
| 418 | - $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi'); |
|
| 419 | - } else { |
|
| 420 | - $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec'); |
|
| 421 | - } |
|
| 422 | - } else { |
|
| 423 | - $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec'); |
|
| 424 | - } |
|
| 425 | - |
|
| 426 | - return $erreurs; |
|
| 410 | + $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); |
|
| 411 | + $config = auteurs_edit_config($auteur); |
|
| 412 | + |
|
| 413 | + if ($config['edit_pass']) { |
|
| 414 | + if ($email = auteur_regenerer_identifiants($id_auteur)) { |
|
| 415 | + $erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', array('email' => $email)); |
|
| 416 | + $erreurs['message_erreur'] = ''; |
|
| 417 | + } elseif ($email === false) { |
|
| 418 | + $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi'); |
|
| 419 | + } else { |
|
| 420 | + $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec'); |
|
| 421 | + } |
|
| 422 | + } else { |
|
| 423 | + $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec'); |
|
| 424 | + } |
|
| 425 | + |
|
| 426 | + return $erreurs; |
|
| 427 | 427 | } |
| 428 | 428 | |
| 429 | 429 | /** |
@@ -434,52 +434,52 @@ discard block |
||
| 434 | 434 | * @return string |
| 435 | 435 | */ |
| 436 | 436 | function auteur_regenerer_identifiants($id_auteur, $notifier=true, $contexte = array()) { |
| 437 | - if ($id_auteur){ |
|
| 438 | - $set = array(); |
|
| 439 | - include_spip('inc/access'); |
|
| 440 | - $set['pass'] = creer_pass_aleatoire(); |
|
| 441 | - |
|
| 442 | - include_spip('action/editer_auteur'); |
|
| 443 | - auteur_modifier($id_auteur,$set); |
|
| 444 | - |
|
| 445 | - $row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur)); |
|
| 446 | - include_spip('inc/filtres'); |
|
| 447 | - if ($notifier |
|
| 448 | - and $row['email'] |
|
| 449 | - and email_valide($row['email']) |
|
| 450 | - and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')){ |
|
| 451 | - // envoyer l'email avec login/pass |
|
| 452 | - $c = array( |
|
| 453 | - 'id_auteur' => $id_auteur, |
|
| 454 | - 'nom' => $row['nom'], |
|
| 455 | - 'mode' => $row['statut'], |
|
| 456 | - 'email' => $row['email'], |
|
| 457 | - 'pass' => $set['pass'], |
|
| 458 | - ); |
|
| 459 | - // on merge avec les champs fournit en appel, qui sont passes au modele de notification donc |
|
| 460 | - $contexte = array_merge($contexte, $c); |
|
| 461 | - // si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site |
|
| 462 | - // plutot que celle de l'admin qui vient de cliquer sur le bouton |
|
| 463 | - if (!isset($contexte['lang']) or !$contexte['lang']) { |
|
| 464 | - if (isset($row['lang']) and $row['lang']) { |
|
| 465 | - $contexte['lang'] = $row['lang']; |
|
| 466 | - } |
|
| 467 | - else { |
|
| 468 | - $contexte['lang'] = $GLOBALS['meta']['langue_site']; |
|
| 469 | - } |
|
| 470 | - } |
|
| 471 | - lang_select($contexte['lang']); |
|
| 472 | - $message = recuperer_fond($fond, $contexte); |
|
| 473 | - include_spip("inc/notifications"); |
|
| 474 | - notifications_envoyer_mails($row['email'],$message); |
|
| 475 | - lang_select(); |
|
| 476 | - |
|
| 477 | - return $row['email']; |
|
| 478 | - } |
|
| 479 | - |
|
| 480 | - return false; |
|
| 481 | - |
|
| 482 | - } |
|
| 483 | - |
|
| 484 | - return ''; |
|
| 437 | + if ($id_auteur){ |
|
| 438 | + $set = array(); |
|
| 439 | + include_spip('inc/access'); |
|
| 440 | + $set['pass'] = creer_pass_aleatoire(); |
|
| 441 | + |
|
| 442 | + include_spip('action/editer_auteur'); |
|
| 443 | + auteur_modifier($id_auteur,$set); |
|
| 444 | + |
|
| 445 | + $row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur)); |
|
| 446 | + include_spip('inc/filtres'); |
|
| 447 | + if ($notifier |
|
| 448 | + and $row['email'] |
|
| 449 | + and email_valide($row['email']) |
|
| 450 | + and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')){ |
|
| 451 | + // envoyer l'email avec login/pass |
|
| 452 | + $c = array( |
|
| 453 | + 'id_auteur' => $id_auteur, |
|
| 454 | + 'nom' => $row['nom'], |
|
| 455 | + 'mode' => $row['statut'], |
|
| 456 | + 'email' => $row['email'], |
|
| 457 | + 'pass' => $set['pass'], |
|
| 458 | + ); |
|
| 459 | + // on merge avec les champs fournit en appel, qui sont passes au modele de notification donc |
|
| 460 | + $contexte = array_merge($contexte, $c); |
|
| 461 | + // si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site |
|
| 462 | + // plutot que celle de l'admin qui vient de cliquer sur le bouton |
|
| 463 | + if (!isset($contexte['lang']) or !$contexte['lang']) { |
|
| 464 | + if (isset($row['lang']) and $row['lang']) { |
|
| 465 | + $contexte['lang'] = $row['lang']; |
|
| 466 | + } |
|
| 467 | + else { |
|
| 468 | + $contexte['lang'] = $GLOBALS['meta']['langue_site']; |
|
| 469 | + } |
|
| 470 | + } |
|
| 471 | + lang_select($contexte['lang']); |
|
| 472 | + $message = recuperer_fond($fond, $contexte); |
|
| 473 | + include_spip("inc/notifications"); |
|
| 474 | + notifications_envoyer_mails($row['email'],$message); |
|
| 475 | + lang_select(); |
|
| 476 | + |
|
| 477 | + return $row['email']; |
|
| 478 | + } |
|
| 479 | + |
|
| 480 | + return false; |
|
| 481 | + |
|
| 482 | + } |
|
| 483 | + |
|
| 484 | + return ''; |
|
| 485 | 485 | } |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\Autorisations |
| 17 | 17 | **/ |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | include_spip('base/abstract_sql'); |
@@ -38,83 +38,83 @@ discard block |
||
| 38 | 38 | |
| 39 | 39 | |
| 40 | 40 | if (!function_exists('autoriser')) { |
| 41 | - /** |
|
| 42 | - * Autoriser une action |
|
| 43 | - * |
|
| 44 | - * Teste si une personne (par défaut le visiteur en cours) peut effectuer |
|
| 45 | - * une certaine action. Cette fonction est le point d'entrée de toutes |
|
| 46 | - * les autorisations. |
|
| 47 | - * |
|
| 48 | - * La fonction se charge d'appeler des fonctions d'autorisations spécifiques |
|
| 49 | - * aux actions demandées si elles existent. Elle cherche donc les fonctions |
|
| 50 | - * dans cet ordre : |
|
| 51 | - * |
|
| 52 | - * - autoriser_{type}_{faire}, sinon avec _dist |
|
| 53 | - * - autoriser_{type}, sinon avec _dist |
|
| 54 | - * - autoriser_{faire}, sinon avec _dist |
|
| 55 | - * - autoriser_{defaut}, sinon avec _dist |
|
| 56 | - * |
|
| 57 | - * Seul le premier argument est obligatoire. |
|
| 58 | - * |
|
| 59 | - * @note |
|
| 60 | - * Le paramètre `$type` attend par défaut un type d'objet éditorial, et à ce titre, |
|
| 61 | - * la valeur transmise se verra appliquer la fonction 'objet_type' pour uniformiser |
|
| 62 | - * cette valeur. |
|
| 63 | - * |
|
| 64 | - * Si ce paramètre n'a rien n'a voir avec un objet éditorial, par exemple |
|
| 65 | - * 'statistiques', un souligné avant le terme est ajouté afin d'indiquer |
|
| 66 | - * explicitement à la fonction autoriser de ne pas transformer la chaîne en type |
|
| 67 | - * d'objet. Cela donne pour cet exemple : `autoriser('detruire', '_statistiques')` |
|
| 68 | - * |
|
| 69 | - * @note |
|
| 70 | - * Le paramètre `$type`, en plus de l'uniformisation en type d'objet, se voit retirer |
|
| 71 | - * tous les soulignés du terme. Ainsi le type d'objet `livre_art` deviendra `livreart` |
|
| 72 | - * et SPIP cherchera une fonction `autoriser_livreart_{faire}`. Ceci permet |
|
| 73 | - * d'éviter une possible confusion si une fonction `autoriser_livre_art` existait : |
|
| 74 | - * quel serait le type, quel serait l'action ? |
|
| 75 | - * |
|
| 76 | - * Pour résumer, si le type d'objet éditorial a un souligné, tel que 'livre_art', |
|
| 77 | - * la fonction d'autorisation correspondante ne l'aura pas. |
|
| 78 | - * Exemple : `function autoriser_livreart_modifier_dist(...){...}` |
|
| 79 | - * |
|
| 80 | - * @api |
|
| 81 | - * @see autoriser_dist() |
|
| 82 | - * |
|
| 83 | - * @param string $faire |
|
| 84 | - * une action ('modifier', 'publier'...) |
|
| 85 | - * @param string $type |
|
| 86 | - * type d'objet ou nom de table ('article') |
|
| 87 | - * @param int $id |
|
| 88 | - * id de l'objet sur lequel on veut agir |
|
| 89 | - * @param null|int|array $qui |
|
| 90 | - * - si null on prend alors visiteur_session |
|
| 91 | - * - un id_auteur (on regarde dans la base) |
|
| 92 | - * - un tableau auteur complet, y compris [restreint] |
|
| 93 | - * @param null|array $opt |
|
| 94 | - * options sous forme de tableau associatif |
|
| 95 | - * @return bool |
|
| 96 | - * true si la personne peut effectuer l'action |
|
| 97 | - */ |
|
| 98 | - function autoriser($faire, $type = '', $id = 0, $qui = null, $opt = null) { |
|
| 99 | - // Charger les fonctions d'autorisation supplementaires |
|
| 100 | - static $pipe; |
|
| 101 | - if (!isset($pipe)) { |
|
| 102 | - $pipe = 1; |
|
| 103 | - pipeline('autoriser'); |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - $args = func_get_args(); |
|
| 107 | - |
|
| 108 | - return call_user_func_array('autoriser_dist', $args); |
|
| 109 | - } |
|
| 41 | + /** |
|
| 42 | + * Autoriser une action |
|
| 43 | + * |
|
| 44 | + * Teste si une personne (par défaut le visiteur en cours) peut effectuer |
|
| 45 | + * une certaine action. Cette fonction est le point d'entrée de toutes |
|
| 46 | + * les autorisations. |
|
| 47 | + * |
|
| 48 | + * La fonction se charge d'appeler des fonctions d'autorisations spécifiques |
|
| 49 | + * aux actions demandées si elles existent. Elle cherche donc les fonctions |
|
| 50 | + * dans cet ordre : |
|
| 51 | + * |
|
| 52 | + * - autoriser_{type}_{faire}, sinon avec _dist |
|
| 53 | + * - autoriser_{type}, sinon avec _dist |
|
| 54 | + * - autoriser_{faire}, sinon avec _dist |
|
| 55 | + * - autoriser_{defaut}, sinon avec _dist |
|
| 56 | + * |
|
| 57 | + * Seul le premier argument est obligatoire. |
|
| 58 | + * |
|
| 59 | + * @note |
|
| 60 | + * Le paramètre `$type` attend par défaut un type d'objet éditorial, et à ce titre, |
|
| 61 | + * la valeur transmise se verra appliquer la fonction 'objet_type' pour uniformiser |
|
| 62 | + * cette valeur. |
|
| 63 | + * |
|
| 64 | + * Si ce paramètre n'a rien n'a voir avec un objet éditorial, par exemple |
|
| 65 | + * 'statistiques', un souligné avant le terme est ajouté afin d'indiquer |
|
| 66 | + * explicitement à la fonction autoriser de ne pas transformer la chaîne en type |
|
| 67 | + * d'objet. Cela donne pour cet exemple : `autoriser('detruire', '_statistiques')` |
|
| 68 | + * |
|
| 69 | + * @note |
|
| 70 | + * Le paramètre `$type`, en plus de l'uniformisation en type d'objet, se voit retirer |
|
| 71 | + * tous les soulignés du terme. Ainsi le type d'objet `livre_art` deviendra `livreart` |
|
| 72 | + * et SPIP cherchera une fonction `autoriser_livreart_{faire}`. Ceci permet |
|
| 73 | + * d'éviter une possible confusion si une fonction `autoriser_livre_art` existait : |
|
| 74 | + * quel serait le type, quel serait l'action ? |
|
| 75 | + * |
|
| 76 | + * Pour résumer, si le type d'objet éditorial a un souligné, tel que 'livre_art', |
|
| 77 | + * la fonction d'autorisation correspondante ne l'aura pas. |
|
| 78 | + * Exemple : `function autoriser_livreart_modifier_dist(...){...}` |
|
| 79 | + * |
|
| 80 | + * @api |
|
| 81 | + * @see autoriser_dist() |
|
| 82 | + * |
|
| 83 | + * @param string $faire |
|
| 84 | + * une action ('modifier', 'publier'...) |
|
| 85 | + * @param string $type |
|
| 86 | + * type d'objet ou nom de table ('article') |
|
| 87 | + * @param int $id |
|
| 88 | + * id de l'objet sur lequel on veut agir |
|
| 89 | + * @param null|int|array $qui |
|
| 90 | + * - si null on prend alors visiteur_session |
|
| 91 | + * - un id_auteur (on regarde dans la base) |
|
| 92 | + * - un tableau auteur complet, y compris [restreint] |
|
| 93 | + * @param null|array $opt |
|
| 94 | + * options sous forme de tableau associatif |
|
| 95 | + * @return bool |
|
| 96 | + * true si la personne peut effectuer l'action |
|
| 97 | + */ |
|
| 98 | + function autoriser($faire, $type = '', $id = 0, $qui = null, $opt = null) { |
|
| 99 | + // Charger les fonctions d'autorisation supplementaires |
|
| 100 | + static $pipe; |
|
| 101 | + if (!isset($pipe)) { |
|
| 102 | + $pipe = 1; |
|
| 103 | + pipeline('autoriser'); |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + $args = func_get_args(); |
|
| 107 | + |
|
| 108 | + return call_user_func_array('autoriser_dist', $args); |
|
| 109 | + } |
|
| 110 | 110 | } |
| 111 | 111 | |
| 112 | 112 | |
| 113 | 113 | // mes_fonctions peut aussi declarer des autorisations, il faut donc le charger |
| 114 | 114 | // mais apres la fonction autoriser() |
| 115 | 115 | if ($f = find_in_path('mes_fonctions.php')) { |
| 116 | - global $dossier_squelettes; |
|
| 117 | - include_once(_ROOT_CWD . $f); |
|
| 116 | + global $dossier_squelettes; |
|
| 117 | + include_once(_ROOT_CWD . $f); |
|
| 118 | 118 | } |
| 119 | 119 | |
| 120 | 120 | |
@@ -142,72 +142,72 @@ discard block |
||
| 142 | 142 | */ |
| 143 | 143 | function autoriser_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) { |
| 144 | 144 | |
| 145 | - // Qui ? visiteur_session ? |
|
| 146 | - // si null ou '' (appel depuis #AUTORISER) on prend l'auteur loge |
|
| 147 | - if ($qui === null or $qui === '') { |
|
| 148 | - $qui = $GLOBALS['visiteur_session'] ? $GLOBALS['visiteur_session'] : array(); |
|
| 149 | - $qui = array_merge(array('statut' => '', 'id_auteur' => 0, 'webmestre' => 'non'), $qui); |
|
| 150 | - } elseif (is_numeric($qui)) { |
|
| 151 | - $qui = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $qui); |
|
| 152 | - } |
|
| 153 | - |
|
| 154 | - // Admins restreints, on construit ici (pas generique mais...) |
|
| 155 | - // le tableau de toutes leurs rubriques (y compris les sous-rubriques) |
|
| 156 | - if (_ADMINS_RESTREINTS and is_array($qui)) { |
|
| 157 | - $qui['restreint'] = isset($qui['id_auteur']) ? liste_rubriques_auteur($qui['id_auteur']) : array(); |
|
| 158 | - } |
|
| 159 | - |
|
| 160 | - spip_log( |
|
| 161 | - "autoriser $faire $type $id (" . (isset($qui['nom']) ? $qui['nom'] : '') . ') ?', |
|
| 162 | - 'autoriser' . _LOG_DEBUG |
|
| 163 | - ); |
|
| 164 | - |
|
| 165 | - // passer par objet_type pour avoir les alias |
|
| 166 | - // et supprimer les _ |
|
| 167 | - $type = str_replace('_', '', strncmp($type, '_', 1) == 0 ? $type : objet_type($type, false)); |
|
| 168 | - |
|
| 169 | - // Si une exception a ete decretee plus haut dans le code, l'appliquer |
|
| 170 | - if ((isset($GLOBALS['autoriser_exception'][$faire][$type][$id]) and autoriser_exception($faire, $type, $id, 'verifier')) |
|
| 171 | - or (isset($GLOBALS['autoriser_exception'][$faire][$type]['*']) and autoriser_exception($faire, $type, '*', 'verifier')) |
|
| 172 | - ) { |
|
| 173 | - spip_log("autoriser ($faire, $type, $id, " . (isset($qui['nom']) ? $qui['nom'] : '') . ') : OK Exception', 'autoriser' . _LOG_DEBUG); |
|
| 174 | - return true; |
|
| 175 | - } |
|
| 176 | - |
|
| 177 | - // Chercher une fonction d'autorisation |
|
| 178 | - // Dans l'ordre on va chercher autoriser_type_faire[_dist], autoriser_type[_dist], |
|
| 179 | - // autoriser_faire[_dist], autoriser_defaut[_dist] |
|
| 180 | - $fonctions = $type |
|
| 181 | - ? array( |
|
| 182 | - 'autoriser_' . $type . '_' . $faire, |
|
| 183 | - 'autoriser_' . $type . '_' . $faire . '_dist', |
|
| 184 | - 'autoriser_' . $type, |
|
| 185 | - 'autoriser_' . $type . '_dist', |
|
| 186 | - 'autoriser_' . $faire, |
|
| 187 | - 'autoriser_' . $faire . '_dist', |
|
| 188 | - 'autoriser_defaut', |
|
| 189 | - 'autoriser_defaut_dist' |
|
| 190 | - ) |
|
| 191 | - : array( |
|
| 192 | - 'autoriser_' . $faire, |
|
| 193 | - 'autoriser_' . $faire . '_dist', |
|
| 194 | - 'autoriser_defaut', |
|
| 195 | - 'autoriser_defaut_dist' |
|
| 196 | - ); |
|
| 197 | - |
|
| 198 | - foreach ($fonctions as $f) { |
|
| 199 | - if (function_exists($f)) { |
|
| 200 | - $a = $f($faire, $type, $id, $qui, $opt); |
|
| 201 | - break; |
|
| 202 | - } |
|
| 203 | - } |
|
| 204 | - |
|
| 205 | - spip_log( |
|
| 206 | - "$f($faire, $type, $id, " . (isset($qui['nom']) ? $qui['nom'] : '') . ') : ' . ($a ? 'OK' : 'niet'), |
|
| 207 | - 'autoriser' . _LOG_DEBUG |
|
| 208 | - ); |
|
| 209 | - |
|
| 210 | - return $a; |
|
| 145 | + // Qui ? visiteur_session ? |
|
| 146 | + // si null ou '' (appel depuis #AUTORISER) on prend l'auteur loge |
|
| 147 | + if ($qui === null or $qui === '') { |
|
| 148 | + $qui = $GLOBALS['visiteur_session'] ? $GLOBALS['visiteur_session'] : array(); |
|
| 149 | + $qui = array_merge(array('statut' => '', 'id_auteur' => 0, 'webmestre' => 'non'), $qui); |
|
| 150 | + } elseif (is_numeric($qui)) { |
|
| 151 | + $qui = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $qui); |
|
| 152 | + } |
|
| 153 | + |
|
| 154 | + // Admins restreints, on construit ici (pas generique mais...) |
|
| 155 | + // le tableau de toutes leurs rubriques (y compris les sous-rubriques) |
|
| 156 | + if (_ADMINS_RESTREINTS and is_array($qui)) { |
|
| 157 | + $qui['restreint'] = isset($qui['id_auteur']) ? liste_rubriques_auteur($qui['id_auteur']) : array(); |
|
| 158 | + } |
|
| 159 | + |
|
| 160 | + spip_log( |
|
| 161 | + "autoriser $faire $type $id (" . (isset($qui['nom']) ? $qui['nom'] : '') . ') ?', |
|
| 162 | + 'autoriser' . _LOG_DEBUG |
|
| 163 | + ); |
|
| 164 | + |
|
| 165 | + // passer par objet_type pour avoir les alias |
|
| 166 | + // et supprimer les _ |
|
| 167 | + $type = str_replace('_', '', strncmp($type, '_', 1) == 0 ? $type : objet_type($type, false)); |
|
| 168 | + |
|
| 169 | + // Si une exception a ete decretee plus haut dans le code, l'appliquer |
|
| 170 | + if ((isset($GLOBALS['autoriser_exception'][$faire][$type][$id]) and autoriser_exception($faire, $type, $id, 'verifier')) |
|
| 171 | + or (isset($GLOBALS['autoriser_exception'][$faire][$type]['*']) and autoriser_exception($faire, $type, '*', 'verifier')) |
|
| 172 | + ) { |
|
| 173 | + spip_log("autoriser ($faire, $type, $id, " . (isset($qui['nom']) ? $qui['nom'] : '') . ') : OK Exception', 'autoriser' . _LOG_DEBUG); |
|
| 174 | + return true; |
|
| 175 | + } |
|
| 176 | + |
|
| 177 | + // Chercher une fonction d'autorisation |
|
| 178 | + // Dans l'ordre on va chercher autoriser_type_faire[_dist], autoriser_type[_dist], |
|
| 179 | + // autoriser_faire[_dist], autoriser_defaut[_dist] |
|
| 180 | + $fonctions = $type |
|
| 181 | + ? array( |
|
| 182 | + 'autoriser_' . $type . '_' . $faire, |
|
| 183 | + 'autoriser_' . $type . '_' . $faire . '_dist', |
|
| 184 | + 'autoriser_' . $type, |
|
| 185 | + 'autoriser_' . $type . '_dist', |
|
| 186 | + 'autoriser_' . $faire, |
|
| 187 | + 'autoriser_' . $faire . '_dist', |
|
| 188 | + 'autoriser_defaut', |
|
| 189 | + 'autoriser_defaut_dist' |
|
| 190 | + ) |
|
| 191 | + : array( |
|
| 192 | + 'autoriser_' . $faire, |
|
| 193 | + 'autoriser_' . $faire . '_dist', |
|
| 194 | + 'autoriser_defaut', |
|
| 195 | + 'autoriser_defaut_dist' |
|
| 196 | + ); |
|
| 197 | + |
|
| 198 | + foreach ($fonctions as $f) { |
|
| 199 | + if (function_exists($f)) { |
|
| 200 | + $a = $f($faire, $type, $id, $qui, $opt); |
|
| 201 | + break; |
|
| 202 | + } |
|
| 203 | + } |
|
| 204 | + |
|
| 205 | + spip_log( |
|
| 206 | + "$f($faire, $type, $id, " . (isset($qui['nom']) ? $qui['nom'] : '') . ') : ' . ($a ? 'OK' : 'niet'), |
|
| 207 | + 'autoriser' . _LOG_DEBUG |
|
| 208 | + ); |
|
| 209 | + |
|
| 210 | + return $a; |
|
| 211 | 211 | } |
| 212 | 212 | |
| 213 | 213 | // une globale pour aller au plus vite dans la fonction generique ci dessus |
@@ -225,26 +225,26 @@ discard block |
||
| 225 | 225 | * @return bool |
| 226 | 226 | */ |
| 227 | 227 | function autoriser_exception($faire, $type, $id, $autoriser = true) { |
| 228 | - // une static innaccessible par url pour verifier que la globale est positionnee a bon escient |
|
| 229 | - static $autorisation; |
|
| 230 | - if ($autoriser === 'verifier') { |
|
| 231 | - return isset($autorisation[$faire][$type][$id]); |
|
| 232 | - } |
|
| 233 | - if ($autoriser === true) { |
|
| 234 | - $GLOBALS['autoriser_exception'][$faire][$type][$id] = $autorisation[$faire][$type][$id] = true; |
|
| 235 | - } |
|
| 236 | - if ($autoriser === false) { |
|
| 237 | - if ($id === '*') { |
|
| 238 | - unset($GLOBALS['autoriser_exception'][$faire][$type]); |
|
| 239 | - unset($autorisation[$faire][$type]); |
|
| 240 | - } |
|
| 241 | - else { |
|
| 242 | - unset($GLOBALS['autoriser_exception'][$faire][$type][$id]); |
|
| 243 | - unset($autorisation[$faire][$type][$id]); |
|
| 244 | - } |
|
| 245 | - } |
|
| 246 | - |
|
| 247 | - return false; |
|
| 228 | + // une static innaccessible par url pour verifier que la globale est positionnee a bon escient |
|
| 229 | + static $autorisation; |
|
| 230 | + if ($autoriser === 'verifier') { |
|
| 231 | + return isset($autorisation[$faire][$type][$id]); |
|
| 232 | + } |
|
| 233 | + if ($autoriser === true) { |
|
| 234 | + $GLOBALS['autoriser_exception'][$faire][$type][$id] = $autorisation[$faire][$type][$id] = true; |
|
| 235 | + } |
|
| 236 | + if ($autoriser === false) { |
|
| 237 | + if ($id === '*') { |
|
| 238 | + unset($GLOBALS['autoriser_exception'][$faire][$type]); |
|
| 239 | + unset($autorisation[$faire][$type]); |
|
| 240 | + } |
|
| 241 | + else { |
|
| 242 | + unset($GLOBALS['autoriser_exception'][$faire][$type][$id]); |
|
| 243 | + unset($autorisation[$faire][$type][$id]); |
|
| 244 | + } |
|
| 245 | + } |
|
| 246 | + |
|
| 247 | + return false; |
|
| 248 | 248 | } |
| 249 | 249 | |
| 250 | 250 | |
@@ -261,9 +261,9 @@ discard block |
||
| 261 | 261 | * @return bool true s'il a le droit, false sinon |
| 262 | 262 | **/ |
| 263 | 263 | function autoriser_defaut_dist($faire, $type, $id, $qui, $opt) { |
| 264 | - return |
|
| 265 | - $qui['statut'] == '0minirezo' |
|
| 266 | - and !$qui['restreint']; |
|
| 264 | + return |
|
| 265 | + $qui['statut'] == '0minirezo' |
|
| 266 | + and !$qui['restreint']; |
|
| 267 | 267 | } |
| 268 | 268 | |
| 269 | 269 | /** |
@@ -279,10 +279,10 @@ discard block |
||
| 279 | 279 | * @return bool |
| 280 | 280 | */ |
| 281 | 281 | function autoriser_loger_dist($faire, $type, $id, $qui, $opt) { |
| 282 | - if ($qui['statut'] == '5poubelle') { |
|
| 283 | - return false; |
|
| 284 | - } |
|
| 285 | - return true; |
|
| 282 | + if ($qui['statut'] == '5poubelle') { |
|
| 283 | + return false; |
|
| 284 | + } |
|
| 285 | + return true; |
|
| 286 | 286 | } |
| 287 | 287 | |
| 288 | 288 | /** |
@@ -296,7 +296,7 @@ discard block |
||
| 296 | 296 | * @return bool true s'il a le droit, false sinon |
| 297 | 297 | **/ |
| 298 | 298 | function autoriser_ecrire_dist($faire, $type, $id, $qui, $opt) { |
| 299 | - return isset($qui['statut']) and in_array($qui['statut'], array('0minirezo', '1comite')); |
|
| 299 | + return isset($qui['statut']) and in_array($qui['statut'], array('0minirezo', '1comite')); |
|
| 300 | 300 | } |
| 301 | 301 | |
| 302 | 302 | /** |
@@ -313,7 +313,7 @@ discard block |
||
| 313 | 313 | * @return bool true s'il a le droit, false sinon |
| 314 | 314 | **/ |
| 315 | 315 | function autoriser_creer_dist($faire, $type, $id, $qui, $opt) { |
| 316 | - return in_array($qui['statut'], array('0minirezo', '1comite')); |
|
| 316 | + return in_array($qui['statut'], array('0minirezo', '1comite')); |
|
| 317 | 317 | } |
| 318 | 318 | |
| 319 | 319 | /** |
@@ -331,18 +331,18 @@ discard block |
||
| 331 | 331 | **/ |
| 332 | 332 | function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) { |
| 333 | 333 | |
| 334 | - // Le visiteur a-t-il un statut prevu par la config ? |
|
| 335 | - if (strpos($GLOBALS['meta']['preview'], ',' . $qui['statut'] . ',') !== false) { |
|
| 336 | - return test_previsualiser_objet_champ($type, $id, $qui, $opt); |
|
| 337 | - } |
|
| 334 | + // Le visiteur a-t-il un statut prevu par la config ? |
|
| 335 | + if (strpos($GLOBALS['meta']['preview'], ',' . $qui['statut'] . ',') !== false) { |
|
| 336 | + return test_previsualiser_objet_champ($type, $id, $qui, $opt); |
|
| 337 | + } |
|
| 338 | 338 | |
| 339 | - // A-t-on un token de prévisualisation valable ? |
|
| 340 | - include_spip('inc/securiser_action'); |
|
| 341 | - if (decrire_token_previsu()) { |
|
| 342 | - return true; |
|
| 343 | - } |
|
| 339 | + // A-t-on un token de prévisualisation valable ? |
|
| 340 | + include_spip('inc/securiser_action'); |
|
| 341 | + if (decrire_token_previsu()) { |
|
| 342 | + return true; |
|
| 343 | + } |
|
| 344 | 344 | |
| 345 | - return false; |
|
| 345 | + return false; |
|
| 346 | 346 | } |
| 347 | 347 | |
| 348 | 348 | /** |
@@ -370,57 +370,57 @@ discard block |
||
| 370 | 370 | */ |
| 371 | 371 | function test_previsualiser_objet_champ($type = null, $id = 0, $qui = array(), $opt = array()) { |
| 372 | 372 | |
| 373 | - // si pas de type et statut fourni, c'est une autorisation generale => OK |
|
| 374 | - if (!$type) { |
|
| 375 | - return true; |
|
| 376 | - } |
|
| 377 | - |
|
| 378 | - include_spip('base/objets'); |
|
| 379 | - $infos = lister_tables_objets_sql(table_objet_sql($type)); |
|
| 380 | - if (isset($infos['statut'])) { |
|
| 381 | - foreach ($infos['statut'] as $c) { |
|
| 382 | - if (isset($c['publie'])) { |
|
| 383 | - if (!isset($c['previsu'])) { |
|
| 384 | - return false; |
|
| 385 | - } // pas de previsu definie => NIET |
|
| 386 | - $champ = $c['champ']; |
|
| 387 | - if (!isset($opt[$champ])) { |
|
| 388 | - return false; |
|
| 389 | - } // pas de champ passe a la demande => NIET |
|
| 390 | - $previsu = explode(',', $c['previsu']); |
|
| 391 | - // regarder si ce statut est autorise pour l'auteur |
|
| 392 | - if (in_array($opt[$champ] . '/auteur', $previsu)) { |
|
| 393 | - |
|
| 394 | - // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
|
| 395 | - // sinon l’auteur en session |
|
| 396 | - include_spip('inc/securiser_action'); |
|
| 397 | - if ($desc = decrire_token_previsu()) { |
|
| 398 | - $id_auteur = $desc['id_auteur']; |
|
| 399 | - } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 400 | - $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); |
|
| 401 | - } else { |
|
| 402 | - $id_auteur = null; |
|
| 403 | - } |
|
| 404 | - |
|
| 405 | - if (!$id_auteur) { |
|
| 406 | - return false; |
|
| 407 | - } elseif(autoriser('previsualiser' . $opt[$champ], $type, '', $id_auteur)) { |
|
| 408 | - // dans ce cas (admin en general), pas de filtrage sur ce statut |
|
| 409 | - } elseif (!sql_countsel( |
|
| 410 | - 'spip_auteurs_liens', |
|
| 411 | - 'id_auteur=' . intval($id_auteur) . ' AND objet=' . sql_quote($type) . ' AND id_objet=' . intval($id) |
|
| 412 | - )) { |
|
| 413 | - return false; |
|
| 414 | - } // pas auteur de cet objet => NIET |
|
| 415 | - } elseif (!in_array($opt[$champ], $previsu)) { |
|
| 416 | - // le statut n'est pas dans ceux definis par la previsu => NIET |
|
| 417 | - return false; |
|
| 418 | - } |
|
| 419 | - } |
|
| 420 | - } |
|
| 421 | - } |
|
| 422 | - |
|
| 423 | - return true; |
|
| 373 | + // si pas de type et statut fourni, c'est une autorisation generale => OK |
|
| 374 | + if (!$type) { |
|
| 375 | + return true; |
|
| 376 | + } |
|
| 377 | + |
|
| 378 | + include_spip('base/objets'); |
|
| 379 | + $infos = lister_tables_objets_sql(table_objet_sql($type)); |
|
| 380 | + if (isset($infos['statut'])) { |
|
| 381 | + foreach ($infos['statut'] as $c) { |
|
| 382 | + if (isset($c['publie'])) { |
|
| 383 | + if (!isset($c['previsu'])) { |
|
| 384 | + return false; |
|
| 385 | + } // pas de previsu definie => NIET |
|
| 386 | + $champ = $c['champ']; |
|
| 387 | + if (!isset($opt[$champ])) { |
|
| 388 | + return false; |
|
| 389 | + } // pas de champ passe a la demande => NIET |
|
| 390 | + $previsu = explode(',', $c['previsu']); |
|
| 391 | + // regarder si ce statut est autorise pour l'auteur |
|
| 392 | + if (in_array($opt[$champ] . '/auteur', $previsu)) { |
|
| 393 | + |
|
| 394 | + // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement, |
|
| 395 | + // sinon l’auteur en session |
|
| 396 | + include_spip('inc/securiser_action'); |
|
| 397 | + if ($desc = decrire_token_previsu()) { |
|
| 398 | + $id_auteur = $desc['id_auteur']; |
|
| 399 | + } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 400 | + $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']); |
|
| 401 | + } else { |
|
| 402 | + $id_auteur = null; |
|
| 403 | + } |
|
| 404 | + |
|
| 405 | + if (!$id_auteur) { |
|
| 406 | + return false; |
|
| 407 | + } elseif(autoriser('previsualiser' . $opt[$champ], $type, '', $id_auteur)) { |
|
| 408 | + // dans ce cas (admin en general), pas de filtrage sur ce statut |
|
| 409 | + } elseif (!sql_countsel( |
|
| 410 | + 'spip_auteurs_liens', |
|
| 411 | + 'id_auteur=' . intval($id_auteur) . ' AND objet=' . sql_quote($type) . ' AND id_objet=' . intval($id) |
|
| 412 | + )) { |
|
| 413 | + return false; |
|
| 414 | + } // pas auteur de cet objet => NIET |
|
| 415 | + } elseif (!in_array($opt[$champ], $previsu)) { |
|
| 416 | + // le statut n'est pas dans ceux definis par la previsu => NIET |
|
| 417 | + return false; |
|
| 418 | + } |
|
| 419 | + } |
|
| 420 | + } |
|
| 421 | + } |
|
| 422 | + |
|
| 423 | + return true; |
|
| 424 | 424 | } |
| 425 | 425 | |
| 426 | 426 | /** |
@@ -434,47 +434,47 @@ discard block |
||
| 434 | 434 | * @return bool true s'il a le droit, false sinon |
| 435 | 435 | **/ |
| 436 | 436 | function autoriser_changerlangue_dist($faire, $type, $id, $qui, $opt) { |
| 437 | - $multi_objets = explode(',', lire_config('multi_objets')); |
|
| 438 | - $gerer_trad_objets = explode(',', lire_config('gerer_trad_objets')); |
|
| 439 | - $table = table_objet_sql($type); |
|
| 440 | - if (in_array($table, $multi_objets) |
|
| 441 | - or in_array($table, $gerer_trad_objets)) { // affichage du formulaire si la configuration l'accepte |
|
| 442 | - $multi_secteurs = lire_config('multi_secteurs'); |
|
| 443 | - $champs = objet_info($type, 'field'); |
|
| 444 | - if ($multi_secteurs == 'oui' |
|
| 445 | - and array_key_exists('id_rubrique', $champs)) { |
|
| 446 | - // multilinguisme par secteur et objet rattaché à une rubrique |
|
| 447 | - $primary = id_table_objet($type); |
|
| 448 | - if ($table != 'spip_rubriques') { |
|
| 449 | - $id_rubrique = sql_getfetsel('id_rubrique', "$table", "$primary=" . intval($id)); |
|
| 450 | - } else { |
|
| 451 | - $id_rubrique = $id; |
|
| 452 | - } |
|
| 453 | - $id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 454 | - if (!$id_secteur > 0) { |
|
| 455 | - $id_secteur = $id_rubrique; |
|
| 456 | - } |
|
| 457 | - $langue_secteur = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_secteur)); |
|
| 458 | - $langue_objet = sql_getfetsel('lang', "$table", "$primary=" . intval($id)); |
|
| 459 | - if ($langue_secteur != $langue_objet) { |
|
| 460 | - // configuration incohérente, on laisse l'utilisateur corriger la situation |
|
| 461 | - return true; |
|
| 462 | - } |
|
| 463 | - if ($table != 'spip_rubriques') { // le choix de la langue se fait seulement sur les rubriques |
|
| 464 | - return false; |
|
| 465 | - } else { |
|
| 466 | - $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id)); |
|
| 467 | - if ($id_parent != 0) { |
|
| 468 | - // sous-rubriques : pas de choix de langue |
|
| 469 | - return false; |
|
| 470 | - } |
|
| 471 | - } |
|
| 472 | - } |
|
| 473 | - } else { |
|
| 474 | - return false; |
|
| 475 | - } |
|
| 476 | - |
|
| 477 | - return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 437 | + $multi_objets = explode(',', lire_config('multi_objets')); |
|
| 438 | + $gerer_trad_objets = explode(',', lire_config('gerer_trad_objets')); |
|
| 439 | + $table = table_objet_sql($type); |
|
| 440 | + if (in_array($table, $multi_objets) |
|
| 441 | + or in_array($table, $gerer_trad_objets)) { // affichage du formulaire si la configuration l'accepte |
|
| 442 | + $multi_secteurs = lire_config('multi_secteurs'); |
|
| 443 | + $champs = objet_info($type, 'field'); |
|
| 444 | + if ($multi_secteurs == 'oui' |
|
| 445 | + and array_key_exists('id_rubrique', $champs)) { |
|
| 446 | + // multilinguisme par secteur et objet rattaché à une rubrique |
|
| 447 | + $primary = id_table_objet($type); |
|
| 448 | + if ($table != 'spip_rubriques') { |
|
| 449 | + $id_rubrique = sql_getfetsel('id_rubrique', "$table", "$primary=" . intval($id)); |
|
| 450 | + } else { |
|
| 451 | + $id_rubrique = $id; |
|
| 452 | + } |
|
| 453 | + $id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); |
|
| 454 | + if (!$id_secteur > 0) { |
|
| 455 | + $id_secteur = $id_rubrique; |
|
| 456 | + } |
|
| 457 | + $langue_secteur = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_secteur)); |
|
| 458 | + $langue_objet = sql_getfetsel('lang', "$table", "$primary=" . intval($id)); |
|
| 459 | + if ($langue_secteur != $langue_objet) { |
|
| 460 | + // configuration incohérente, on laisse l'utilisateur corriger la situation |
|
| 461 | + return true; |
|
| 462 | + } |
|
| 463 | + if ($table != 'spip_rubriques') { // le choix de la langue se fait seulement sur les rubriques |
|
| 464 | + return false; |
|
| 465 | + } else { |
|
| 466 | + $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id)); |
|
| 467 | + if ($id_parent != 0) { |
|
| 468 | + // sous-rubriques : pas de choix de langue |
|
| 469 | + return false; |
|
| 470 | + } |
|
| 471 | + } |
|
| 472 | + } |
|
| 473 | + } else { |
|
| 474 | + return false; |
|
| 475 | + } |
|
| 476 | + |
|
| 477 | + return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 478 | 478 | } |
| 479 | 479 | |
| 480 | 480 | /** |
@@ -488,7 +488,7 @@ discard block |
||
| 488 | 488 | * @return bool true s'il a le droit, false sinon |
| 489 | 489 | **/ |
| 490 | 490 | function autoriser_changertraduction_dist($faire, $type, $id, $qui, $opt) { |
| 491 | - return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 491 | + return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 492 | 492 | } |
| 493 | 493 | |
| 494 | 494 | /** |
@@ -502,41 +502,41 @@ discard block |
||
| 502 | 502 | * @return bool true s'il a le droit, false sinon |
| 503 | 503 | **/ |
| 504 | 504 | function autoriser_dater_dist($faire, $type, $id, $qui, $opt) { |
| 505 | - $table = table_objet($type); |
|
| 506 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 507 | - $desc = $trouver_table($table); |
|
| 508 | - if (!$desc) { |
|
| 509 | - return false; |
|
| 510 | - } |
|
| 505 | + $table = table_objet($type); |
|
| 506 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 507 | + $desc = $trouver_table($table); |
|
| 508 | + if (!$desc) { |
|
| 509 | + return false; |
|
| 510 | + } |
|
| 511 | 511 | |
| 512 | - if (!isset($opt['statut'])) { |
|
| 513 | - if (isset($desc['field']['statut'])) { |
|
| 514 | - $statut = sql_getfetsel('statut', $desc['table'], id_table_objet($type) . '=' . intval($id)); |
|
| 515 | - } else { |
|
| 516 | - $statut = 'publie'; |
|
| 517 | - } // pas de statut => publie |
|
| 518 | - } else { |
|
| 519 | - $statut = $opt['statut']; |
|
| 520 | - } |
|
| 512 | + if (!isset($opt['statut'])) { |
|
| 513 | + if (isset($desc['field']['statut'])) { |
|
| 514 | + $statut = sql_getfetsel('statut', $desc['table'], id_table_objet($type) . '=' . intval($id)); |
|
| 515 | + } else { |
|
| 516 | + $statut = 'publie'; |
|
| 517 | + } // pas de statut => publie |
|
| 518 | + } else { |
|
| 519 | + $statut = $opt['statut']; |
|
| 520 | + } |
|
| 521 | 521 | |
| 522 | - // Liste des statuts publiés pour cet objet |
|
| 523 | - if (isset($desc['statut'][0]['publie'])) { |
|
| 524 | - $statuts_publies = explode(',', $desc['statut'][0]['publie']); |
|
| 525 | - } |
|
| 526 | - // Sinon en dur le statut "publie" |
|
| 527 | - else { |
|
| 528 | - $statuts_publies = array('publie'); |
|
| 529 | - } |
|
| 522 | + // Liste des statuts publiés pour cet objet |
|
| 523 | + if (isset($desc['statut'][0]['publie'])) { |
|
| 524 | + $statuts_publies = explode(',', $desc['statut'][0]['publie']); |
|
| 525 | + } |
|
| 526 | + // Sinon en dur le statut "publie" |
|
| 527 | + else { |
|
| 528 | + $statuts_publies = array('publie'); |
|
| 529 | + } |
|
| 530 | 530 | |
| 531 | - if ( |
|
| 532 | - in_array($statut, $statuts_publies) |
|
| 533 | - // Ou cas particulier géré en dur ici pour les articles |
|
| 534 | - or ($statut == 'prop' and $type == 'article' and $GLOBALS['meta']['post_dates'] == 'non') |
|
| 535 | - ) { |
|
| 536 | - return autoriser('modifier', $type, $id); |
|
| 537 | - } |
|
| 531 | + if ( |
|
| 532 | + in_array($statut, $statuts_publies) |
|
| 533 | + // Ou cas particulier géré en dur ici pour les articles |
|
| 534 | + or ($statut == 'prop' and $type == 'article' and $GLOBALS['meta']['post_dates'] == 'non') |
|
| 535 | + ) { |
|
| 536 | + return autoriser('modifier', $type, $id); |
|
| 537 | + } |
|
| 538 | 538 | |
| 539 | - return false; |
|
| 539 | + return false; |
|
| 540 | 540 | } |
| 541 | 541 | |
| 542 | 542 | /** |
@@ -553,7 +553,7 @@ discard block |
||
| 553 | 553 | * @return bool true s'il a le droit, false sinon |
| 554 | 554 | **/ |
| 555 | 555 | function autoriser_instituer_dist($faire, $type, $id, $qui, $opt) { |
| 556 | - return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 556 | + return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 557 | 557 | } |
| 558 | 558 | |
| 559 | 559 | /** |
@@ -569,12 +569,12 @@ discard block |
||
| 569 | 569 | * @return bool true s'il a le droit, false sinon |
| 570 | 570 | **/ |
| 571 | 571 | function autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt) { |
| 572 | - return |
|
| 573 | - ($qui['statut'] == '0minirezo') |
|
| 574 | - and ( |
|
| 575 | - !$qui['restreint'] or !$id |
|
| 576 | - or in_array($id, $qui['restreint']) |
|
| 577 | - ); |
|
| 572 | + return |
|
| 573 | + ($qui['statut'] == '0minirezo') |
|
| 574 | + and ( |
|
| 575 | + !$qui['restreint'] or !$id |
|
| 576 | + or in_array($id, $qui['restreint']) |
|
| 577 | + ); |
|
| 578 | 578 | } |
| 579 | 579 | |
| 580 | 580 | /** |
@@ -590,12 +590,12 @@ discard block |
||
| 590 | 590 | * @return bool true s'il a le droit, false sinon |
| 591 | 591 | **/ |
| 592 | 592 | function autoriser_rubrique_creer_dist($faire, $type, $id, $qui, $opt) { |
| 593 | - if (!empty($opt['id_parent'])) { |
|
| 594 | - return autoriser('creerrubriquedans', 'rubrique', $opt['id_parent'], $qui); |
|
| 595 | - } |
|
| 596 | - else { |
|
| 597 | - return autoriser('defaut', null, null, $qui, $opt); |
|
| 598 | - } |
|
| 593 | + if (!empty($opt['id_parent'])) { |
|
| 594 | + return autoriser('creerrubriquedans', 'rubrique', $opt['id_parent'], $qui); |
|
| 595 | + } |
|
| 596 | + else { |
|
| 597 | + return autoriser('defaut', null, null, $qui, $opt); |
|
| 598 | + } |
|
| 599 | 599 | } |
| 600 | 600 | |
| 601 | 601 | /** |
@@ -611,10 +611,10 @@ discard block |
||
| 611 | 611 | * @return bool true s'il a le droit, false sinon |
| 612 | 612 | **/ |
| 613 | 613 | function autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt) { |
| 614 | - return |
|
| 615 | - ($id or ($qui['statut'] == '0minirezo' and !$qui['restreint'])) |
|
| 616 | - and autoriser('voir', 'rubrique', $id) |
|
| 617 | - and autoriser('publierdans', 'rubrique', $id); |
|
| 614 | + return |
|
| 615 | + ($id or ($qui['statut'] == '0minirezo' and !$qui['restreint'])) |
|
| 616 | + and autoriser('voir', 'rubrique', $id) |
|
| 617 | + and autoriser('publierdans', 'rubrique', $id); |
|
| 618 | 618 | } |
| 619 | 619 | |
| 620 | 620 | /** |
@@ -630,10 +630,10 @@ discard block |
||
| 630 | 630 | * @return bool true s'il a le droit, false sinon |
| 631 | 631 | **/ |
| 632 | 632 | function autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt) { |
| 633 | - return |
|
| 634 | - $id |
|
| 635 | - and autoriser('voir', 'rubrique', $id) |
|
| 636 | - and autoriser('creer', 'article'); |
|
| 633 | + return |
|
| 634 | + $id |
|
| 635 | + and autoriser('voir', 'rubrique', $id) |
|
| 636 | + and autoriser('creer', 'article'); |
|
| 637 | 637 | } |
| 638 | 638 | |
| 639 | 639 | |
@@ -650,8 +650,8 @@ discard block |
||
| 650 | 650 | * @return bool true s'il a le droit, false sinon |
| 651 | 651 | **/ |
| 652 | 652 | function autoriser_rubrique_modifier_dist($faire, $type, $id, $qui, $opt) { |
| 653 | - return |
|
| 654 | - autoriser('publierdans', 'rubrique', $id, $qui, $opt); |
|
| 653 | + return |
|
| 654 | + autoriser('publierdans', 'rubrique', $id, $qui, $opt); |
|
| 655 | 655 | } |
| 656 | 656 | |
| 657 | 657 | /** |
@@ -667,29 +667,29 @@ discard block |
||
| 667 | 667 | * @return bool true s'il a le droit, false sinon |
| 668 | 668 | **/ |
| 669 | 669 | function autoriser_rubrique_supprimer_dist($faire, $type, $id, $qui, $opt) { |
| 670 | - if (!$id = intval($id)) { |
|
| 671 | - return false; |
|
| 672 | - } |
|
| 670 | + if (!$id = intval($id)) { |
|
| 671 | + return false; |
|
| 672 | + } |
|
| 673 | 673 | |
| 674 | - if (sql_countsel('spip_rubriques', 'id_parent=' . intval($id))) { |
|
| 675 | - return false; |
|
| 676 | - } |
|
| 674 | + if (sql_countsel('spip_rubriques', 'id_parent=' . intval($id))) { |
|
| 675 | + return false; |
|
| 676 | + } |
|
| 677 | 677 | |
| 678 | - if (sql_countsel('spip_articles', 'id_rubrique=' . intval($id) . " AND (statut<>'poubelle')")) { |
|
| 679 | - return false; |
|
| 680 | - } |
|
| 678 | + if (sql_countsel('spip_articles', 'id_rubrique=' . intval($id) . " AND (statut<>'poubelle')")) { |
|
| 679 | + return false; |
|
| 680 | + } |
|
| 681 | 681 | |
| 682 | - $compte = pipeline( |
|
| 683 | - 'objet_compte_enfants', |
|
| 684 | - array('args' => array('objet' => 'rubrique', 'id_objet' => $id), 'data' => array()) |
|
| 685 | - ); |
|
| 686 | - foreach ($compte as $objet => $n) { |
|
| 687 | - if ($n) { |
|
| 688 | - return false; |
|
| 689 | - } |
|
| 690 | - } |
|
| 682 | + $compte = pipeline( |
|
| 683 | + 'objet_compte_enfants', |
|
| 684 | + array('args' => array('objet' => 'rubrique', 'id_objet' => $id), 'data' => array()) |
|
| 685 | + ); |
|
| 686 | + foreach ($compte as $objet => $n) { |
|
| 687 | + if ($n) { |
|
| 688 | + return false; |
|
| 689 | + } |
|
| 690 | + } |
|
| 691 | 691 | |
| 692 | - return autoriser('modifier', 'rubrique', $id); |
|
| 692 | + return autoriser('modifier', 'rubrique', $id); |
|
| 693 | 693 | } |
| 694 | 694 | |
| 695 | 695 | |
@@ -707,20 +707,20 @@ discard block |
||
| 707 | 707 | * @return bool true s'il a le droit, false sinon |
| 708 | 708 | **/ |
| 709 | 709 | function autoriser_article_modifier_dist($faire, $type, $id, $qui, $opt) { |
| 710 | - $r = sql_fetsel('id_rubrique,statut', 'spip_articles', 'id_article=' . sql_quote($id)); |
|
| 710 | + $r = sql_fetsel('id_rubrique,statut', 'spip_articles', 'id_article=' . sql_quote($id)); |
|
| 711 | 711 | |
| 712 | - return |
|
| 713 | - $r |
|
| 714 | - and |
|
| 715 | - ( |
|
| 716 | - autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt) |
|
| 717 | - or ( |
|
| 718 | - (!isset($opt['statut']) or $opt['statut'] !== 'publie') |
|
| 719 | - and in_array($qui['statut'], array('0minirezo', '1comite')) |
|
| 720 | - and in_array($r['statut'], array('prop', 'prepa', 'poubelle')) |
|
| 721 | - and auteurs_objet('article', $id, 'id_auteur=' . $qui['id_auteur']) |
|
| 722 | - ) |
|
| 723 | - ); |
|
| 712 | + return |
|
| 713 | + $r |
|
| 714 | + and |
|
| 715 | + ( |
|
| 716 | + autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt) |
|
| 717 | + or ( |
|
| 718 | + (!isset($opt['statut']) or $opt['statut'] !== 'publie') |
|
| 719 | + and in_array($qui['statut'], array('0minirezo', '1comite')) |
|
| 720 | + and in_array($r['statut'], array('prop', 'prepa', 'poubelle')) |
|
| 721 | + and auteurs_objet('article', $id, 'id_auteur=' . $qui['id_auteur']) |
|
| 722 | + ) |
|
| 723 | + ); |
|
| 724 | 724 | } |
| 725 | 725 | |
| 726 | 726 | /** |
@@ -736,13 +736,13 @@ discard block |
||
| 736 | 736 | * @return bool true s'il a le droit, false sinon |
| 737 | 737 | **/ |
| 738 | 738 | function autoriser_article_creer_dist($faire, $type, $id, $qui, $opt) { |
| 739 | - if (!empty($opt['id_parent'])) { |
|
| 740 | - // creerarticledans rappelle autoriser(creer,article) sans id, donc on verifiera condition du else aussi |
|
| 741 | - return autoriser('creerarticledans', 'rubrique', $opt['id_parent'], $qui); |
|
| 742 | - } |
|
| 743 | - else { |
|
| 744 | - return (sql_countsel('spip_rubriques') > 0 and in_array($qui['statut'], array('0minirezo', '1comite'))); |
|
| 745 | - } |
|
| 739 | + if (!empty($opt['id_parent'])) { |
|
| 740 | + // creerarticledans rappelle autoriser(creer,article) sans id, donc on verifiera condition du else aussi |
|
| 741 | + return autoriser('creerarticledans', 'rubrique', $opt['id_parent'], $qui); |
|
| 742 | + } |
|
| 743 | + else { |
|
| 744 | + return (sql_countsel('spip_rubriques') > 0 and in_array($qui['statut'], array('0minirezo', '1comite'))); |
|
| 745 | + } |
|
| 746 | 746 | } |
| 747 | 747 | |
| 748 | 748 | /** |
@@ -762,28 +762,28 @@ discard block |
||
| 762 | 762 | * @return bool true s'il a le droit, false sinon |
| 763 | 763 | */ |
| 764 | 764 | function autoriser_article_voir_dist($faire, $type, $id, $qui, $opt) { |
| 765 | - if ($qui['statut'] == '0minirezo') { |
|
| 766 | - return true; |
|
| 767 | - } |
|
| 768 | - // cas des articles : depend du statut de l'article et de l'auteur |
|
| 769 | - if (isset($opt['statut'])) { |
|
| 770 | - $statut = $opt['statut']; |
|
| 771 | - } else { |
|
| 772 | - if (!$id) { |
|
| 773 | - return false; |
|
| 774 | - } |
|
| 775 | - $statut = sql_getfetsel('statut', 'spip_articles', 'id_article=' . intval($id)); |
|
| 776 | - } |
|
| 777 | - |
|
| 778 | - return |
|
| 779 | - // si on est pas auteur de l'article, |
|
| 780 | - // seuls les propose et publies sont visibles |
|
| 781 | - in_array($statut, array('prop', 'publie')) |
|
| 782 | - // sinon si on est auteur, on a le droit de le voir, evidemment ! |
|
| 783 | - or |
|
| 784 | - ($id |
|
| 785 | - and $qui['id_auteur'] |
|
| 786 | - and auteurs_objet('article', $id, 'id_auteur=' . $qui['id_auteur'])); |
|
| 765 | + if ($qui['statut'] == '0minirezo') { |
|
| 766 | + return true; |
|
| 767 | + } |
|
| 768 | + // cas des articles : depend du statut de l'article et de l'auteur |
|
| 769 | + if (isset($opt['statut'])) { |
|
| 770 | + $statut = $opt['statut']; |
|
| 771 | + } else { |
|
| 772 | + if (!$id) { |
|
| 773 | + return false; |
|
| 774 | + } |
|
| 775 | + $statut = sql_getfetsel('statut', 'spip_articles', 'id_article=' . intval($id)); |
|
| 776 | + } |
|
| 777 | + |
|
| 778 | + return |
|
| 779 | + // si on est pas auteur de l'article, |
|
| 780 | + // seuls les propose et publies sont visibles |
|
| 781 | + in_array($statut, array('prop', 'publie')) |
|
| 782 | + // sinon si on est auteur, on a le droit de le voir, evidemment ! |
|
| 783 | + or |
|
| 784 | + ($id |
|
| 785 | + and $qui['id_auteur'] |
|
| 786 | + and auteurs_objet('article', $id, 'id_auteur=' . $qui['id_auteur'])); |
|
| 787 | 787 | } |
| 788 | 788 | |
| 789 | 789 | |
@@ -800,22 +800,22 @@ discard block |
||
| 800 | 800 | * @return bool true s'il a le droit, false sinon |
| 801 | 801 | **/ |
| 802 | 802 | function autoriser_voir_dist($faire, $type, $id, $qui, $opt) { |
| 803 | - # securite, mais on aurait pas du arriver ici ! |
|
| 804 | - if (function_exists($f = 'autoriser_' . $type . '_voir') |
|
| 805 | - or function_exists($f = 'autoriser_' . $type . '_voir_dist')) { |
|
| 806 | - return $f($faire, $type, $id, $qui, $opt); |
|
| 807 | - } |
|
| 803 | + # securite, mais on aurait pas du arriver ici ! |
|
| 804 | + if (function_exists($f = 'autoriser_' . $type . '_voir') |
|
| 805 | + or function_exists($f = 'autoriser_' . $type . '_voir_dist')) { |
|
| 806 | + return $f($faire, $type, $id, $qui, $opt); |
|
| 807 | + } |
|
| 808 | 808 | |
| 809 | - if ($qui['statut'] == '0minirezo') { |
|
| 810 | - return true; |
|
| 811 | - } |
|
| 812 | - // admins et redacteurs peuvent voir un auteur |
|
| 813 | - if ($type == 'auteur') { |
|
| 814 | - return in_array($qui['statut'], array('0minirezo', '1comite')); |
|
| 815 | - } |
|
| 816 | - // sinon par defaut tout est visible |
|
| 817 | - // sauf cas particuliers traites separemment (ie article) |
|
| 818 | - return true; |
|
| 809 | + if ($qui['statut'] == '0minirezo') { |
|
| 810 | + return true; |
|
| 811 | + } |
|
| 812 | + // admins et redacteurs peuvent voir un auteur |
|
| 813 | + if ($type == 'auteur') { |
|
| 814 | + return in_array($qui['statut'], array('0minirezo', '1comite')); |
|
| 815 | + } |
|
| 816 | + // sinon par defaut tout est visible |
|
| 817 | + // sauf cas particuliers traites separemment (ie article) |
|
| 818 | + return true; |
|
| 819 | 819 | } |
| 820 | 820 | |
| 821 | 821 | |
@@ -836,12 +836,12 @@ discard block |
||
| 836 | 836 | * @return bool true s'il a le droit, false sinon |
| 837 | 837 | **/ |
| 838 | 838 | function autoriser_webmestre_dist($faire, $type, $id, $qui, $opt) { |
| 839 | - return |
|
| 840 | - (defined('_ID_WEBMESTRES') ? |
|
| 841 | - in_array($qui['id_auteur'], explode(':', _ID_WEBMESTRES)) |
|
| 842 | - : $qui['webmestre'] == 'oui') |
|
| 843 | - and $qui['statut'] == '0minirezo' |
|
| 844 | - and !$qui['restreint']; |
|
| 839 | + return |
|
| 840 | + (defined('_ID_WEBMESTRES') ? |
|
| 841 | + in_array($qui['id_auteur'], explode(':', _ID_WEBMESTRES)) |
|
| 842 | + : $qui['webmestre'] == 'oui') |
|
| 843 | + and $qui['statut'] == '0minirezo' |
|
| 844 | + and !$qui['restreint']; |
|
| 845 | 845 | } |
| 846 | 846 | |
| 847 | 847 | /** |
@@ -857,9 +857,9 @@ discard block |
||
| 857 | 857 | * @return bool true s'il a le droit, false sinon |
| 858 | 858 | **/ |
| 859 | 859 | function autoriser_configurer_dist($faire, $type, $id, $qui, $opt) { |
| 860 | - return |
|
| 861 | - $qui['statut'] == '0minirezo' |
|
| 862 | - and !$qui['restreint']; |
|
| 860 | + return |
|
| 861 | + $qui['statut'] == '0minirezo' |
|
| 862 | + and !$qui['restreint']; |
|
| 863 | 863 | } |
| 864 | 864 | |
| 865 | 865 | /** |
@@ -875,8 +875,8 @@ discard block |
||
| 875 | 875 | * @return bool true s'il a le droit, false sinon |
| 876 | 876 | **/ |
| 877 | 877 | function autoriser_sauvegarder_dist($faire, $type, $id, $qui, $opt) { |
| 878 | - return |
|
| 879 | - $qui['statut'] == '0minirezo'; |
|
| 878 | + return |
|
| 879 | + $qui['statut'] == '0minirezo'; |
|
| 880 | 880 | } |
| 881 | 881 | |
| 882 | 882 | /** |
@@ -892,8 +892,8 @@ discard block |
||
| 892 | 892 | * @return bool true s'il a le droit, false sinon |
| 893 | 893 | **/ |
| 894 | 894 | function autoriser_detruire_dist($faire, $type, $id, $qui, $opt) { |
| 895 | - return |
|
| 896 | - autoriser('webmestre', null, null, $qui, $opt); |
|
| 895 | + return |
|
| 896 | + autoriser('webmestre', null, null, $qui, $opt); |
|
| 897 | 897 | } |
| 898 | 898 | |
| 899 | 899 | /** |
@@ -910,20 +910,20 @@ discard block |
||
| 910 | 910 | * @return bool true s'il a le droit, false sinon |
| 911 | 911 | **/ |
| 912 | 912 | function autoriser_auteur_previsualiser_dist($faire, $type, $id, $qui, $opt) { |
| 913 | - // les admins peuvent "previsualiser" une page auteur |
|
| 914 | - if ($qui['statut'] == '0minirezo' |
|
| 915 | - and !$qui['restreint'] |
|
| 916 | - ) { |
|
| 917 | - return true; |
|
| 918 | - } |
|
| 919 | - // "Voir en ligne" si l'auteur a un article publie |
|
| 920 | - $n = sql_fetsel( |
|
| 921 | - 'A.id_article', |
|
| 922 | - 'spip_auteurs_liens AS L LEFT JOIN spip_articles AS A ON (L.objet=\'article\' AND L.id_objet=A.id_article)', |
|
| 923 | - "A.statut='publie' AND L.id_auteur=" . sql_quote($id) |
|
| 924 | - ); |
|
| 913 | + // les admins peuvent "previsualiser" une page auteur |
|
| 914 | + if ($qui['statut'] == '0minirezo' |
|
| 915 | + and !$qui['restreint'] |
|
| 916 | + ) { |
|
| 917 | + return true; |
|
| 918 | + } |
|
| 919 | + // "Voir en ligne" si l'auteur a un article publie |
|
| 920 | + $n = sql_fetsel( |
|
| 921 | + 'A.id_article', |
|
| 922 | + 'spip_auteurs_liens AS L LEFT JOIN spip_articles AS A ON (L.objet=\'article\' AND L.id_objet=A.id_article)', |
|
| 923 | + "A.statut='publie' AND L.id_auteur=" . sql_quote($id) |
|
| 924 | + ); |
|
| 925 | 925 | |
| 926 | - return $n ? true : false; |
|
| 926 | + return $n ? true : false; |
|
| 927 | 927 | } |
| 928 | 928 | |
| 929 | 929 | |
@@ -951,7 +951,7 @@ discard block |
||
| 951 | 951 | * @return bool true s'il a le droit, false sinon |
| 952 | 952 | **/ |
| 953 | 953 | function autoriser_auteur_creer_dist($faire, $type, $id, $qui, $opt) { |
| 954 | - return ($qui['statut'] == '0minirezo'); |
|
| 954 | + return ($qui['statut'] == '0minirezo'); |
|
| 955 | 955 | } |
| 956 | 956 | |
| 957 | 957 | |
@@ -971,69 +971,69 @@ discard block |
||
| 971 | 971 | **/ |
| 972 | 972 | function autoriser_auteur_modifier_dist($faire, $type, $id, $qui, $opt) { |
| 973 | 973 | |
| 974 | - // Si pas admin : seulement le droit de modifier ses donnees perso, mais pas statut ni login |
|
| 975 | - // la modif de l'email doit etre verifiee ou notifiee si possible, mais c'est a l'interface de gerer ca |
|
| 976 | - if (!in_array($qui['statut'], array('0minirezo'))) { |
|
| 977 | - if ($id == $qui['id_auteur'] |
|
| 978 | - && empty($opt['statut']) |
|
| 979 | - && empty($opt['webmestre']) |
|
| 980 | - && empty($opt['restreintes']) |
|
| 981 | - && empty($opt['login']) |
|
| 982 | - ) { |
|
| 983 | - return true; |
|
| 984 | - } |
|
| 985 | - return false; |
|
| 986 | - } |
|
| 987 | - |
|
| 988 | - // Un admin restreint peut modifier/creer un auteur non-admin mais il |
|
| 989 | - // n'a le droit ni de le promouvoir admin, ni de changer les rubriques |
|
| 990 | - if ($qui['restreint']) { |
|
| 991 | - if (isset($opt['webmestre']) and $opt['webmestre']) { |
|
| 992 | - return false; |
|
| 993 | - } elseif ((isset($opt['statut']) and ($opt['statut'] == '0minirezo')) |
|
| 994 | - or (isset($opt['restreintes']) and $opt['restreintes']) |
|
| 995 | - ) { |
|
| 996 | - return false; |
|
| 997 | - } else { |
|
| 998 | - if ($id == $qui['id_auteur']) { |
|
| 999 | - if (isset($opt['statut']) and $opt['statut']) { |
|
| 1000 | - return false; |
|
| 1001 | - } else { |
|
| 1002 | - return true; |
|
| 1003 | - } |
|
| 1004 | - } else { |
|
| 1005 | - if ($id_auteur = intval($id)) { |
|
| 1006 | - $t = sql_fetsel('statut', 'spip_auteurs', "id_auteur=$id_auteur"); |
|
| 1007 | - if ($t and $t['statut'] != '0minirezo') { |
|
| 1008 | - return true; |
|
| 1009 | - } else { |
|
| 1010 | - return false; |
|
| 1011 | - } |
|
| 1012 | - } // id = 0 => creation |
|
| 1013 | - else { |
|
| 1014 | - return true; |
|
| 1015 | - } |
|
| 1016 | - } |
|
| 1017 | - } |
|
| 1018 | - } |
|
| 1019 | - |
|
| 1020 | - // Un admin complet fait ce qu'il veut |
|
| 1021 | - // sauf se degrader |
|
| 1022 | - if ($id == $qui['id_auteur'] && (isset($opt['statut']) and $opt['statut'])) { |
|
| 1023 | - return false; |
|
| 1024 | - } elseif (isset($opt['webmestre']) |
|
| 1025 | - and $opt['webmestre'] |
|
| 1026 | - and (defined('_ID_WEBMESTRES') |
|
| 1027 | - or !autoriser('webmestre'))) { |
|
| 1028 | - // et toucher au statut webmestre si il ne l'est pas lui meme |
|
| 1029 | - // ou si les webmestres sont fixes par constante (securite) |
|
| 1030 | - return false; |
|
| 1031 | - } // et modifier un webmestre si il ne l'est pas lui meme |
|
| 1032 | - elseif (intval($id) and autoriser('webmestre', '', 0, $id) and !autoriser('webmestre')) { |
|
| 1033 | - return false; |
|
| 1034 | - } else { |
|
| 1035 | - return true; |
|
| 1036 | - } |
|
| 974 | + // Si pas admin : seulement le droit de modifier ses donnees perso, mais pas statut ni login |
|
| 975 | + // la modif de l'email doit etre verifiee ou notifiee si possible, mais c'est a l'interface de gerer ca |
|
| 976 | + if (!in_array($qui['statut'], array('0minirezo'))) { |
|
| 977 | + if ($id == $qui['id_auteur'] |
|
| 978 | + && empty($opt['statut']) |
|
| 979 | + && empty($opt['webmestre']) |
|
| 980 | + && empty($opt['restreintes']) |
|
| 981 | + && empty($opt['login']) |
|
| 982 | + ) { |
|
| 983 | + return true; |
|
| 984 | + } |
|
| 985 | + return false; |
|
| 986 | + } |
|
| 987 | + |
|
| 988 | + // Un admin restreint peut modifier/creer un auteur non-admin mais il |
|
| 989 | + // n'a le droit ni de le promouvoir admin, ni de changer les rubriques |
|
| 990 | + if ($qui['restreint']) { |
|
| 991 | + if (isset($opt['webmestre']) and $opt['webmestre']) { |
|
| 992 | + return false; |
|
| 993 | + } elseif ((isset($opt['statut']) and ($opt['statut'] == '0minirezo')) |
|
| 994 | + or (isset($opt['restreintes']) and $opt['restreintes']) |
|
| 995 | + ) { |
|
| 996 | + return false; |
|
| 997 | + } else { |
|
| 998 | + if ($id == $qui['id_auteur']) { |
|
| 999 | + if (isset($opt['statut']) and $opt['statut']) { |
|
| 1000 | + return false; |
|
| 1001 | + } else { |
|
| 1002 | + return true; |
|
| 1003 | + } |
|
| 1004 | + } else { |
|
| 1005 | + if ($id_auteur = intval($id)) { |
|
| 1006 | + $t = sql_fetsel('statut', 'spip_auteurs', "id_auteur=$id_auteur"); |
|
| 1007 | + if ($t and $t['statut'] != '0minirezo') { |
|
| 1008 | + return true; |
|
| 1009 | + } else { |
|
| 1010 | + return false; |
|
| 1011 | + } |
|
| 1012 | + } // id = 0 => creation |
|
| 1013 | + else { |
|
| 1014 | + return true; |
|
| 1015 | + } |
|
| 1016 | + } |
|
| 1017 | + } |
|
| 1018 | + } |
|
| 1019 | + |
|
| 1020 | + // Un admin complet fait ce qu'il veut |
|
| 1021 | + // sauf se degrader |
|
| 1022 | + if ($id == $qui['id_auteur'] && (isset($opt['statut']) and $opt['statut'])) { |
|
| 1023 | + return false; |
|
| 1024 | + } elseif (isset($opt['webmestre']) |
|
| 1025 | + and $opt['webmestre'] |
|
| 1026 | + and (defined('_ID_WEBMESTRES') |
|
| 1027 | + or !autoriser('webmestre'))) { |
|
| 1028 | + // et toucher au statut webmestre si il ne l'est pas lui meme |
|
| 1029 | + // ou si les webmestres sont fixes par constante (securite) |
|
| 1030 | + return false; |
|
| 1031 | + } // et modifier un webmestre si il ne l'est pas lui meme |
|
| 1032 | + elseif (intval($id) and autoriser('webmestre', '', 0, $id) and !autoriser('webmestre')) { |
|
| 1033 | + return false; |
|
| 1034 | + } else { |
|
| 1035 | + return true; |
|
| 1036 | + } |
|
| 1037 | 1037 | } |
| 1038 | 1038 | |
| 1039 | 1039 | |
@@ -1050,7 +1050,7 @@ discard block |
||
| 1050 | 1050 | * @return bool true s'il a le droit, false sinon |
| 1051 | 1051 | **/ |
| 1052 | 1052 | function autoriser_associerauteurs_dist($faire, $type, $id, $qui, $opt) { |
| 1053 | - return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 1053 | + return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 1054 | 1054 | } |
| 1055 | 1055 | |
| 1056 | 1056 | |
@@ -1067,7 +1067,7 @@ discard block |
||
| 1067 | 1067 | * @return bool true s'il a le droit, false sinon |
| 1068 | 1068 | **/ |
| 1069 | 1069 | function autoriser_chargerftp_dist($faire, $type, $id, $qui, $opt) { |
| 1070 | - return $qui['statut'] == '0minirezo'; |
|
| 1070 | + return $qui['statut'] == '0minirezo'; |
|
| 1071 | 1071 | } |
| 1072 | 1072 | |
| 1073 | 1073 | /** |
@@ -1083,7 +1083,7 @@ discard block |
||
| 1083 | 1083 | * @return bool true s'il a le droit, false sinon |
| 1084 | 1084 | **/ |
| 1085 | 1085 | function autoriser_debug_dist($faire, $type, $id, $qui, $opt) { |
| 1086 | - return $qui['statut'] == '0minirezo'; |
|
| 1086 | + return $qui['statut'] == '0minirezo'; |
|
| 1087 | 1087 | } |
| 1088 | 1088 | |
| 1089 | 1089 | /** |
@@ -1100,52 +1100,52 @@ discard block |
||
| 1100 | 1100 | * @return array Liste des rubriques |
| 1101 | 1101 | **/ |
| 1102 | 1102 | function liste_rubriques_auteur($id_auteur, $raz = false) { |
| 1103 | - static $restreint = array(); |
|
| 1104 | - |
|
| 1105 | - if (!$id_auteur = intval($id_auteur)) { |
|
| 1106 | - return array(); |
|
| 1107 | - } |
|
| 1108 | - if ($raz) { |
|
| 1109 | - unset($restreint[$id_auteur]); |
|
| 1110 | - } elseif (isset($restreint[$id_auteur])) { |
|
| 1111 | - return $restreint[$id_auteur]; |
|
| 1112 | - } |
|
| 1113 | - |
|
| 1114 | - $rubriques = array(); |
|
| 1115 | - if ((!isset($GLOBALS['meta']['version_installee']) |
|
| 1116 | - or $GLOBALS['meta']['version_installee'] > 16428) |
|
| 1117 | - and $r = sql_allfetsel( |
|
| 1118 | - 'id_objet', |
|
| 1119 | - 'spip_auteurs_liens', |
|
| 1120 | - 'id_auteur=' . intval($id_auteur) . " AND objet='rubrique' AND id_objet!=0" |
|
| 1121 | - ) |
|
| 1122 | - and count($r) |
|
| 1123 | - ) { |
|
| 1124 | - $r = array_column($r, 'id_objet'); |
|
| 1125 | - |
|
| 1126 | - // recuperer toute la branche, au format chaine enumeration |
|
| 1127 | - include_spip('inc/rubriques'); |
|
| 1128 | - $r = calcul_branche_in($r); |
|
| 1129 | - $r = explode(',', $r); |
|
| 1130 | - |
|
| 1131 | - // passer les rubriques en index, elimine les doublons |
|
| 1132 | - $r = array_flip($r); |
|
| 1133 | - // recuperer les index seuls |
|
| 1134 | - $r = array_keys($r); |
|
| 1135 | - // combiner pour avoir un tableau id_rubrique=>id_rubrique |
|
| 1136 | - // est-ce vraiment utile ? (on preserve la forme donnee par le code precedent) |
|
| 1137 | - $rubriques = array_combine($r, $r); |
|
| 1138 | - } |
|
| 1139 | - |
|
| 1140 | - // Affecter l'auteur session le cas echeant |
|
| 1141 | - if (isset($GLOBALS['visiteur_session']['id_auteur']) |
|
| 1142 | - and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur |
|
| 1143 | - ) { |
|
| 1144 | - $GLOBALS['visiteur_session']['restreint'] = $rubriques; |
|
| 1145 | - } |
|
| 1146 | - |
|
| 1147 | - |
|
| 1148 | - return $restreint[$id_auteur] = $rubriques; |
|
| 1103 | + static $restreint = array(); |
|
| 1104 | + |
|
| 1105 | + if (!$id_auteur = intval($id_auteur)) { |
|
| 1106 | + return array(); |
|
| 1107 | + } |
|
| 1108 | + if ($raz) { |
|
| 1109 | + unset($restreint[$id_auteur]); |
|
| 1110 | + } elseif (isset($restreint[$id_auteur])) { |
|
| 1111 | + return $restreint[$id_auteur]; |
|
| 1112 | + } |
|
| 1113 | + |
|
| 1114 | + $rubriques = array(); |
|
| 1115 | + if ((!isset($GLOBALS['meta']['version_installee']) |
|
| 1116 | + or $GLOBALS['meta']['version_installee'] > 16428) |
|
| 1117 | + and $r = sql_allfetsel( |
|
| 1118 | + 'id_objet', |
|
| 1119 | + 'spip_auteurs_liens', |
|
| 1120 | + 'id_auteur=' . intval($id_auteur) . " AND objet='rubrique' AND id_objet!=0" |
|
| 1121 | + ) |
|
| 1122 | + and count($r) |
|
| 1123 | + ) { |
|
| 1124 | + $r = array_column($r, 'id_objet'); |
|
| 1125 | + |
|
| 1126 | + // recuperer toute la branche, au format chaine enumeration |
|
| 1127 | + include_spip('inc/rubriques'); |
|
| 1128 | + $r = calcul_branche_in($r); |
|
| 1129 | + $r = explode(',', $r); |
|
| 1130 | + |
|
| 1131 | + // passer les rubriques en index, elimine les doublons |
|
| 1132 | + $r = array_flip($r); |
|
| 1133 | + // recuperer les index seuls |
|
| 1134 | + $r = array_keys($r); |
|
| 1135 | + // combiner pour avoir un tableau id_rubrique=>id_rubrique |
|
| 1136 | + // est-ce vraiment utile ? (on preserve la forme donnee par le code precedent) |
|
| 1137 | + $rubriques = array_combine($r, $r); |
|
| 1138 | + } |
|
| 1139 | + |
|
| 1140 | + // Affecter l'auteur session le cas echeant |
|
| 1141 | + if (isset($GLOBALS['visiteur_session']['id_auteur']) |
|
| 1142 | + and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur |
|
| 1143 | + ) { |
|
| 1144 | + $GLOBALS['visiteur_session']['restreint'] = $rubriques; |
|
| 1145 | + } |
|
| 1146 | + |
|
| 1147 | + |
|
| 1148 | + return $restreint[$id_auteur] = $rubriques; |
|
| 1149 | 1149 | } |
| 1150 | 1150 | |
| 1151 | 1151 | /** |
@@ -1161,7 +1161,7 @@ discard block |
||
| 1161 | 1161 | * @return bool true s'il a le droit, false sinon |
| 1162 | 1162 | **/ |
| 1163 | 1163 | function autoriser_rubrique_previsualiser_dist($faire, $type, $id, $qui, $opt) { |
| 1164 | - return autoriser('previsualiser'); |
|
| 1164 | + return autoriser('previsualiser'); |
|
| 1165 | 1165 | } |
| 1166 | 1166 | |
| 1167 | 1167 | /** |
@@ -1177,7 +1177,7 @@ discard block |
||
| 1177 | 1177 | * @return bool true s'il a le droit, false sinon |
| 1178 | 1178 | **/ |
| 1179 | 1179 | function autoriser_rubrique_iconifier_dist($faire, $type, $id, $qui, $opt) { |
| 1180 | - return autoriser('publierdans', 'rubrique', $id, $qui, $opt); |
|
| 1180 | + return autoriser('publierdans', 'rubrique', $id, $qui, $opt); |
|
| 1181 | 1181 | } |
| 1182 | 1182 | |
| 1183 | 1183 | /** |
@@ -1193,8 +1193,8 @@ discard block |
||
| 1193 | 1193 | * @return bool true s'il a le droit, false sinon |
| 1194 | 1194 | **/ |
| 1195 | 1195 | function autoriser_auteur_iconifier_dist($faire, $type, $id, $qui, $opt) { |
| 1196 | - return (($id == $qui['id_auteur']) or |
|
| 1197 | - (($qui['statut'] == '0minirezo') and !$qui['restreint'])); |
|
| 1196 | + return (($id == $qui['id_auteur']) or |
|
| 1197 | + (($qui['statut'] == '0minirezo') and !$qui['restreint'])); |
|
| 1198 | 1198 | } |
| 1199 | 1199 | |
| 1200 | 1200 | /** |
@@ -1210,8 +1210,8 @@ discard block |
||
| 1210 | 1210 | * @return bool true s'il a le droit, false sinon |
| 1211 | 1211 | **/ |
| 1212 | 1212 | function autoriser_iconifier_dist($faire, $type, $id, $qui, $opt) { |
| 1213 | - // par defaut, on a le droit d'iconifier si on a le droit de modifier |
|
| 1214 | - return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 1213 | + // par defaut, on a le droit d'iconifier si on a le droit de modifier |
|
| 1214 | + return autoriser('modifier', $type, $id, $qui, $opt); |
|
| 1215 | 1215 | } |
| 1216 | 1216 | |
| 1217 | 1217 | |
@@ -1229,7 +1229,7 @@ discard block |
||
| 1229 | 1229 | * @return bool true |
| 1230 | 1230 | **/ |
| 1231 | 1231 | function autoriser_ok_dist($faire, $type, $id, $qui, $opt) { |
| 1232 | - return true; |
|
| 1232 | + return true; |
|
| 1233 | 1233 | } |
| 1234 | 1234 | |
| 1235 | 1235 | /** |
@@ -1246,7 +1246,7 @@ discard block |
||
| 1246 | 1246 | * @return bool false |
| 1247 | 1247 | **/ |
| 1248 | 1248 | function autoriser_niet_dist($faire, $type, $id, $qui, $opt) { |
| 1249 | - return false; |
|
| 1249 | + return false; |
|
| 1250 | 1250 | } |
| 1251 | 1251 | |
| 1252 | 1252 | /** |
@@ -1262,11 +1262,11 @@ discard block |
||
| 1262 | 1262 | * @return bool false |
| 1263 | 1263 | **/ |
| 1264 | 1264 | function autoriser_base_reparer_dist($faire, $type, $id, $qui, $opt) { |
| 1265 | - if (!autoriser('detruire') or _request('reinstall')) { |
|
| 1266 | - return false; |
|
| 1267 | - } |
|
| 1265 | + if (!autoriser('detruire') or _request('reinstall')) { |
|
| 1266 | + return false; |
|
| 1267 | + } |
|
| 1268 | 1268 | |
| 1269 | - return true; |
|
| 1269 | + return true; |
|
| 1270 | 1270 | } |
| 1271 | 1271 | |
| 1272 | 1272 | /** |
@@ -1282,7 +1282,7 @@ discard block |
||
| 1282 | 1282 | * @return bool true s'il a le droit, false sinon |
| 1283 | 1283 | **/ |
| 1284 | 1284 | function autoriser_infosperso_dist($faire, $type, $id, $qui, $opt) { |
| 1285 | - return true; |
|
| 1285 | + return true; |
|
| 1286 | 1286 | } |
| 1287 | 1287 | |
| 1288 | 1288 | /** |
@@ -1298,7 +1298,7 @@ discard block |
||
| 1298 | 1298 | * @return bool true s'il a le droit, false sinon |
| 1299 | 1299 | **/ |
| 1300 | 1300 | function autoriser_langage_configurer_dist($faire, $type, $id, $qui, $opt) { |
| 1301 | - return true; |
|
| 1301 | + return true; |
|
| 1302 | 1302 | } |
| 1303 | 1303 | |
| 1304 | 1304 | /** |
@@ -1314,7 +1314,7 @@ discard block |
||
| 1314 | 1314 | * @return bool true s'il a le droit, false sinon |
| 1315 | 1315 | **/ |
| 1316 | 1316 | function autoriser_configurerlangage_dist($faire, $type, $id, $qui, $opt) { |
| 1317 | - return autoriser('configurer', '_langage', $id, $qui, $opt); |
|
| 1317 | + return autoriser('configurer', '_langage', $id, $qui, $opt); |
|
| 1318 | 1318 | } |
| 1319 | 1319 | |
| 1320 | 1320 | /** |
@@ -1330,7 +1330,7 @@ discard block |
||
| 1330 | 1330 | * @return bool true s'il a le droit, false sinon |
| 1331 | 1331 | **/ |
| 1332 | 1332 | function autoriser_preferences_configurer_dist($faire, $type, $id, $qui, $opt) { |
| 1333 | - return true; |
|
| 1333 | + return true; |
|
| 1334 | 1334 | } |
| 1335 | 1335 | |
| 1336 | 1336 | /** |
@@ -1346,7 +1346,7 @@ discard block |
||
| 1346 | 1346 | * @return bool true s'il a le droit, false sinon |
| 1347 | 1347 | **/ |
| 1348 | 1348 | function autoriser_configurerpreferences_dist($faire, $type, $id, $qui, $opt) { |
| 1349 | - return autoriser('configurer', '_preferences', $id, $qui, $opt); |
|
| 1349 | + return autoriser('configurer', '_preferences', $id, $qui, $opt); |
|
| 1350 | 1350 | } |
| 1351 | 1351 | |
| 1352 | 1352 | /** |
@@ -1362,8 +1362,8 @@ discard block |
||
| 1362 | 1362 | * @return bool true s'il a le droit, false sinon |
| 1363 | 1363 | **/ |
| 1364 | 1364 | function autoriser_menudeveloppement_menugrandeentree_dist($faire, $type, $id, $qui, $opt) { |
| 1365 | - return (isset($GLOBALS['visiteur_session']['prefs']['activer_menudev']) |
|
| 1366 | - and $GLOBALS['visiteur_session']['prefs']['activer_menudev'] == 'oui'); |
|
| 1365 | + return (isset($GLOBALS['visiteur_session']['prefs']['activer_menudev']) |
|
| 1366 | + and $GLOBALS['visiteur_session']['prefs']['activer_menudev'] == 'oui'); |
|
| 1367 | 1367 | } |
| 1368 | 1368 | |
| 1369 | 1369 | /** |
@@ -1380,7 +1380,7 @@ discard block |
||
| 1380 | 1380 | * @return bool true s'il a le droit, false sinon |
| 1381 | 1381 | **/ |
| 1382 | 1382 | function autoriser_menugrandeentree_dist($faire, $type, $id, $qui, $opt) { |
| 1383 | - return true; |
|
| 1383 | + return true; |
|
| 1384 | 1384 | } |
| 1385 | 1385 | |
| 1386 | 1386 | /** |
@@ -1396,7 +1396,7 @@ discard block |
||
| 1396 | 1396 | * @return bool true s'il a le droit, false sinon |
| 1397 | 1397 | **/ |
| 1398 | 1398 | function autoriser_auteurs_voir_dist($faire, $type, $id, $qui, $opt) { |
| 1399 | - return true; |
|
| 1399 | + return true; |
|
| 1400 | 1400 | } |
| 1401 | 1401 | |
| 1402 | 1402 | /** |
@@ -1412,7 +1412,7 @@ discard block |
||
| 1412 | 1412 | * @return bool true s'il a le droit, false sinon |
| 1413 | 1413 | **/ |
| 1414 | 1414 | function autoriser_auteurs_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1415 | - return autoriser('voir', '_auteurs', $id, $qui, $opt); |
|
| 1415 | + return autoriser('voir', '_auteurs', $id, $qui, $opt); |
|
| 1416 | 1416 | } |
| 1417 | 1417 | |
| 1418 | 1418 | /** |
@@ -1428,7 +1428,7 @@ discard block |
||
| 1428 | 1428 | * @return bool true s'il a le droit, false sinon |
| 1429 | 1429 | **/ |
| 1430 | 1430 | function autoriser_articles_voir_dist($faire, $type, $id, $qui, $opt) { |
| 1431 | - return true; |
|
| 1431 | + return true; |
|
| 1432 | 1432 | } |
| 1433 | 1433 | |
| 1434 | 1434 | /** |
@@ -1444,7 +1444,7 @@ discard block |
||
| 1444 | 1444 | * @return bool true s'il a le droit, false sinon |
| 1445 | 1445 | **/ |
| 1446 | 1446 | function autoriser_articles_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1447 | - return autoriser('voir', '_articles', $id, $qui, $opt); |
|
| 1447 | + return autoriser('voir', '_articles', $id, $qui, $opt); |
|
| 1448 | 1448 | } |
| 1449 | 1449 | |
| 1450 | 1450 | /** |
@@ -1460,7 +1460,7 @@ discard block |
||
| 1460 | 1460 | * @return bool true s'il a le droit, false sinon |
| 1461 | 1461 | **/ |
| 1462 | 1462 | function autoriser_rubriques_voir_dist($faire, $type, $id, $qui, $opt) { |
| 1463 | - return true; |
|
| 1463 | + return true; |
|
| 1464 | 1464 | } |
| 1465 | 1465 | |
| 1466 | 1466 | /** |
@@ -1476,7 +1476,7 @@ discard block |
||
| 1476 | 1476 | * @return bool true s'il a le droit, false sinon |
| 1477 | 1477 | **/ |
| 1478 | 1478 | function autoriser_rubriques_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1479 | - return autoriser('voir', '_rubriques', $id, $qui, $opt); |
|
| 1479 | + return autoriser('voir', '_rubriques', $id, $qui, $opt); |
|
| 1480 | 1480 | } |
| 1481 | 1481 | |
| 1482 | 1482 | /** |
@@ -1492,7 +1492,7 @@ discard block |
||
| 1492 | 1492 | * @return bool true s'il a le droit, false sinon |
| 1493 | 1493 | **/ |
| 1494 | 1494 | function autoriser_articlecreer_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1495 | - return verifier_table_non_vide(); |
|
| 1495 | + return verifier_table_non_vide(); |
|
| 1496 | 1496 | } |
| 1497 | 1497 | |
| 1498 | 1498 | |
@@ -1511,7 +1511,7 @@ discard block |
||
| 1511 | 1511 | * @return bool true s'il a le droit, false sinon |
| 1512 | 1512 | **/ |
| 1513 | 1513 | function autoriser_auteurcreer_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1514 | - return autoriser('creer', 'auteur', $id, $qui, $opt); |
|
| 1514 | + return autoriser('creer', 'auteur', $id, $qui, $opt); |
|
| 1515 | 1515 | } |
| 1516 | 1516 | |
| 1517 | 1517 | /** |
@@ -1527,13 +1527,13 @@ discard block |
||
| 1527 | 1527 | * @return bool true s'il a le droit, false sinon |
| 1528 | 1528 | **/ |
| 1529 | 1529 | function autoriser_visiteurs_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1530 | - include_spip('base/abstract_sql'); |
|
| 1531 | - return |
|
| 1532 | - $qui['statut'] == '0minirezo' and !$qui['restreint'] |
|
| 1533 | - and ( |
|
| 1534 | - $GLOBALS['meta']["accepter_visiteurs"] != 'non' |
|
| 1535 | - or sql_countsel('spip_auteurs', 'statut in ("6forum", "nouveau")') > 0 |
|
| 1536 | - ); |
|
| 1530 | + include_spip('base/abstract_sql'); |
|
| 1531 | + return |
|
| 1532 | + $qui['statut'] == '0minirezo' and !$qui['restreint'] |
|
| 1533 | + and ( |
|
| 1534 | + $GLOBALS['meta']["accepter_visiteurs"] != 'non' |
|
| 1535 | + or sql_countsel('spip_auteurs', 'statut in ("6forum", "nouveau")') > 0 |
|
| 1536 | + ); |
|
| 1537 | 1537 | } |
| 1538 | 1538 | |
| 1539 | 1539 | /** |
@@ -1549,7 +1549,7 @@ discard block |
||
| 1549 | 1549 | * @return bool true s'il a le droit, false sinon |
| 1550 | 1550 | **/ |
| 1551 | 1551 | function autoriser_suiviedito_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1552 | - return $qui['statut'] == '0minirezo'; |
|
| 1552 | + return $qui['statut'] == '0minirezo'; |
|
| 1553 | 1553 | } |
| 1554 | 1554 | |
| 1555 | 1555 | /** |
@@ -1565,7 +1565,7 @@ discard block |
||
| 1565 | 1565 | * @return bool true s'il a le droit, false sinon |
| 1566 | 1566 | **/ |
| 1567 | 1567 | function autoriser_synchro_menu_dist($faire, $type, $id, $qui, $opt) { |
| 1568 | - return $qui['statut'] == '0minirezo'; |
|
| 1568 | + return $qui['statut'] == '0minirezo'; |
|
| 1569 | 1569 | } |
| 1570 | 1570 | |
| 1571 | 1571 | /** |
@@ -1693,7 +1693,7 @@ discard block |
||
| 1693 | 1693 | * @return bool true s'il a le droit, false sinon |
| 1694 | 1694 | **/ |
| 1695 | 1695 | function autoriser_queue_purger_dist($faire, $type, $id, $qui, $opt) { |
| 1696 | - return autoriser('webmestre'); |
|
| 1696 | + return autoriser('webmestre'); |
|
| 1697 | 1697 | } |
| 1698 | 1698 | |
| 1699 | 1699 | |
@@ -1711,11 +1711,11 @@ discard block |
||
| 1711 | 1711 | * @return bool true s'il a le droit, false sinon |
| 1712 | 1712 | **/ |
| 1713 | 1713 | function autoriser_echafauder_dist($faire, $type, $id, $qui, $opt) { |
| 1714 | - if (test_espace_prive()) { |
|
| 1715 | - return intval($qui['id_auteur']) ? true : false; |
|
| 1716 | - } else { |
|
| 1717 | - return autoriser('webmestre', '', $id, $qui, $opt); |
|
| 1718 | - } |
|
| 1714 | + if (test_espace_prive()) { |
|
| 1715 | + return intval($qui['id_auteur']) ? true : false; |
|
| 1716 | + } else { |
|
| 1717 | + return autoriser('webmestre', '', $id, $qui, $opt); |
|
| 1718 | + } |
|
| 1719 | 1719 | } |
| 1720 | 1720 | |
| 1721 | 1721 | |
@@ -1730,27 +1730,27 @@ discard block |
||
| 1730 | 1730 | * Identifiants d'auteurs |
| 1731 | 1731 | */ |
| 1732 | 1732 | function auteurs_objet($objet, $id_objet, $cond = '') { |
| 1733 | - $objet = objet_type($objet); |
|
| 1734 | - $where = array( |
|
| 1735 | - 'objet=' . sql_quote($objet), |
|
| 1736 | - 'id_objet=' . intval($id_objet) |
|
| 1737 | - ); |
|
| 1738 | - if (!empty($cond)) { |
|
| 1739 | - if (is_array($cond)) { |
|
| 1740 | - $where = array_merge($where, $cond); |
|
| 1741 | - } else { |
|
| 1742 | - $where[] = $cond; |
|
| 1743 | - } |
|
| 1744 | - } |
|
| 1745 | - $auteurs = sql_allfetsel( |
|
| 1746 | - 'id_auteur', |
|
| 1747 | - 'spip_auteurs_liens', |
|
| 1748 | - $where |
|
| 1749 | - ); |
|
| 1750 | - if (is_array($auteurs)) { |
|
| 1751 | - return array_column($auteurs, 'id_auteur'); |
|
| 1752 | - } |
|
| 1753 | - return array(); |
|
| 1733 | + $objet = objet_type($objet); |
|
| 1734 | + $where = array( |
|
| 1735 | + 'objet=' . sql_quote($objet), |
|
| 1736 | + 'id_objet=' . intval($id_objet) |
|
| 1737 | + ); |
|
| 1738 | + if (!empty($cond)) { |
|
| 1739 | + if (is_array($cond)) { |
|
| 1740 | + $where = array_merge($where, $cond); |
|
| 1741 | + } else { |
|
| 1742 | + $where[] = $cond; |
|
| 1743 | + } |
|
| 1744 | + } |
|
| 1745 | + $auteurs = sql_allfetsel( |
|
| 1746 | + 'id_auteur', |
|
| 1747 | + 'spip_auteurs_liens', |
|
| 1748 | + $where |
|
| 1749 | + ); |
|
| 1750 | + if (is_array($auteurs)) { |
|
| 1751 | + return array_column($auteurs, 'id_auteur'); |
|
| 1752 | + } |
|
| 1753 | + return array(); |
|
| 1754 | 1754 | } |
| 1755 | 1755 | |
| 1756 | 1756 | /** |
@@ -1764,11 +1764,11 @@ discard block |
||
| 1764 | 1764 | * - false : serveur SQL indisponible |
| 1765 | 1765 | */ |
| 1766 | 1766 | function auteurs_article($id_article, $cond = '') { |
| 1767 | - return sql_allfetsel( |
|
| 1768 | - 'id_auteur', |
|
| 1769 | - 'spip_auteurs_liens', |
|
| 1770 | - "objet='article' AND id_objet=" . intval($id_article) . ($cond ? " AND $cond" : '') |
|
| 1771 | - ); |
|
| 1767 | + return sql_allfetsel( |
|
| 1768 | + 'id_auteur', |
|
| 1769 | + 'spip_auteurs_liens', |
|
| 1770 | + "objet='article' AND id_objet=" . intval($id_article) . ($cond ? " AND $cond" : '') |
|
| 1771 | + ); |
|
| 1772 | 1772 | } |
| 1773 | 1773 | |
| 1774 | 1774 | |
@@ -1782,7 +1782,7 @@ discard block |
||
| 1782 | 1782 | */ |
| 1783 | 1783 | function acces_restreint_rubrique($id_rubrique) { |
| 1784 | 1784 | |
| 1785 | - return (isset($GLOBALS['connect_id_rubrique'][$id_rubrique])); |
|
| 1785 | + return (isset($GLOBALS['connect_id_rubrique'][$id_rubrique])); |
|
| 1786 | 1786 | } |
| 1787 | 1787 | |
| 1788 | 1788 | |
@@ -1795,12 +1795,12 @@ discard block |
||
| 1795 | 1795 | * @return bool true si un parent existe |
| 1796 | 1796 | */ |
| 1797 | 1797 | function verifier_table_non_vide($table = 'spip_rubriques') { |
| 1798 | - static $done = array(); |
|
| 1799 | - if (!isset($done[$table])) { |
|
| 1800 | - $done[$table] = sql_countsel($table) > 0; |
|
| 1801 | - } |
|
| 1798 | + static $done = array(); |
|
| 1799 | + if (!isset($done[$table])) { |
|
| 1800 | + $done[$table] = sql_countsel($table) > 0; |
|
| 1801 | + } |
|
| 1802 | 1802 | |
| 1803 | - return $done[$table]; |
|
| 1803 | + return $done[$table]; |
|
| 1804 | 1804 | } |
| 1805 | 1805 | |
| 1806 | 1806 | /** |
@@ -1825,15 +1825,15 @@ discard block |
||
| 1825 | 1825 | */ |
| 1826 | 1826 | function autoriser_inscrireauteur_dist($faire, $quoi, $id, $qui, $opt) { |
| 1827 | 1827 | |
| 1828 | - $s = array_search($quoi, $GLOBALS['liste_des_statuts']); |
|
| 1829 | - switch ($s) { |
|
| 1830 | - case 'info_redacteurs': |
|
| 1831 | - return ($GLOBALS['meta']['accepter_inscriptions'] == 'oui'); |
|
| 1832 | - case 'info_visiteurs': |
|
| 1833 | - return ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' or $GLOBALS['meta']['forums_publics'] == 'abo'); |
|
| 1834 | - } |
|
| 1828 | + $s = array_search($quoi, $GLOBALS['liste_des_statuts']); |
|
| 1829 | + switch ($s) { |
|
| 1830 | + case 'info_redacteurs': |
|
| 1831 | + return ($GLOBALS['meta']['accepter_inscriptions'] == 'oui'); |
|
| 1832 | + case 'info_visiteurs': |
|
| 1833 | + return ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' or $GLOBALS['meta']['forums_publics'] == 'abo'); |
|
| 1834 | + } |
|
| 1835 | 1835 | |
| 1836 | - return false; |
|
| 1836 | + return false; |
|
| 1837 | 1837 | } |
| 1838 | 1838 | |
| 1839 | 1839 | /** |
@@ -1849,7 +1849,7 @@ discard block |
||
| 1849 | 1849 | * @return bool false |
| 1850 | 1850 | **/ |
| 1851 | 1851 | function autoriser_inscription_relancer_dist($faire, $type, $id, $qui, $opt) { |
| 1852 | - return $qui['statut'] == '0minirezo' and !$qui['restreint']; |
|
| 1852 | + return $qui['statut'] == '0minirezo' and !$qui['restreint']; |
|
| 1853 | 1853 | } |
| 1854 | 1854 | |
| 1855 | 1855 | /** |
@@ -1865,5 +1865,5 @@ discard block |
||
| 1865 | 1865 | * @return bool true s'il a le droit, false sinon |
| 1866 | 1866 | **/ |
| 1867 | 1867 | function autoriser_phpinfos_dist($faire, $type, $id, $qui, $opt) { |
| 1868 | - return autoriser('webmestre'); |
|
| 1868 | + return autoriser('webmestre'); |
|
| 1869 | 1869 | } |