function upgrade_produits() { $all = sql_allfetsel("*", "spip_produits"); include_once _DIR_PLUGIN_SALE . "sale_fonctions.php"; foreach ($all as $produit) { #var_dump($produit); $set = array(); if (function_exists('sale')) { $set['texte'] = sale($produit['texte']); $set['texte'] = preg_replace(",</?p>\\s*,ims", "\n\n", $set['texte']); $set['texte'] = preg_replace(",<br>(\n+),ims", "\\1", $set['texte']); $set['texte'] = trim($set['texte']) . "\n"; } $set['reference'] = trim($produit['reference']); if (!$set['reference']) { $set['reference'] = 'P' . trim($produit['old_id']); #var_dump($set); #die(); } if (strpos($produit['poids'], ".") !== false) { $set['poids'] = intval(round(floatval($produit['poids']) * 1000)); } #var_dump($set); sql_updateq("spip_produits", $set, 'id_produit=' . intval($produit['id_produit'])); } sql_alter("table spip_produits CHANGE poids poids bigint(21) NOT NULL DEFAULT 0"); die('ok?'); }
function action_factures_export_csv_mensuel_dist() { $securiser_action = charger_fonction("securiser_action", "inc"); $date = $securiser_action(); $t = strtotime($date); $date_debut = date('Y-m-01 00:00:00', $t); $t = strtotime('+1 month', strtotime($date_debut)); $t = strtotime('+5 day', $t); $date_fin = date('Y-m-01 00:00:00', $t); $entetes = array('ID', 'Date', 'No', 'Client', 'HT', 'TTC', 'Paye', 'Date paiement', 'Commande'); $factures = sql_allfetsel("id_facture,date,no_comptable,id_auteur,montant_ht,montant,montant_regle,date_paiement", "spip_factures", "date>=" . sql_quote($date_debut) . " AND date<" . sql_quote($date_fin), '', 'id_facture'); foreach ($factures as $k => $facture) { $factures[$k]['date'] = date('d/m/Y', strtotime($facture['date'])); $factures[$k]['date_paiement'] = date('d/m/Y', strtotime($facture['date_paiement'])); $nom = sql_getfetsel('nom', 'spip_auteurs', 'id_auteur=' . intval($facture['id_auteur'])); $factures[$k]['id_auteur'] = trim($nom . " #" . $facture['id_auteur']); $factures[$k]['commande'] = ''; if ($trans = sql_fetsel("*", "spip_transactions", "id_facture=" . intval($facture['id_facture'])) and $id_commande = intval($trans['id_commande'])) { $reference = sql_getfetsel('reference', 'spip_commandes', 'id_commande=' . intval($id_commande)); $factures[$k]['commande'] = trim($reference . " #" . $trans['id_commande']); } } $factures = array_map('array_values', $factures); $nom = $GLOBALS['meta']['nom_site'] . ' Factures ' . date('Y-m'); $exporter_csv = charger_fonction('exporter_csv', 'inc'); $exporter_csv($nom, $factures, ',', $entetes, true); }
function genie_depublier_dist($time) { //va chercher les objets de spip_depublies avec une date_depublie pour aujourd'hui include_spip('base/abstract_sql'); $today = date('Y-m-d H:i:s'); if ($depublications = sql_allfetsel('*', 'spip_depublies', 'DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") <= ' . sql_quote($today) . ' AND DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") >0') and is_array($depublications)) { foreach ($depublications as $depublication) { $objet = $depublication['objet']; $id_objet = $depublication['id_objet']; $statut_depublication = $depublication['statut']; $date_depublie = $depublication['date_depublie']; spip_log("on veut depublier {$objet} {$id_objet} {$statut_depublication}", 'depublication'); //on cherche la table de l'objet donné $_id_objet = id_table_objet($objet); //id_article $table = table_objet_sql($objet); //articles //si le statut est différent de celui demandé if ($a_depublier = sql_getfetsel($_id_objet, $table, "statut != " . sql_quote($statut_depublication) . " AND {$_id_objet} = " . intval($id_objet))) { //si les conditions sont remplies, on change le statut dans cette table sql_updateq($table, array("statut" => $statut_depublication), "{$_id_objet}= " . intval($id_objet)); //et on supprime l'entrée sql_delete('spip_depublies', 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet)); } } } return 1; }
function shop_liste_etapes($id_panier) { static $lesetapes = array(); $etapes = array('panier', 'qui', 'commande', 'livraison', 'paiement'); if (!$id_panier) { return $etapes; } if (isset($lesetapes["{$id_panier}"])) { return $lesetapes["{$id_panier}"]; } if ($id_auteur = intval(sql_getfetsel('id_auteur', 'spip_paniers', 'id_panier=' . intval($id_panier)))) { $etapes = array_diff($etapes, array('qui')); } $items = sql_allfetsel("*", "spip_paniers_liens", "id_panier=" . intval($id_panier)); $livrable = false; foreach ($items as $item) { $table = table_objet_sql($item['objet']); $primary = id_table_objet($item['objet']); $objet = sql_fetsel("*", $table, "{$primary}=" . intval($item['id_objet'])); if (!isset($objet['immateriel']) or !$objet['immateriel']) { $livrable = true; break; } } if (!$livrable) { $etapes = array_diff($etapes, array('livraison')); } return $lesetapes["{$id_panier}"] = $etapes; }
/** * Calculs de paramètres de contexte automatiques pour la balise FORMULAIRE_ECRIRE_AUTEUR * * Retourne le contexte du formulaire uniquement si l'email de l'auteur * est valide, sinon rien (pas d'exécution/affichage du formulaire) * * @param array $args * Liste des arguments demandés obtenus du contexte (id_auteur, id_article, email) * @param array $context_compil * Tableau d'informations sur la compilation * @return array|string * - Liste (id_auteur, id_article, email) des paramètres du formulaire CVT * - chaîne vide sinon (erreur ou non affichage). */ function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $context_compil) { include_spip('inc/filtres'); // Pas d'id_auteur ni d'id_article ? Erreur de contexte $id = intval($args[1]); if (!$args[0] and !$id) { $msg = array('zbug_champ_hors_motif', array('champ' => 'FORMULAIRE_ECRIRE_AUTEUR', 'motif' => 'AUTEURS/ARTICLES')); erreur_squelette($msg, $context_compil); return ''; } // Si on est dans un contexte article, // sortir tous les mails des auteurs de l'article if (!$args[0] and $id) { $r = ''; $s = sql_allfetsel('email', 'spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON (A.id_auteur=L.id_auteur AND L.objet=\'article\')', "A.email != '' AND L.id_objet={$id}"); foreach ($s as $row) { if (email_valide($row['email'])) { $r .= ', ' . $row['email']; } } $args[2] = substr($r, 2); } // On ne peut pas ecrire a un auteur dont le mail n'est pas valide if (!$args[2] or !email_valide($args[2])) { return ''; } // OK return $args; }
/** * Action de mise à jour en base de données de la liste des plugins * d'un ou de tous les dépots */ function action_actualiser_depot_dist() { // Securisation: aucun argument attendu $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); // Verification des autorisations if (!autoriser('webmestre')) { include_spip('inc/minipres'); echo minipres(); exit; } // Actualisation des plugins du depot ou de tous les plugins suivant l'argument de l'action // Le depot lui-meme n'est mis a jour que partiellement via le fichier XML une fois que // la premiere insertion a ete effectuee. En effet, seules les infos non editables dans le prive // peuvent etre actualisees lors de cette action include_spip('inc/svp_depoter_distant'); if ($arg === 'tout') { if ($ids_depots = sql_allfetsel('id_depot', 'spip_depots')) { $ids_depots = array_map('reset', $ids_depots); foreach ($ids_depots as $_id_depot) { svp_actualiser_depot($_id_depot); } // On consigne l'action spip_log("ACTION ACTUALISER TOUS LES DEPOTS (manuel)", 'svp_actions.' . _LOG_INFO); } } else { if ($id_depot = intval($arg)) { svp_actualiser_depot($id_depot); // On consigne l'action spip_log("ACTION ACTUALISER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO); } } }
/** * Envoyer les notifications consecutives a l'envoi d'un message * (ie passage en statut=publie) * * @param string $quoi * @param int $id_message * @param array $options */ function notifications_instituermessage_dist($quoi, $id_message, $options = array()) { // ne devrait jamais se produire if ($options['statut'] == $options['statut_ancien']) { spip_log("statut inchange", 'notifications'); return; } if ($options['statut'] == 'publie') { include_spip('inc/messages'); $type = sql_getfetsel('type', 'spip_messages', 'id_message=' . intval($id_message)); $vue = "notifications/message_{$type}_publie"; if (trouver_fond($vue)) { $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email $texte = recuperer_fond($vue, array('id_message' => $id_message)); // recuperer tous les emails des auteurs qui ont recu le message dans leur boite // si c'est une annonce generale, on envoie a tout le monde include_spip('inc/messages'); $where = array("email!=''", "statut!='5poubelle'", sql_in('statut', messagerie_statuts_destinataires_possibles())); // pour une annonce : tous ceux qui recoivent des messages if ($type !== 'affich') { $ids = sql_allfetsel('id_auteur', 'spip_auteurs_liens', "objet='message' AND id_objet=" . intval($id_message)); $ids = array_map('reset', $ids); $where[] = sql_in('id_auteur', $ids); } $emails = sql_allfetsel('email', "spip_auteurs", $where); $emails = array_map('reset', $emails); include_spip('inc/notifications'); notifications_envoyer_mails($emails, $texte); } } }
function bank_transactions_statuts() { $statuts = sql_allfetsel("statut, count(id_transaction) as n", "spip_transactions", "", "statut"); if ($statuts) { $statuts = array_combine(array_map('reset', $statuts), array_map('end', $statuts)); ksort($statuts); } else { $statuts = array('ok' => 0); } $all = array('' => array_sum($statuts)); foreach (array('ok', 'commande', 'attente') as $s) { if (isset($statuts[$s])) { $all[$s] = $statuts[$s]; unset($statuts[$s]); } } $all['echec'] = 0; $all['abandon'] = 0; $all['rembourse'] = 0; foreach ($statuts as $k => $v) { if (strncmp($k, "echec", 5) == 0) { if (!isset($all['echec'])) { $all['echec'] = 0; } $all['echec'] += $v; } else { $all[$k] = $v; } } return $all; }
/** * Fonction de désinstallation du plugin. **/ function roles_auteurs_vider_tables($nom_meta_base_version) { // tant qu'il existe des doublons, on supprime une ligne doublonnée // sinon on ne pourra pas modifier la cle primaire ensuite // cet algo est certainement a optimiser while ($doublons = sql_allfetsel( array('id_auteur', 'id_objet', 'objet', 'role'), array('spip_auteurs_liens'), '', 'id_auteur,id_objet,objet', '', '', 'COUNT(*) > 1')) { foreach ($doublons as $d) { $where = array(); foreach ($d as $cle=>$valeur) { $where[] = "$cle=".sql_quote($valeur); } sql_delete('spip_auteurs_liens', $where); } } // supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire sql_alter("TABLE spip_auteurs_liens DROP PRIMARY KEY"); sql_alter("TABLE spip_auteurs_liens DROP COLUMN role"); sql_alter("TABLE spip_auteurs_liens ADD PRIMARY KEY (id_auteur,id_objet,objet)"); effacer_meta($nom_meta_base_version); }
function action_deplacer_objets_dist() { include_spip('inc/autoriser'); if (!autoriser('ecrire')) { return plan_json_erreur(_T("plan:erreur_autorisation_insuffisante") . " " . _T("plan:erreur_deplacement_impossible")); } include_spip('base/objets'); $objet = objet_type(_request('objet')); $table = table_objet_sql($objet); $_id_table = id_table_objet($table); $ids = _request('id_objet'); $id_rubrique_old = _request('id_rubrique_source'); $id_rubrique_new = _request('id_rubrique_destination'); if (!is_array($ids) or !$objet) { return plan_json_erreur(_T("plan:erreur_aucun_identifiant") . " " . _T("plan:erreur_deplacement_impossible")); } if ($id_rubrique_old == $id_rubrique_new) { return plan_json_erreur(_T("plan:erreur_rubriques_parentes_incorrectes") . " " . _T("plan:erreur_deplacement_impossible")); } if ($objet != 'rubrique' and !$id_rubrique_new) { return plan_json_erreur(_T("plan:erreur_rubriques_parentes_incorrectes") . " " . _T("plan:erreur_deplacement_impossible")); } $ids = array_filter($ids); if ($objet == 'rubrique') { $champ = 'id_parent'; } else { $champ = 'id_rubrique'; } // ne modifier que si les emplacements n'ont pas déjà changé ! $ids = sql_allfetsel($_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old))); $ids = array_map('array_shift', $ids); include_spip('action/editer_objet'); $errors = $success = array(); $modifs = array('id_parent' => $id_rubrique_new); foreach ($ids as $id) { if (autoriser('modifier', $objet, $id)) { if ($err = objet_modifier($objet, $id, $modifs)) { $errors["{$objet}-{$id}"] = $err; } else { $success["{$objet}-{$id}"] = true; } } else { $errors["{$objet}-{$id}"] = _T("plan:erreur_autorisation_insuffisante") . " " . _T("plan:erreur_deplacement_impossible"); } } // dans certains cas… on ne reçoit pas d'erreur… et pourtant ! if (!$errors) { // on verifie qu'il n'y a plus d'objets à l'ancien emplacement $ids = sql_allfetsel($_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old))); $ids = array_map('array_shift', $ids); if ($ids) { foreach ($ids as $id) { $errors["{$objet}-{$id}"] = _T("plan:erreur_deplacement"); unset($success["{$objet}-{$id}"]); } } } return plan_json_envoi(array('done' => true, 'success' => $success, 'errors' => $errors)); }
/** * liste des assurances contenus dans une saison * * @param int $id_saison * @return array $liste_assurs (1,2,3,etc..) */ function adhclub_assurs_ds_1saison($id_saison) { $liste_assurs = array(); include_spip('base/abstract_sql'); $liste_assurs = sql_allfetsel("id_assur", "spip_adhassurs", "id_saison=" . intval($id_saison)); $liste_assurs = array_map('reset', $liste_assurs); return $liste_assurs; }
function lister_traductions($id_trad, $objet) { $table_objet_sql = table_objet_sql($objet); $primary = id_table_objet($objet); $rows = sql_allfetsel("{$primary} as id,lang", $table_objet_sql, 'id_trad=' . intval($id_trad)); lang_select(); return $rows; }
function livraison_generer_csv_installation() { if ($exporter_csv = charger_fonction("exporter_csv", "inc", true)) { $champs = array("titre", "descriptif", "zone_pays", "zone_cp", "zone_cp_exclus", "taxe", "prix_forfait_ht", "prix_unit_ht", "prix_poids_ht", "prix_volume_ht"); $modes = sql_allfetsel(implode(",", $champs), "spip_livraisonmodes", "statut='publie'"); $exporter_csv("livraisonmodes", $modes, ",", $champs, false); } }
/** * liste des auteurs contenus dans un niveau * * @param int $id_niveau * @return array $liste_auteurs */ function adhclub_auteurs_ds_1niveau($id_niveau) { $liste_auteurs = array(); include_spip('base/abstract_sql'); $liste_auteurs = sql_allfetsel("id_objet", "spip_adhnivs_liens as na", "na.objet='auteur' AND na.id_niveau = " . intval($id_niveau)); $liste_auteurs = array_map('reset', $liste_auteurs); return $liste_auteurs; }
function filtre_me_dist($id_objet, $objet, $id_auteur, $sioui = ' ', $sinon = '') { static $auteurs = array(); if (!isset($auteurs[$objet][$id_objet])) { $r = sql_allfetsel("id_auteur", "spip_auteurs_liens", "objet=" . sql_quote($objet) . " AND id_objet=" . intval($id_objet)); $auteurs[$objet][$id_objet] = array_map('reset', $r); } return in_array($id_auteur, $auteurs[$objet][$id_objet]) ? $sioui : $sinon; }
function instituer_un_forum($statut,$row){ $id_forum = $row['id_forum']; $old = $row['statut']; // rien a faire si pas de changement de statut if ($old==$statut) return; // changer le statut de toute l'arborescence dependant de ce message $id_messages = array($id_forum); while ($id_messages) { sql_updateq("spip_forum", array("statut" => $statut), sql_in("id_forum", $id_messages) ." AND statut = '$old'"); $id_messages = array_map('reset',sql_allfetsel("id_forum", "spip_forum", sql_in("id_parent", $id_messages))); } // Notifier de la publication du message, s'il etait 'prop' if ($old=='prop' AND $statut=='publie') { if ($notifications = charger_fonction('notifications', 'inc')) { $notifications('forumvalide', $id_forum); } } // mettre a jour la date du thread // si publie, ou que tout le thread est prive, // mettre la date du thread a 'maintenant' (date de publi du message) // sinon prendre la date_heure du dernier message public // c'est imparfait dans le cas ou les crayons ont ete utilises pour modifier ce message entre temps // car la date_thread aurait cette derniere date alors que pas le message // mais c'est au mieux de ce que l'on peut faire quand on depublie un SPAM ou supprime un message if ($statut=='publie' OR $old=='publie') { if ($statut=='publie' OR !($date_thread = sql_getfetsel("date_heure", "spip_forum", "statut='publie' AND id_thread=".$row['id_thread'], "", "date_heure DESC","0,1"))){ $date_thread = date('Y-m-d H:i:s'); } sql_updateq("spip_forum", array("date_thread" => $date_thread), "id_thread=".$row['id_thread']); } // invalider les pages comportant ce forum include_spip('inc/invalideur'); include_spip('inc/forum'); $index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']); suivre_invalideur("id='id_forum/$index_forum'"); // Reindexation du thread (par exemple) pipeline('post_edition', array( 'args' => array( 'table' => 'spip_forum', 'id_objet' => $id_forum, 'action' => 'instituer', ), 'data' => null ) ); }
function yaml_article($id_article) { include_spip('inc/yaml'); $a = array_filter(sql_fetsel('*', 'spip_articles', 'id_article=' . $id_article)); $a['rubrique'] = array_filter(sql_fetsel('*', 'spip_rubriques', 'id_rubrique=' . $a['id_rubrique'])); foreach (sql_allfetsel('*', 'spip_mots AS m LEFT JOIN spip_mots_articles AS c ON m.id_mot=c.id_mot', 'c.id_article=' . $id_article) as $m) { $a['mots'][] = array_filter($m); } return yaml_encode(array_filter($a)); }
/** * Construire un tableau par popularite * classemnt => id_truc * * @param string $type * @param string $serveur * @return array */ function classement_populaires($type, $serveur = '') { static $classement = array(); if (isset($classement[$type])) { return $classement[$type]; } $classement[$type] = sql_allfetsel(id_table_objet($type, $serveur), table_objet_sql($type, $serveur), "statut='publie' AND popularite > 0", "", "popularite DESC", '', '', $serveur); $classement[$type] = array_map('reset', $classement[$type]); return $classement[$type]; }
/** * Actualise tous les dépots * * @genie svp_actualiser_depots * * @uses svp_actualiser_depot() * @param int $last * Timestamp de la dernière exécution de cette tâche * @return int * Positif : la tâche a été effectuée */ function genie_svp_actualiser_depots_dist($last) { include_spip('inc/svp_depoter_distant'); // On recupere en base de donnees tous les depots a mettre a jour if ($resultats = sql_allfetsel('id_depot', 'spip_depots')) { foreach ($resultats as $depot) { svp_actualiser_depot($depot['id_depot']); spip_log("ACTION ACTUALISER DEPOT (automatique) : id_depot = " . $depot['id_depot'], 'svp_actions.' . _LOG_INFO); } } return 1; }
function inc_marquer_doublons_doc_dist($champs, $id, $type, $id_table_objet, $table_objet, $spip_table_objet, $desc = array(), $serveur = '') { $champs_selection = array(); foreach ($GLOBALS['medias_liste_champs'] as $champs_choisis) { if (isset($champs[$champs_choisis])) { array_push($champs_selection, $champs_choisis); } } if (count($champs_selection) == 0) { return; } if (!$desc) { $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table_objet, $serveur); } $load = ""; // charger le champ manquant en cas de modif partielle de l 'objet // seulement si le champ existe dans la table demande $champs_a_traiter = ""; foreach ($champs_selection as $champs_a_parcourir) { if (isset($desc['field'][$champs_a_parcourir])) { $load = $champs_a_parcourir; $champs_a_traiter .= $champs[$champs_a_parcourir]; } } if ($load) { $champs[$load] = ""; $row = sql_fetsel($load, $spip_table_objet, "{$id_table_objet}=" . sql_quote($id)); if ($row and isset($row[$load])) { $champs[$load] = $row[$load]; } } include_spip('inc/texte'); include_spip('base/abstract_sql'); include_spip('action/editer_liens'); include_spip('base/objets'); $modeles = lister_tables_objets_sql('spip_documents'); $modeles = $modeles['modeles']; $GLOBALS['doublons_documents_inclus'] = array(); $env = array('objet' => $type, 'id_objet' => $id, $id_table_objet => $id); traiter_modeles($champs_a_traiter, array('documents' => $modeles), '', '', null, $env); // detecter les doublons objet_qualifier_liens(array('document' => '*'), array($type => $id), array('vu' => 'non')); if (count($GLOBALS['doublons_documents_inclus'])) { // on repasse par une requete sur spip_documents pour verifier que les documents existent bien ! $in_liste = sql_in('id_document', $GLOBALS['doublons_documents_inclus']); $res = sql_allfetsel("id_document", "spip_documents", $in_liste); $res = array_map('reset', $res); // Creer le lien s'il n'existe pas deja objet_associer(array('document' => $res), array($type => $id), array('vu' => 'oui')); objet_qualifier_liens(array('document' => $res), array($type => $id), array('vu' => 'oui')); } }
function formulaires_editer_document_charger_dist($id_document = 'new', $id_parent = '', $retour = '', $lier_trad = 0, $config_fonc = 'documents_edit_config', $row = array(), $hidden = '') { $valeurs = formulaires_editer_objet_charger('document', $id_document, $id_parent, $lier_trad, $retour, $config_fonc, $row, $hidden); // relier les parents $valeurs['parents'] = array(); $valeurs['_hidden'] = ""; $parents = sql_allfetsel('objet,id_objet', 'spip_documents_liens', 'id_document=' . intval($id_document)); foreach ($parents as $p) { if (in_array($p['objet'], array('article', 'rubrique')) and $p['id_objet'] > 0) { $valeurs['parents'][] = $p['objet'] . '|' . $p['id_objet']; } else { $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='" . $p['objet'] . '|' . $p['id_objet'] . "' />"; } } // en fonction de la config du site on a le droit ou pas de modifier la date if ($valeurs['_editer_date'] = lire_config('documents_date') == 'oui' ? ' ' : '') { $valeurs['saisie_date'] = affdate($valeurs['date'], 'd/m/Y'); $valeurs['saisie_heure'] = affdate($valeurs['date'], 'H:i'); } elseif (isset($valeurs['date'])) { unset($valeurs['date']); } // en fonction du format $valeurs['_editer_dimension'] = autoriser('tailler', 'document', $id_document) ? ' ' : ''; // type du document et inclusion $row = sql_fetsel('titre as type_document,inclus', 'spip_types_documents', 'extension=' . sql_quote($valeurs['extension'])); $valeurs['type_document'] = $row['type_document']; $valeurs['_inclus'] = $row['inclus']; if (in_array($valeurs['extension'], array('jpg', 'gif', 'png'))) { $valeurs['apercu'] = get_spip_doc($valeurs['fichier']); } // verifier les infos de taille et dimensions sur les fichiers locaux // cas des maj de fichier directes par ftp if ($valeurs['distant'] !== 'oui') { include_spip('inc/renseigner_document'); $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']), $valeurs['extension']); if ($infos and is_array($infos) and isset($infos['taille'])) { if ($infos['taille'] != $valeurs['taille'] or $infos['type_image'] && $infos['largeur'] != $valeurs['largeur'] or $infos['type_image'] && $infos['hauteur'] != $valeurs['hauteur']) { $valeurs['_taille_modif'] = $infos['taille']; $valeurs['_largeur_modif'] = $infos['largeur']; $valeurs['_hauteur_modif'] = $infos['hauteur']; $valeurs['_hidden'] .= "<input type='hidden' name='_taille_modif' value='" . $infos['taille'] . "' />" . "<input type='hidden' name='_largeur_modif' value='" . $infos['largeur'] . "' />" . "<input type='hidden' name='_hauteur_modif' value='" . $infos['hauteur'] . "' />"; } } } // pour l'upload d'un nouveau doc if ($valeurs['fichier']) { $charger = charger_fonction('charger', 'formulaires/joindre_document'); $valeurs = array_merge($valeurs, $charger($id_document, 0, '', 'choix')); $valeurs['_hidden'] .= "<input name='id_document' value='{$id_document}' type='hidden' />"; } return $valeurs; }
function souscription_maj_liens_transactions() { $done = sql_allfetsel("DISTINCT id_souscription", "spip_souscriptions_liens"); $done = array_map('reset', $done); $res = sql_select("id_souscription,id_transaction_echeance", "spip_souscriptions", sql_in('id_souscription', $done, "NOT")); while ($row = sql_fetch($res)) { $ins = array('id_souscription' => $row['id_souscription'], 'id_objet' => $row['id_transaction_echeance'], 'objet' => 'transaction'); sql_insertq("spip_souscriptions_liens", $ins); if (time() > _TIME_OUT) { return; } } }
function prix_panier($id_panier, $prix_ht) { $fonction_ttc = charger_fonction('ht', 'inc/prix'); $prix = 0; // On va chercher tous les objets liés $objets = sql_allfetsel('objet, id_objet, quantite', 'spip_paniers_liens', 'id_panier = ' . $id_panier); // Pour chaque objet on va chercher son prix TTC x sa quantité if (is_array($objets)) { foreach ($objets as $objet) { $prix += $fonction_ttc($objet['objet'], $objet['id_objet']) * $objet['quantite']; } } return $prix; }
/** * Generer les alertes message recu a destination de l'auteur * concerne par l'appel * * @param array $flux * @return array */ function organiseur_alertes_auteur($flux) { $id_auteur = $flux['args']['id_auteur']; $result_messages = sql_allfetsel("M.id_message", "spip_messages AS M LEFT JOIN spip_auteurs_liens AS L ON (L.objet='message' AND L.id_objet=M.id_message)", "L.id_auteur=" . intval($id_auteur) . " AND vu='non' AND statut='publie' AND type='normal'"); $total_messages = count($result_messages); if ($total_messages == 1) { $row = reset($result_messages); $id_message = $row['id_message']; $flux['data'][] = "<a href='" . generer_url_ecrire("message", "id_message={$id_message}") . "'>" . _T('organiseur:info_1_message_nonlu') . "</a>"; } elseif ($total_messages > 1) { $flux['data'][] = "<a href='" . generer_url_ecrire("messages") . "'>" . _T('organiseur:info_nb_messages_nonlus', array('nb' => $total_messages)) . "</a>"; } return $flux; }
/** * Plugin Acces Restreint 3.0 pour Spip 2.0 * Licence GPL (c) 2006-2008 Cedric Morin * */ function action_affecter_zone_dist(){ $securiser_action = charger_fonction('securiser_action','inc'); $arg = $securiser_action(); if (preg_match(',^([0-9]+|-1)-([a-z]+)-([0-9]+|-1)$,',$arg,$regs) AND $regs[2]=='auteur') { $id_zone = intval($regs[1]); $id_auteur = intval($regs[3]); include_spip('action/editer_zone'); if ($id_auteur==-1) $id_auteur = array_map('reset',sql_allfetsel('id_auteur','spip_auteurs',"statut!='poub'")); accesrestreint_revision_zone_objets_lies($id_zone=='-1'?'':$id_zone,$id_auteur,'auteur'); } }
function action_supprimer_document_dist($id_document = 0) { if (!$id_document) { $securiser_action = charger_fonction('securiser_action', 'inc'); $id_document = $securiser_action(); } include_spip('inc/autoriser'); if (!autoriser('supprimer', 'document', $id_document)) { spip_log("Echec : Suppression document {$id_document} interdite", _LOG_ERREUR); return false; } // si c'etait une vignette, modifier le document source ! if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) { include_spip('action/editer_document'); document_modifier($source, array("id_vignette" => 0)); } include_spip('inc/documents'); if (!($doc = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document)))) { spip_log("Echec : Suppression document {$id_document} : le document n'existe pas en base", _LOG_ERREUR); return false; } spip_log("Suppression du document {$id_document} (" . $doc['fichier'] . ")"); include_spip('action/editer_liens'); // Si c'est un document ayant une vignette, supprimer aussi la vignette if ($doc['id_vignette']) { action_supprimer_document_dist($doc['id_vignette']); objet_dissocier(array('document' => $doc['id_vignette']), '*'); } // Si c'est un document ayant des documents annexes (sous-titre, ...) // les supprimer aussi $annexes = array_map('reset', sql_allfetsel("id_document", "spip_documents_liens", "objet='document' AND id_objet=" . intval($id_document))); foreach ($annexes as $id) { action_supprimer_document_dist($id); } // dereferencer dans la base objet_dissocier(array('document' => $id_document), '*', array('role' => '*')); sql_delete('spip_documents', 'id_document=' . intval($id_document)); // Supprimer le fichier si le doc est local, // et la copie locale si le doc est distant if ($doc['distant'] == 'oui') { include_spip('inc/distant'); if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) { spip_unlink($local); } } else { spip_unlink(get_spip_doc($doc['fichier'])); } pipeline('post_edition', array('args' => array('operation' => 'supprimer_document', 'action' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'document' => $doc), 'data' => null)); return true; }
function formulaires_editer_evenement_charger_dist($id_evenement='new', $id_article=0, $retour='', $lier_trad = 0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){ $valeurs = formulaires_editer_objet_charger('evenement',$id_evenement,$id_article,0,$retour,$config_fonc,$row,$hidden); if (!$valeurs['id_article']) $valeurs['id_article'] = $id_article; if (!$valeurs['titre']) $valeurs['titre'] = sql_getfetsel('titre','spip_articles','id_article='.intval($valeurs['id_article'])); $valeurs['id_parent'] = $valeurs['id_article']; unset($valeurs['id_article']); // pour le selecteur d'article(s) optionnel $valeurs['parents_id'] = array("article|".$valeurs['id_parent']); // fixer la date par defaut en cas de creation d'evenement if (!intval($id_evenement)){ $t=time(); $valeurs["date_debut"] = date('Y-m-d H:i:00',$t); $valeurs["date_fin"] = date('Y-m-d H:i:00',$t+3600); $valeurs['horaire'] = 'oui'; } // les mots $valeurs['mots'] = array(); if (intval($id_evenement)) $valeurs['mots'] = sql_allfetsel('id_mot','spip_mots_evenements','id_evenement='.intval($id_evenement)); // les repetitions $valeurs['repetitions'] = ''; if (intval($id_evenement)){ $repetitons = sql_allfetsel("date_debut","spip_evenements","id_evenement_source=".intval($id_evenement),'','date_debut'); foreach($repetitons as $d) $valeurs['repetitions'] .= date('d/m/Y',strtotime($d['date_debut'])).' '; } // dispatcher date et heure list($valeurs["date_debut"],$valeurs["heure_debut"]) = explode(' ',date('d/m/Y H:i',strtotime($valeurs["date_debut"]))); list($valeurs["date_fin"],$valeurs["heure_fin"]) = explode(' ',date('d/m/Y H:i',strtotime($valeurs["date_fin"]))); // traiter specifiquement l'horaire qui est une checkbox if (_request('date_debut') AND !_request('horaire')) $valeurs['horaire'] = 'oui'; // Pouvoir interdire l'affichage de l'inscription (puisque ce n'est pas traite' par le plugin) $valeurs['affiche_inscription'] = $GLOBALS['agenda_affiche_inscription']; $valeurs['places'] = intval($valeurs['places']); return $valeurs; }
function upgrade_index_signatures() { while ($rows = sql_allfetsel('DISTINCT id_article', 'spip_signatures', 'id_petition=-1', '', '', '0,100')) { $rows = array_map('reset', $rows); foreach ($rows as $id_article) { $id_petition = sql_getfetsel('id_petition', 'spip_petitions', 'id_article=' . intval($id_article)); if (!$id_petition) { include_spip('action/editer_petition'); $id_petition = petition_inserer($id_article); sql_updateq('spip_petitions', array('statut' => 'poubelle'), 'id_petition=' . $id_petition); } sql_updateq('spip_signatures', array('id_petition' => $id_petition), 'id_article=' . $id_article); } } }
/** * liste des auteurs contenus dans une cotisation, au format '1,2,3,...'. * * @param int $id_coti * @return array $liste_auteurs */ function adhclub_auteurs_ds_1coti($id_coti) { //$liste_auteurs=array(); include_spip('base/abstract_sql'); $liste_auteurs = sql_allfetsel("id_auteur", "spip_adhcotis_liens as ca", "ca.objet='auteur' AND ca.id_coti=" . intval($id_coti)); if (is_array($liste_auteurs)) { $liste_auteurs = array_map('reset', $liste_auteurs); } //$debug1= "adhclub debug JR : inc/adh_coti adhclub_auteurs_ds_1coti - Pt90 - liste_auteurs="; //echo $debug1; //var_dump($liste_auteurs); //$debug1 = $debug1 . $liste_auteurs[0]; //adhclub_log("$debug1.", true); return $liste_auteurs; }
/** * Ajoute le préfixe des plugins dans chaque ligne de paquets * * Cette mise à jour permet de dupliquer le préfixe des plugins * dans la ligne des paquets (cette colonne était absente avant) * pour plus de simplicité ensuite dans les requêtes SQL. */ function svp_synchroniser_prefixe() { $paquets = sql_allfetsel(array('pa.id_paquet', 'pl.prefixe'), array('spip_paquets AS pa', 'spip_plugins AS pl'), 'pl.id_plugin=pa.id_plugin'); if ($paquets) { // On insere, en encapsulant pour sqlite... if (sql_preferer_transaction()) { sql_demarrer_transaction(); } foreach ($paquets as $paquet) { sql_updateq('spip_paquets', array('prefixe' => $paquet['prefixe']), 'id_paquet=' . intval($paquet['id_paquet'])); } if (sql_preferer_transaction()) { sql_terminer_transaction(); } } }