Exemplo n.º 1
0
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);
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
/**
 * 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;
}
Exemplo n.º 6
0
/**
 * 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);
        }
    }
}
Exemplo n.º 8
0
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);
}
Exemplo n.º 10
0
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));
}
Exemplo n.º 11
0
/**
 * 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;
}
Exemplo n.º 13
0
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);
    }
}
Exemplo n.º 14
0
/**
 * 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;
}
Exemplo n.º 16
0
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
		)
	);
}
Exemplo n.º 17
0
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));
}
Exemplo n.º 18
0
/**
 * 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;
}
Exemplo n.º 20
0
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'));
    }
}
Exemplo n.º 21
0
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;
        }
    }
}
Exemplo n.º 23
0
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;
}
Exemplo n.º 24
0
/**
 * 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;
}
Exemplo n.º 25
0
/**
 * 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;
}
Exemplo n.º 27
0
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;
}
Exemplo n.º 28
0
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);
        }
    }
}
Exemplo n.º 29
0
/**
 * 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;
}
Exemplo n.º 30
0
/**
 * 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();
        }
    }
}