Changeset 90570 in spip-zone
- Timestamp:
- Jun 28, 2015, 7:49:49 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/produits/trunk/action/editer_produit.php
r80934 r90570 6 6 /** 7 7 * Action de création / Modification d'un produit 8 * @param unknown_type$arg9 * @return unknown_type8 * @param string|null $arg 9 * @return array 10 10 */ 11 11 function action_editer_produit_dist($arg=null) { 12 include_spip('inc/autoriser'); 13 $err=""; 12 14 if (is_null($arg)){ 13 15 $securiser_action = charger_fonction('securiser_action', 'inc'); … … 17 19 // si id_produit n'est pas un nombre, c'est une creation 18 20 if (!$id_produit = intval($arg)) { 19 $id_produit = insert_produit(array('id_rubrique'=>_request('id_parent')));21 $id_produit = produit_inserer(_request('id_parent')); 20 22 } 21 23 22 24 // Enregistre l'envoi dans la BD 23 if ($id_produit > 0) $err = produit_set($id_produit); 25 if ($id_produit > 0) $err = produit_modifier($id_produit); 26 27 if ($err) 28 spip_log("echec editeur produit: $err",_LOG_ERREUR); 24 29 25 30 return array($id_produit,$err); … … 29 34 * Crée un nouveau produit et retourne son ID 30 35 * 31 * @param array $champs Un tableau avec les champs par défaut lors de l'insertion 32 * @return int id_produit 33 */ 34 function insert_produit($champs=array()) { 36 * @param int $id_rubrique 37 * @param array $set 38 * Un tableau avec les champs par défaut lors de l'insertion 39 * @return int 40 */ 41 function produit_inserer($id_rubrique,$set=null) { 35 42 $id_produit = false; 36 43 37 44 // On insère seulement s'il y a une rubrique correcte 38 if (isset($champs['id_rubrique']) and $champs['id_rubrique'] = intval($champs['id_rubrique'])){ 45 if ($id_rubrique = intval($id_rubrique)){ 46 $champs = array(); 39 47 // Si id_rubrique vaut 0 ou n'est pas definie, creer le produit dans la premiere rubrique racine 40 if (!$id_rubrique = intval($ champs['id_rubrique'])) {48 if (!$id_rubrique = intval($id_rubrique)) { 41 49 $row = sql_fetsel('id_rubrique, id_secteur, lang', 'spip_rubriques', 'id_parent=0','', '0+titre,titre', "1"); 42 50 $id_rubrique = $row['id_rubrique']; 43 } else $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', "id_rubrique=$id_rubrique"); 44 51 } else $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', "id_rubrique=".intval($id_rubrique)); 52 53 $lang_rub = $row['lang']; 54 $champs['id_rubrique'] = $id_rubrique; 45 55 // On propage le secteur 46 56 $champs['id_secteur'] = $row['id_secteur']; … … 55 65 $champs['statut'] = 'prop'; 56 66 67 if ($set) 68 $champs = array_merge($champs, $set); 69 57 70 // Envoyer aux plugins avant insertion 58 71 $champs = pipeline('pre_insertion', … … 84 97 * 85 98 * @param int $id_produit 86 * @param unknown_type$set87 * @return $err88 */ 89 function produit_ set($id_produit, $set=null) {99 * @param array $set 100 * @return string 101 */ 102 function produit_modifier($id_produit, $set=null) { 90 103 $err = ''; 91 92 include_spip('inc/saisies'); 93 $saisies = saisies_chercher_formulaire('editer_produit', array($id_produit)); 94 $champs = saisies_lister_champs($saisies, false); 95 96 $c = array(); 97 foreach ($champs as $champ) 98 $c[$champ] = _request($champ,$set); 99 100 // on donne une taxe null si le champ est vide 101 // MAIS spip < 2.3 ne gere pas les null avec sql_updateq.. 102 // nous appliquons une requete en plus pour ce cas 103 if (isset($c['taxe']) and !strlen(trim($c['taxe']))) { 104 sql_update('spip_produits', array('taxe'=>'NULL'), 'id_produit='.$id_produit); 105 unset ($c['taxe']); 106 } 107 104 108 105 include_spip('inc/modifier'); 109 revision_produit($id_produit, $c); 110 111 // Modification de statut, changement de rubrique ? 112 $c = array(); 113 foreach (array( 114 'date', 'statut', 'id_parent' 115 ) as $champ) 116 $c[$champ] = _request($champ, $set); 117 $err .= instituer_produit($id_produit, $c); 118 119 return $err; 120 } 121 122 /** 123 * Enregistre une révision de produit 124 * 125 * @param int $id_produit 126 * @param array $c 127 * @return 128 */ 129 function revision_produit($id_produit, $c=false) { 130 $invalideur = "id='id_produit/$id_produit'"; 131 132 modifier_contenu('produit', $id_produit, 106 include_spip('inc/filtres'); 107 $c = collecter_requests( 108 // white list 109 objet_info('produit','champs_editables'), 110 // black list 111 array('date','statut','id_parent'), 112 // donnees eventuellement fournies 113 $set 114 ); 115 116 // Si le produit est publie, invalider les caches et demander sa reindexation 117 $t = sql_getfetsel("statut", "spip_produits", "id_produit=".intval($id_produit)); 118 $invalideur = $indexation = false; 119 if ($t == 'publie') { 120 $invalideur = "id='produit/$id_produit'"; 121 $indexation = true; 122 } 123 124 if ($err = objet_modifier_champs('produit', $id_produit, 133 125 array( 134 126 'nonvide' => array('titre' => _T('info_sans_titre')), 135 'invalideur' => $invalideur 127 'invalideur' => $invalideur, 128 'indexation' => $indexation, 136 129 ), 137 $c); 138 139 return ''; // pas d'erreur 140 } 130 $c)) 131 return $err; 132 133 // Modification de statut, changement de rubrique ? 134 $c = collecter_requests(array('date', 'statut', 'id_parent'),array(),$set); 135 $err = produit_instituer($id_produit, $c); 136 137 return $err; 138 } 139 141 140 142 141 /** … … 145 144 * @param int $id_produit 146 145 * @param array $c 147 * @return 148 */ 149 function instituer_produit($id_produit, $c, $calcul_rub=true){ 146 * @param bool $calcul_rub 147 * @return string 148 */ 149 function produit_instituer($id_produit, $c, $calcul_rub=true){ 150 150 include_spip('inc/autoriser'); 151 151 include_spip('inc/rubriques');
Note: See TracChangeset
for help on using the changeset viewer.