/**
 * 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);
        }
    }
}
/**
 * Autorisation d'ajout d'un evenement a un article
 *
 * @param string $faire
 * @param string $quoi
 * @param int $id
 * @param int $qui
 * @param array $options
 * @return bool
 */
function autoriser_article_creerevenementdans_dist($faire, $quoi, $id, $qui, $options)
{
    if (!$id) {
        return false;
        // interdit de creer un evenement sur un article vide !
    }
    // si on a le droit de modifier l'article alors on a peut-etre le droit d'y creer un evenement
    $afficher = false;
    if (autoriser('modifier', 'article', $id, $qui)) {
        $afficher = true;
        // un article avec des evenements a toujours le droit
        if (!sql_countsel('spip_evenements', array('id_article=' . intval($id)), sql_in('statut', array('prop', 'publie')))) {
            // si au moins une rubrique a le flag agenda
            if (sql_countsel('spip_rubriques', 'agenda=1')) {
                // alors il faut le flag agenda dans cette branche !
                $afficher = false;
                include_spip('inc/rubriques');
                $id_rubrique = sql_getfetsel('id_rubrique', 'spip_articles', 'id_article=' . intval($id));
                if ($id_rubrique > 0) {
                    // Rubriques classiques de SPIP
                    $in = calcul_hierarchie_in($id_rubrique);
                    $afficher = sql_countsel('spip_rubriques', sql_in('id_rubrique', $in) . ' AND agenda=1');
                } else {
                    // Rubrique négative utilisee dans le plugin Page unique
                    $afficher = true;
                }
            }
        }
    }
    return $afficher;
}
/**
 * Mettre a jour les liens objets/saisons.
 * si saisons vaut '', associe toutes les saisons a(aux) objets(s).
 * $ids est une liste d'id.
 * $type est le type de l'objet (assur, coti).
 * $operation = add/set/del pour ajouter, affecter uniquement, ou supprimer les objets listes dans ids.
 *
 * @param int/array $saisons
 * @param int/array $ids
 * @param string $type
 */
function adhclub_revision_adhsaison_objets_lies($saisons, $ids, $type, $operation = 'add')
{
    include_spip('inc/autoriser');
    $in = "";
    if ($saisons) {
        $in = sql_in('id_saison', $saisons);
    }
    $liste = sql_allfetsel('id_saison', 'spip_adhsaisons', $in);
    foreach ($liste as $row) {
        if ($operation == 'del') {
            // on supprime les ids listes
            //sql_delete("spip_{$type}s",array("id_saison=".intval($row['id_saison']),sql_in("id_$type",$ids)));
            //sql_delete("spip_{$type}s",array("id_saison=".intval($row['id_saison']),sql_in("id_$type",$ids)));
        } else {
            if (!$ids) {
                $ids = array();
            } elseif (!is_array($ids)) {
                $ids = array($ids);
            }
            // si c'est une affectation exhaustive, supprimer les existants qui ne sont pas dans ids
            // si c'est un ajout, ne rien effacer
            if ($operation == 'set') {
                //sql_delete("spip_adhassurs_{$type}s",array("id_saison=".intval($row['id_saison']),sql_in("id_$type",$ids,"NOT")));
                //sql_delete("spip_adhcotis_{$type}s",array("id_saison=".intval($row['id_saison']),sql_in("id_$type",$ids,"NOT")));
            }
            $deja = array_map('reset', sql_allfetsel("id_{$type}", "spip_{$type}s", "id_saison=" . intval($row['id_saison'])));
            $add = array_diff($ids, $deja);
            //foreach ($add as $id) {
            //if (autoriser('affectersaisons',$type,$id,null,array('id_saison'=>$row['id_saison'])))
            //sql_insertq("spip_saisons_{$type}s",array('maj'=>'NOW()','id_saison'=>$row['id_saison'],"id_$type"=>intval($id)));
            //}
        }
    }
}
Exemple #4
0
function action_documenter_post($r)
{
	// - sign indique le portfolio image ou document, dans le cas de
	// la page exec=articles
	// - id est l'id_objet (id_article ou id_rubrique etc)
	// - type est 'article' (ou 'rubrique')
	// - id_document le doc a supprimer ou a delier de l'objet
	//   SI VIDE, on supprime tous les documents du type SIGN
	//   (bouton "supprimer tous les documents")
	list(, $sign, $id, $type, ,$id_document) = $r;

	if ($id_document) {
		supprimer_lien_document($id_document, $type, $id);
	}
	else {
		$obj = "id_objet=".intval($id)." AND objet=".sql_quote($type);
		$typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $sign  ? '' : 'NOT');

		$s = sql_select('docs.id_document AS id_doc', "spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document", "$obj AND docs.mode='document' AND $typdoc");
		while ($t = sql_fetch($s)) {
			supprimer_lien_document($t['id_doc'], $type, $id);
		}
	}

	if ($type == 'rubrique') {
		include_spip('inc/rubriques');
		depublier_branche_rubrique_if($id);
	}
}
function genie_ajouter_date_redac_articles_dist($t)
{
    //spip_log("Mon travail c est juste une ligne de log....",_LOG_INFO_IMPORTANTE);
    // echo "1";
    if ($resultats = sql_select("*", "spip_articles", "id_secteur=115 AND statut='publie' AND date_redac=0000-00-00")) {
        // boucler sur les resultats
        while ($res = sql_fetch($resultats)) {
            // utiliser les resultats
            // hierarchie des rubriques de l'article via la fonction de spip
            include_spip("inc/rubriques");
            $hierarchie = calcul_hierarchie_in($res['id_rubrique'], true);
            // la date_numero et l'id_rubrique de la rubrique Numéro.
            $numero = sql_fetsel("date_numero,id_rubrique", "spip_rubriques", array(sql_in('id_rubrique', $hierarchie), 'profondeur=1'));
            // la date du numéro est à 0. On ne vérifie que l'année (?)
            if (substr($numero['date_numero'], 0, 4) == '0000') {
                spip_log("Article #" . $res['id_article'] . " : la date_redac n'a pas pu être modifiée. La rubrique #" . $numero['id_rubrique'] . " correspondant au numéro n'a pas de date valide.", 'vacarme_cron' . _LOG_INFO_IMPORTANTE);
                // return 1; // 0 ou 1 ?
            } else {
                spip_log("Mise à jour de l'article #" . $res['id_article'], 'vacarme_cron' . _LOG_INFO_IMPORTANTE);
                sql_updateq("spip_articles", array('date_redac' => $numero['date_numero']), "id_article=" . intval($res['id_article']));
                // return 1;
            }
        }
    }
    return 1;
}
 function load_metadata()
 {
     $ids_array = $this->_get_path_objects_ids_array();
     if (!count($ids_array)) {
         return false;
     }
     $sys_metadata_db_table =& db_table_factory::instance('sys_metadata');
     $objects_metadata = $sys_metadata_db_table->get_list(sql_in('object_id', $ids_array), '', 'object_id');
     if (!count($objects_metadata)) {
         return false;
     }
     $ids_array = array_reverse($ids_array);
     $got_keywords = false;
     $got_description = false;
     foreach ($ids_array as $object_id) {
         if ($got_keywords && $got_description) {
             break;
         }
         if (!$got_keywords && !empty($objects_metadata[$object_id]['keywords'])) {
             $this->object_metadata['keywords'] = $objects_metadata[$object_id]['keywords'];
             $got_keywords = true;
         }
         if (!$got_description && !empty($objects_metadata[$object_id]['description'])) {
             $this->object_metadata['description'] = $objects_metadata[$object_id]['description'];
             $got_description = true;
         }
     }
     return true;
 }
/**
 * Supprimer les révisions des objets disparus
 */
function optimiser_base_revisions()
{
    /**
     * On commence par récupérer la liste des types d'objet ayant au moins une révision
     */
    $objets_revises = sql_select('objet', 'spip_versions', 'id_version=1', 'objet');
    /**
     * Pour chaque objet, on va contruire un tableau des identifiants disparus
     * On supprimera ensuite les occurences dans spip_versions et spip_versions_fragments
     */
    while ($objet = sql_fetch($objets_revises)) {
        $in = array();
        $table = table_objet_sql($objet['objet']);
        $id_table_objet = id_table_objet($objet['objet']);
        $res = sql_select("A.id_objet AS id_objet, A.objet AS objet", "spip_versions AS A LEFT JOIN {$table} AS R\n\t\t\t\t\t\t\tON R.{$id_table_objet}=A.id_objet AND A.objet=" . sql_quote($objet['objet']), "R.{$id_table_objet} IS NULL AND A.objet=" . sql_quote($objet['objet']) . " AND A.id_objet > 0", "A.id_objet", "A.id_objet");
        while ($row = sql_fetch($res)) {
            $in[$row['id_objet']] = true;
        }
        sql_free($res);
        /**
         * Si on a un array
         * On supprime toute occurence des objets disparus dans :
         * -* spip_versions
         * -* spip_versions_fragments
         */
        if ($in) {
            foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
                sql_delete($table, sql_in('id_objet', array_keys($in)) . " AND objet=" . sql_quote($objet['objet']));
            }
        }
    }
}
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));
}
/**
 * Inserer les infos d'agenda sur les articles et rubriques
 *
 * @param array $flux
 * @return array
 */
function agenda_affiche_milieu($flux)
{
    $e = trouver_objet_exec($flux['args']['exec']);
    $out = "";
    if ($e['type'] == 'rubrique' and autoriser('configurer') and $e['edition'] == false and $id_rubrique = intval($flux['args']['id_rubrique']) and autoriser('modifier', 'rubrique', $id_rubrique)) {
        $activer = true;
        $res = "";
        $actif = sql_getfetsel('agenda', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
        $statut = "-32";
        $alt = "";
        $voir = "";
        if (!sql_countsel('spip_rubriques', 'agenda=1')) {
            $res .= "<span class='small'>" . _T('agenda:aucune_rubrique_mode_agenda') . "</span><br />";
        } else {
            include_spip('inc/rubriques');
            if (sql_countsel('spip_rubriques', sql_in('id_rubrique', calcul_hierarchie_in($id_rubrique)) . " AND agenda=1 AND id_rubrique<>" . intval($id_rubrique))) {
                $alt = _T('agenda:rubrique_dans_une_rubrique_mode_agenda');
                $activer = false;
                $statut = "-ok-32";
                $voir = _T('agenda:voir_evenements_rubrique');
            } elseif (!$actif) {
                $alt = _T('agenda:rubrique_sans_gestion_evenement') . '<br />';
                $statut = "-non-32";
            }
            if ($actif) {
                $alt = _T('agenda:rubrique_mode_agenda') . '<br />';
                $statut = "-ok-32";
                $voir = _T('agenda:voir_evenements_rubrique');
            }
        }
        if (!$actif) {
            if ($activer) {
                $res .= bouton_action(_T('agenda:rubrique_activer_agenda'), generer_action_auteur('activer_agenda_rubrique', $id_rubrique, self()), 'ajax');
            }
        } else {
            $res .= bouton_action(_T('agenda:rubrique_desactiver_agenda'), generer_action_auteur('activer_agenda_rubrique', "-{$id_rubrique}", self()), 'ajax');
        }
        if ($voir) {
            $res .= " | <a href='" . generer_url_ecrire('evenements', "id_rubrique={$id_rubrique}") . "'>{$voir}</a>";
        }
        if ($res) {
            $out .= boite_ouvrir(_T('agenda:agenda') . http_img_pack("agenda{$statut}.png", $alt, "class='statut'", $alt), 'simple agenda-statut') . $res . boite_fermer();
        }
    } elseif ($e['type'] == 'article' and $e['edition'] == false) {
        $id_article = $flux['args']['id_article'];
        $out .= recuperer_fond('prive/objets/contenu/article-evenements', $flux['args']);
    }
    if ($out) {
        if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
            $flux['data'] = substr_replace($flux['data'], $out, $p, 0);
        } else {
            $flux['data'] .= $out;
        }
    }
    return $flux;
}
function BOUCLE_documenthtml_b8a8020987dd01f8087ad24f961857eb(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    $in = array();
    if (!is_array($a = @$Pile[0]['mode'])) {
        $in[] = $a;
    } else {
        $in = array_merge($in, $a);
    }
    if (!isset($command['table'])) {
        $command['table'] = 'documents';
        $command['id'] = '_document';
        $command['from'] = array('documents' => 'spip_documents', 'L1' => 'spip_types_documents');
        $command['type'] = array();
        $command['groupby'] = array();
        $command['select'] = array("documents.id_document", "L1.titre AS type_document", "documents.taille", "documents.mode", "documents.largeur", "documents.hauteur", "documents.titre", "L1.mime_type");
        $command['orderby'] = array();
        $command['join'] = array('L1' => array('documents', 'extension'));
        $command['limit'] = '';
        $command['having'] = array();
    }
    $command['where'] = array(array('(documents.taille > 0 OR documents.distant=\'oui\')'), array('=', 'documents.id_document', sql_quote(@$Pile[0]['id_document'], '', 'bigint(21) NOT NULL AUTO_INCREMENT')), !(is_array(@$Pile[0]['mode']) ? count(@$Pile[0]['mode']) : strlen(@$Pile[0]['mode'])) ? '' : (is_array(@$Pile[0]['mode']) ? sql_in('documents.mode', sql_quote($in)) : array('=', 'documents.mode', sql_quote(@$Pile[0]['mode'], '', 'varchar(10) NOT NULL DEFAULT \'document\''))));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('plugins-dist/medias/modeles/img.html', 'html_b8a8020987dd01f8087ad24f961857eb', '_document', 1, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            $t0 .= '

' . vide($Pile['vars'][$_zzz = (string) 'image'] = interdire_scripts(($a = match(entites_html(sinon(table_valeur(@$Pile[0], (string) 'mode_force', null), interdire_scripts($Pile[$SP]['mode'])), true), 'image|vignette') or is_string($a) and strlen($a)) ? $a : interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'embed', null), true)) ? ' ' : '')) . (($t1 = strval(table_valeur($Pile["vars"], (string) 'image', null))) !== '' ? $t1 . ('
<span class=\'spip_document_' . $Pile[$SP]['id_document'] . ' spip_documents' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true)))) !== '' ? ' spip_documents_' . $t2 : '') . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'class', null), true)))) !== '' ? ' ' . $t2 : '') . ' spip_lien_ok\'' . (($t2 = strval(interdire_scripts(match(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true), 'left|right')))) !== '' ? '
 style=\'float:' . $t2 . ';\'' : '') . '>
' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true)))) !== '' ? '<a href="' . $t2 . ('"' . (($t3 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien_class', null), true)))) !== '' ? ' class="' . $t3 . '"' : '') . '>') : '') . '<img src=\'' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_document'], 'document', '', '', true))) . '\'' . (($t2 = strval(interdire_scripts($Pile[$SP]['largeur']))) !== '' ? ' width="' . $t2 . '"' : '') . (($t2 = strval(interdire_scripts($Pile[$SP]['hauteur']))) !== '' ? ' height="' . $t2 . '"' : '') . ' alt="' . interdire_scripts(texte_backend(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))) . '"' . (($t2 = strval(interdire_scripts(texte_backend(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))))) !== '' ? ' title="' . $t2 . '"' : '') . ' />' . interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true) ? '</a>' : '') . '</span>
') : '') . (!table_valeur($Pile["vars"], (string) 'image', null) ? ' ' . ('
	' . vide($Pile['vars'][$_zzz = (string) 'fichier'] = extraire_attribut(quete_logo_document(quete_document($Pile[$SP]['id_document'], ''), '', '', '', 0, 0, ''), 'src')) . '
	' . vide($Pile['vars'][$_zzz = (string) 'width'] = extraire_attribut(quete_logo_document(quete_document($Pile[$SP]['id_document'], ''), '', '', '', 0, 0, ''), 'width')) . '
	' . vide($Pile['vars'][$_zzz = (string) 'height'] = extraire_attribut(quete_logo_document(quete_document($Pile[$SP]['id_document'], ''), '', '', '', 0, 0, ''), 'height')) . '
<span class=\'spip_document_' . $Pile[$SP]['id_document'] . ' spip_documents' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true)))) !== '' ? ' spip_documents_' . $t2 : '') . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'class', null), true)))) !== '' ? ' ' . $t2 : '') . ' spip_lien_ok\'' . (($t2 = strval(interdire_scripts(match(entites_html(table_valeur(@$Pile[0], (string) 'align', null), true), 'left|right')))) !== '' ? '
 style=\'float:' . $t2 . (';' . (($t3 = strval(table_valeur($Pile["vars"], (string) 'width', null))) !== '' ? ' width:' . $t3 . 'px;' : '') . '\'') : '') . '><a href="' . interdire_scripts(($a = entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true) or is_string($a) and strlen($a)) ? $a : vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_document'], 'document', '', '', true)))) . '"' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'lien', null), true) ? '' : 'type="' . interdire_scripts($Pile[$SP]['mime_type']) . '"'))) !== '' ? '
 ' . $t2 : '') . (($t2 = strval(interdire_scripts(texte_backend(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))))) !== '' ? ' title="' . $t2 . '"' : '') . '><img src=\'' . table_valeur($Pile["vars"], (string) 'fichier', null) . '\' width=\'' . table_valeur($Pile["vars"], (string) 'width', null) . '\' height=\'' . table_valeur($Pile["vars"], (string) 'height', null) . '\' alt=\'' . interdire_scripts(attribut_html(strlen(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0])) ? interdire_scripts(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0])) . ' {' . interdire_scripts($Pile[$SP]['type_document']) . '}' : interdire_scripts($Pile[$SP]['type_document']))) . '\' /></a></span>
') : '');
        }
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_document @ plugins-dist/medias/modeles/img.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
Exemple #11
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
		)
	);
}
/**
 * Fonction de désinstallation du plugin Livraison.
 *
 * @param string $nom_meta_base_version
 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
 * @return void
**/
function livraison_vider_tables($nom_meta_base_version)
{
    livraison_generer_csv_installation();
    sql_drop_table("spip_livraisonmodes");
    # Nettoyer les versionnages et forums
    sql_delete("spip_versions", sql_in("objet", array('livraisonmode')));
    sql_delete("spip_versions_fragments", sql_in("objet", array('livraisonmode')));
    sql_delete("spip_forum", sql_in("objet", array('livraisonmode')));
    effacer_meta($nom_meta_base_version);
}
/**
 * Fonction de désinstallation du plugin Réseŕvations Crédits.
 * 
 * Vous devez :
 *
 * - nettoyer toutes les données ajoutées par le plugin et son utilisation
 * - supprimer les tables et les champs créés par le plugin. 
 *
 * @param string $nom_meta_base_version
 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
 * @return void
**/
function reservations_credits_vider_tables($nom_meta_base_version)
{
    sql_drop_table("spip_reservation_credit_mouvements");
    sql_drop_table("spip_reservation_credits");
    # Nettoyer les versionnages et forums
    sql_delete("spip_versions", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit')));
    sql_delete("spip_versions_fragments", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit')));
    sql_delete("spip_forum", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit')));
    effacer_meta($nom_meta_base_version);
}
Exemple #14
0
function critere_statut_controle_forum($type, $id_rubrique = 0, $recherche = '')
{
    if (is_array($id_rubrique)) {
        $id_rubrique = join(',', $id_rubrique);
    }
    if (!$id_rubrique) {
        $from = 'spip_forum AS F';
        $where = "";
        $and = "";
    } else {
        if (strpos($id_rubrique, ',')) {
            $eq = " IN ({$id_rubrique})";
        } else {
            $eq = "={$id_rubrique}";
        }
        $from = 'spip_forum AS F, spip_articles AS A';
        $where = "A.id_secteur{$eq} AND F.objet='article' AND F.id_objet=A.id_article";
        $and = ' AND ';
    }
    switch ($type) {
        case 'public':
            $and .= "F.statut IN ('publie', 'off', 'prop', 'spam') AND F.texte!=''";
            break;
        case 'prop':
            $and .= "F.statut='prop'";
            break;
        case 'spam':
            $and .= "F.statut='spam'";
            break;
        case 'interne':
            $and .= "F.statut IN ('prive', 'privrac', 'privoff', 'privadm') AND F.texte!=''";
            break;
        case 'vide':
            $and .= "F.statut IN ('publie', 'off', 'prive', 'privrac', 'privoff', 'privadm') AND F.texte=''";
            break;
        default:
            $where = '0=1';
            $and = '';
            break;
    }
    if ($recherche) {
        # recherche par IP
        if (preg_match(',^\\d+\\.\\d+\\.(\\*|\\d+\\.(\\*|\\d+))$,', $recherche)) {
            $and .= " AND ip LIKE " . sql_quote(str_replace('*', '%', $recherche));
        } else {
            include_spip('inc/rechercher');
            if ($a = recherche_en_base($recherche, 'forum')) {
                $and .= " AND " . sql_in('id_forum', array_keys(array_pop($a)));
            } else {
                $and .= " AND 0=1";
            }
        }
    }
    return array($from, "{$where}{$and}");
}
function BOUCLE_articleshtml_a80389532d86f8e6929960268237a0a8(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    $doublons_index = array();
    // Initialise le(s) critère(s) doublons
    if (!isset($doublons[$d = 'articles'])) {
        $doublons[$d] = '';
    }
    if (!isset($command['table'])) {
        $command['table'] = 'articles';
        $command['id'] = '_articles';
        $command['from'] = array('articles' => 'spip_articles');
        $command['type'] = array();
        $command['groupby'] = array();
        $command['select'] = array("articles.date", "articles.lang", "articles.id_article", "articles.texte", "articles.descriptif", "articles.chapo", "articles.titre");
        $command['orderby'] = array('articles.date DESC');
        $command['join'] = array();
        $command['limit'] = '0,3';
        $command['having'] = array();
    }
    $command['where'] = array(quete_condition_statut('articles.statut', 'publie,prop,prepa/auteur', 'publie', ''), array(sql_in('articles.id_article', $doublons[$doublons_index[] = 'articles'], 'NOT')));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes/inc/inc-trad.html', 'html_a80389532d86f8e6929960268237a0a8', '_articles', 6, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        lang_select($GLOBALS['spip_lang']);
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            foreach ($doublons_index as $k) {
                $doublons[$k] .= "," . $Pile[$SP]['id_article'];
            }
            // doublons
            lang_select_public($Pile[$SP]['lang'], '', $Pile[$SP]['titre']);
            $t0 .= '
          	<li>' . (($t1 = strval(interdire_scripts(affdate(normaliser_date($Pile[$SP]['date']))))) !== '' ? '<span>' . $t1 . ((($t2 = strval(traduire_nom_langue(spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang'])))) !== '' ? ' - <dfn class="lang">' . $t2 . '</dfn>' : '') . '</span>') : '') . ' 
          	    
              <a href="' . spip_htmlspecialchars(sinon($GLOBALS['meta']['adresse_site'], '.')) . '/spip.php?action=converser&amp;redirect=' . spip_htmlspecialchars(sinon($GLOBALS['meta']['adresse_site'], '.')) . '%2F' . vider_url(urlencode_1738(generer_url_entite($Pile[$SP]['id_article'], 'article', '', '', true))) . '&amp;var_lang=' . spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang']) . '" hreflang="' . spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang']) . '" ' . (($t1 = strval(interdire_scripts(entites_html(textebrut(filtre_introduction_dist($Pile[$SP]['descriptif'], strlen($Pile[$SP]['descriptif']) ? '' : $Pile[$SP]['chapo'] . "\n\n" . $Pile[$SP]['texte'], 500, $connect, null)))))) !== '' ? 'title="' . $t1 . '"' : '') . '>' . interdire_scripts(supprimer_numero(typo(supprimer_numero($Pile[$SP]['titre']), "TYPO", $connect, $Pile[0]))) . '</a>
          	</li>
            ';
            lang_select();
        }
        lang_select();
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_articles @ squelettes/inc/inc-trad.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
/**
 * Fonction de désinstallation du plugin cPublicité.
 *
 * @param string $nom_meta_base_version
 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
 * @return void
**/
function cpub_vider_tables($nom_meta_base_version)
{
    sql_drop_table("spip_publicites");
    sql_drop_table("spip_bannieres");
    sql_drop_table("spip_stats_pubs");
    # Nettoyer les versionnages et forums
    sql_delete("spip_versions", sql_in("objet", array('publicite', 'banniere')));
    sql_delete("spip_versions_fragments", sql_in("objet", array('publicite', 'banniere')));
    sql_delete("spip_forum", sql_in("objet", array('publicite', 'banniere')));
    effacer_meta($nom_meta_base_version);
}
function BOUCLE_langueshtml_7b757a9211fae3c1871c26ec4415f046(&$Cache, &$Pile, &$doublons, &$Numrows, $SP)
{
    static $command = array();
    static $connect;
    $command['connect'] = $connect = '';
    $doublons_index = array();
    // Initialise le(s) critère(s) doublons
    if (!isset($doublons[$d = 'rubriques' . 'contexte'])) {
        $doublons[$d] = '';
    }
    if (!isset($command['table'])) {
        $command['table'] = 'rubriques';
        $command['id'] = '_langues';
        $command['from'] = array('rubriques' => 'spip_rubriques');
        $command['type'] = array();
        $command['groupby'] = array();
        $command['select'] = array("rubriques.lang", "rubriques.id_rubrique", "rubriques.titre");
        $command['orderby'] = array('rubriques.lang');
        $command['join'] = array();
        $command['limit'] = '';
        $command['having'] = array();
    }
    $command['where'] = array(quete_condition_statut('rubriques.statut', '!', 'publie', ''), array('=', 'rubriques.id_parent', 0), array(sql_in('rubriques.id_rubrique', $doublons[$doublons_index[] = 'rubriques' . 'contexte'], 'NOT')));
    if (defined("_BOUCLE_PROFILER")) {
        $timer = time() + microtime();
    }
    $t0 = "";
    // REQUETE
    $iter = IterFactory::create("SQL", $command, array('squelettes/plan.html', 'html_7b757a9211fae3c1871c26ec4415f046', '_langues', 25, $GLOBALS['spip_lang']));
    if (!$iter->err()) {
        lang_select($GLOBALS['spip_lang']);
        $SP++;
        // RESULTATS
        while ($Pile[$SP] = $iter->fetch()) {
            foreach ($doublons_index as $k) {
                $doublons[$k] .= "," . $Pile[$SP]['id_rubrique'];
            }
            // doublons
            lang_select_public($Pile[$SP]['lang'], '', $Pile[$SP]['titre']);
            $t0 .= ($t1 = strval(traduire_nom_langue(unique(spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang'])), 'lang'))) !== '' ? '
				<li lang="' . spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang']) . '" xml:lang="' . spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang']) . '" dir="' . lang_dir($Pile[$SP]['lang'], 'ltr', 'rtl') . '">
					<a href="spip.php?action=converser&amp;redirect=' . self() . '&amp;var_lang=' . spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang']) . '" hreflang="' . spip_htmlentities($Pile[$SP]['lang'] ? $Pile[$SP]['lang'] : $GLOBALS['spip_lang']) . '">' . $t1 . '</a>
				</li>
			' : '';
            lang_select();
        }
        lang_select();
        $iter->free();
    }
    if (defined("_BOUCLE_PROFILER") and 1000 * ($timer = time() + microtime() - $timer) > _BOUCLE_PROFILER) {
        spip_log(intval(1000 * $timer) . "ms BOUCLE_langues @ squelettes/plan.html", "profiler" . _LOG_AVERTISSEMENT);
    }
    return $t0;
}
 function &find_by_ids($ids, $query)
 {
     $result = array();
     if ($query->is_empty()) {
         return $result;
     }
     $sql = $this->_get_search_sql($query);
     $sql .= " AND " . sql_in('object_id', $ids);
     $result =& $this->_get_db_result($sql);
     return $result;
 }
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'));
    }
}
Exemple #20
0
function optimiser_sansref($table, $id, $sel)
{
	$in = array();
	while ($row = sql_fetch($sel)) $in[$row['id']]=true;

	if ($in) {
		$in = join(',', array_keys($in));
		sql_delete($table,  sql_in($id,$in));
		spip_log("Numeros des entrees $id supprimees dans la table $table: $in");
	}
	return count($in);
}
Exemple #21
0
function optimiser_sansref($table, $id, $sel, $and = "")
{
    $in = array();
    while ($row = sql_fetch($sel)) {
        $in[$row['id']] = true;
    }
    sql_free($sel);
    if ($in) {
        sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND {$and}" : ""));
        spip_log("Numeros des entrees {$id} supprimees dans la table {$table}: {$in}");
    }
    return count($in);
}
Exemple #22
0
function inc_formater_auteur_dist($id_auteur, $row=NULL) {

  global $connect_id_auteur, $connect_statut;

	$id_auteur = intval($id_auteur);

	if ($row===NULL)
	  $row = sql_fetsel("*, (en_ligne<DATE_SUB(NOW(),INTERVAL 15 DAY)) AS parti", "spip_auteurs", "id_auteur=$id_auteur");

	$vals = array();
	$statut = $row['statut'];
	$href = generer_url_ecrire("auteurs","statut=$statut");
	$vals[] = "<a href='$href'>" . bonhomme_statut($row) . '</a>';

	if (($id_auteur == $connect_id_auteur) OR $row['parti'])
		$vals[]= '&nbsp;';
	else	$vals[]= formater_auteur_mail($row, $id_auteur);

	if (!$nom = typo($row['nom']))
		$nom = "<span style='color: red'>" . _T('texte_vide') . '</span>';

	$vals[] = "<a href='"
	. generer_url_ecrire('auteur_infos', "id_auteur=$id_auteur")
	. "'"
	. (!$row['bio'] ? '' : (" title=\"" . attribut_html(couper(textebrut($row["bio"]), 200)) ."\""))
	. ">$nom</a>";

	$url = traiter_lien_explicite($row["url_site"]);

	$vals[] =  !$url ? "&nbsp;"
	  :  "<a href='$url'>".couper(sinon(typo($row['nom_site']), $row["url_site"]),30)."</a>";

	$contributions = array();
	if (autoriser('modifier', 'auteur', $id_auteur, $row)) {
		$in = sql_in('statut', 
			($connect_statut == "0minirezo"
			? array('prepa', 'prop', 'publie', 'refuse')
			: array('prop', 'publie')));
		if ($cpt = sql_countsel("spip_auteurs_articles AS L LEFT JOIN spip_articles AS A ON A.id_article=L.id_article", "L.id_auteur=$id_auteur AND $in"))
			$contributions[] = ($cpt>1?$cpt.' '._T('info_article_2'):_T('info_1_article'));
	} else {
		if ($cpt = sql_countsel("spip_forum AS F", "F.id_auteur=$id_auteur"))
			$contributions[] = ($cpt>1?$cpt.' '._T('public:messages_forum'):('1 ' . _T('public:message')));
	}

	$contributions = pipeline('compter_contributions_auteur',array('args'=>array('id_auteur'=>$id_auteur,'row'=>$row),'data'=>$contributions));

	$vals[] =  count($contributions)?implode('<br />',$contributions):"&nbsp;";

	return $vals;
}
 function load_metadata()
 {
     $ids_array = $this->_get_path_objects_ids_array();
     if (!count($ids_array)) {
         return false;
     }
     $ids_array = array_reverse($ids_array);
     $metadata_db_table =& db_table_factory::instance($this->metadata_db_table_name);
     $objects_metadata = $metadata_db_table->get_list(sql_in('object_id', $ids_array), '', 'object_id');
     if (!count($objects_metadata)) {
         return false;
     }
     $this->_process_loaded_metadata($ids_array, $objects_metadata);
     return true;
 }
function forum_compte_messages_from($email, $id_forum)
{
    static $mem = array();
    if (isset($mem[$email])) {
        return $mem[$email];
    }
    // sinon on fait une requete groupee pour essayer de ne le faire qu'une fois pour toute la liste
    $emails = sql_allfetsel("DISTINCT email_auteur", "spip_forum", "id_forum>" . intval($id_forum - 50) . " AND id_forum<" . intval($id_forum + 50));
    $emails = array_map('reset', $emails);
    $emails = array_filter($emails);
    // et compter
    $counts = sql_allfetsel("email_auteur,count(id_forum) AS N", "spip_forum", sql_in("email_auteur", $emails), "email_auteur");
    foreach ($counts as $c) {
        $mem[$c['email_auteur']] = $c['N'];
    }
    return $mem[$email];
}
/**
 * Migration des albums grappes vers media_collections
 * 
 * Appelée lors de l'installation du plugin
 */
function geol_albums_init()
{
    if ($grappes = sql_allfetsel('*', 'spip_grappes', sql_in('type', array('album_perso', 'album_coop', 'balade')))) {
        include_spip('action/editer_objet');
        include_spip('action/editer_liens');
        foreach ($grappes as $grappe) {
            // récupérer les infos des anciens albums (grappes)
            $set = array('id_admin' => $grappe['id_admin'], 'titre' => $grappe['titre'], 'descriptif' => $grappe['descriptif'], 'date' => $grappe['date']);
            if ($grappe['type'] == 'album_perso') {
                $set['type_collection'] = 'perso';
            } elseif ($grappe['type'] == 'album_coop') {
                $set['type_collection'] = 'coop';
            } elseif ($grappe['type'] == 'balade') {
                $set['type_collection'] = 'balade';
            }
            // créer des collections
            $id_collection = objet_inserer('collection');
            if ($id_collection > 0) {
                objet_modifier('collection', $id_collection, $set);
                objet_instituer('collection', $id_collection, array('statut' => 'publie'));
                // copie des liens de grappes_liens vers collections_liens pour les articles
                $articles = sql_allfetsel('*', 'spip_grappes_liens', "objet = 'article' AND id_grappe = " . $grappe['id_grappe']);
                foreach ($articles as $article) {
                    objet_associer(array('collection' => $id_collection), array($article['objet'] => $article['id_objet']), array('rang' => $article['rang']));
                }
                // associer l'auteur id_admin de la grappe à la collection
                objet_associer(array('auteur' => $grappe['id_admin']), array('collection' => $id_collection));
                // copie des liens de grappes_liens vers auteurs_liens pour les auteurs
                $auteurs = sql_allfetsel('*', 'spip_grappes_liens', "objet = 'auteur' AND id_grappe = " . $grappe['id_grappe']);
                foreach ($auteurs as $auteur) {
                    objet_associer(array($auteur['objet'] => $auteur['id_objet']), array('collection' => $id_collection));
                }
                // maj des liens des forums attachés aux grappes
                $forums = sql_allfetsel('id_forum', 'spip_forum', "objet = 'grappe' AND id_objet = " . $grappe['id_grappe']);
                foreach ($forums as $forum) {
                    sql_updateq('spip_forum', array('objet' => 'collection', 'id_objet' => $id_collection), 'id_forum = ' . $forum['id_forum']);
                }
                // maj des liens des points gis attachés aux grappes
                $points = sql_allfetsel('id_gis', 'spip_gis_liens', "objet = 'grappe' AND id_objet = " . $grappe['id_grappe']);
                foreach ($points as $point) {
                    sql_updateq('spip_gis_liens', array('objet' => 'collection', 'id_objet' => $id_collection), 'id_gis = ' . $point['id_gis']);
                }
            }
        }
    }
}
Exemple #26
0
function aff_statistique_visites_popularite($serveur, $id_article, &$classement, &$liste){
	// Par popularite
	$result = sql_select("id_article, titre, popularite, visites", "spip_articles", "statut='publie' AND popularite > 0", "", "popularite DESC",'','',$serveur);
	$out = '';
	while ($row = sql_fetch($result,$serveur)) {
		$l_article = $row['id_article'];
		$liste++;
		$classement[$l_article] = $liste;

		if ($liste <= 30) {
			$articles_vus[] = $l_article;
			$out .= statistiques_populaires($row, $id_article, $liste);
		}
	}
	$recents = array();
	$q = sql_select("id_article", "spip_articles", "statut='publie' AND popularite > 0", "", "date DESC", "10",'',$serveur);
	while ($r = sql_fetch($q,$serveur))
		if (!in_array($r['id_article'], $articles_vus))
			$recents[]= $r['id_article'];

	if ($recents) {
		$result = sql_select("id_article, titre, popularite, visites", "spip_articles", "statut='publie' AND " . sql_in('id_article', $recents), "", "popularite DESC",'','',$serveur);

		$out .= "</ul><div style='text-align: center'>[...]</div>" .
		"<ul class='classement'>";
		while ($row = sql_fetch($result,$serveur)) {
			$l_article = $row["id_article"];
			$out .= statistiques_populaires($row, $id_article, $classement[$l_article]);
		}
	}

	return !$out ? '' : (
		"<div class='cadre cadre-e'>\n"
		."<div class='cadre_padding verdana1 spip_x-small'>"
		.typo(_T('info_visites_plus_populaires'))
		."<ul class='classement'>"
		.$out

		."</ul>"
		
		."<div class='arial11'><b>"._T('info_comment_lire_tableau')."</b><br />"._T('texte_comment_lire_tableau')."</div>"

		."</div>"
		."</div>");
}
Exemple #27
0
/**
 * Calcul d'une hierarchie
 * (liste des id_rubrique contenants une rubrique donnee)
 * (contrairement a la fonction calcul_branche_in du core qui calcule les
 * rubriques contenues)
 *
 * @param mixed $id
 * @return string
 */
function calcul_hierarchie_in($id) {

	// normaliser $id qui a pu arriver comme un array, comme un entier, ou comme une chaine NN,NN,NN
	if (!is_array($id)) $id = explode(',',$id);
	$id = join(',', array_map('intval', $id));

	// Notre branche commence par la rubrique de depart
	$hier = $id;

	// On ajoute une generation (les filles de la generation precedente)
	// jusqu'a epuisement
	while ($parents = sql_allfetsel('id_parent', 'spip_rubriques',
	sql_in('id_rubrique', $id))) {
		$id = join(',', array_map('reset', $parents));
		$hier .= ',' . $id;
	}

	return $hier;
}
Exemple #28
0
/**
 * Autorisation d'ajout d'un evenement a un article
 *
 * @param string $faire
 * @param string $quoi
 * @param int $id
 * @param int $qui
 * @param array $options
 * @return bool
 */
function autoriser_article_creerevenementdans_dist($faire,$quoi,$id,$qui,$options){
	if (!$id) return false; // interdit de creer un evenement sur un article vide !
	// si on a le droit de modifier l'article alors on a peut-etre le droit d'y creer un evenement
	$afficher = false;
	if (autoriser('modifier','article',$id,$qui)) {
		$afficher = true;
		// un article avec des evenements a toujours le droit
		if (!sql_countsel('spip_evenements','id_article='.intval($id))){
			// si au moins une rubrique a le flag agenda
			if (sql_countsel('spip_rubriques','agenda=1')){
				// alors il faut le flag agenda dans cette branche !
				$afficher = false;
				include_spip('inc/agenda_gestion');
				$in = calcul_hierarchie_in(sql_getfetsel('id_rubrique','spip_articles','id_article='.intval($id)));
				$afficher = sql_countsel('spip_rubriques',sql_in('id_rubrique',$in)." AND agenda=1");
			}
		}
	}
	return $afficher;
}
Exemple #29
0
/**
 * Bloc sur les informations generales concernant chaque type d'objet
 *
 * @param string $texte
 * @return string
 */
function breves_accueil_informations($texte)
{
    include_spip('base/abstract_sql');
    $q = sql_select("COUNT(*) AS cnt, statut", 'spip_breves', '', 'statut', '', '', "COUNT(*)<>0");
    $cpt = array();
    $cpt2 = array();
    $where = false;
    if ($GLOBALS['visiteur_session']['statut'] == '0minirezo') {
        $where = sql_allfetsel('id_objet', 'spip_auteurs_liens', "objet='rubrique' AND id_auteur=" . intval($GLOBALS['visiteur_session']['id_auteur']));
        if ($where) {
            $where = sql_in('id_rubrique', array_map('reset', $where));
        }
    }
    $defaut = $where ? '0/' : '';
    while ($row = sql_fetch($q)) {
        $cpt[$row['statut']] = $row['cnt'];
        $cpt2[$row['statut']] = $defaut;
    }
    if ($cpt) {
        if ($where) {
            $q = sql_select("COUNT(*) AS cnt, statut", 'spip_breves', $where, "statut");
            while ($row = sql_fetch($q)) {
                $r = $row['statut'];
                $cpt2[$r] = intval($row['cnt']) . '/';
            }
        }
        $texte .= "<div class='accueil_informations breves liste'>";
        $texte .= "<h4>" . afficher_plus_info(generer_url_ecrire("breves"), "", _T('breves:info_breves_02')) . "</h4>";
        $texte .= "<ul class='liste-items'>";
        if (isset($cpt['prop'])) {
            $texte .= "<li class='item'>" . _T("texte_statut_attente_validation") . ": " . $cpt2['prop'] . $cpt['prop'] . '</li>';
        }
        if (isset($cpt['publie'])) {
            $texte .= "<li class='item on'>" . _T("texte_statut_publies") . ": " . $cpt2['publie'] . $cpt['publie'] . '</li>';
        }
        $texte .= "</ul>";
        $texte .= "</div>";
    }
    return $texte;
}
Exemple #30
0
/**
 * Calculer les nombres d'elements (articles, etc.) lies a chaque mot
 *
 * @param int $id_groupe
 * @return array
 */
function calculer_utilisations_mots($id_groupe)
{
    $retour = array();
    $objets = sql_allfetsel('DISTINCT objet', array('spip_mots_liens AS L', 'spip_mots AS M'), array('L.id_mot=M.id_mot', 'M.id_groupe=' . intval($id_groupe)));
    foreach ($objets as $o) {
        $objet = $o['objet'];
        $_id_objet = id_table_objet($objet);
        $table_objet_sql = table_objet_sql($objet);
        $infos = lister_tables_objets_sql($table_objet_sql);
        if (isset($infos['field']) and $infos['field']) {
            // uniquement certains statut d'objet,
            // et uniquement si la table dispose du champ statut.
            $statuts = "";
            if (isset($infos['field']['statut']) or isset($infos['statut'][0]['champ'])) {
                // on s'approche au mieux de la declaration de l'objet.
                // il faudrait ameliorer ce point.
                $c_statut = isset($infos['statut'][0]['champ']) ? $infos['statut'][0]['champ'] : 'statut';
                // bricoler les statuts d'apres la declaration de l'objet (champ previsu a defaut de mieux)
                if (array_key_exists('previsu', $infos['statut'][0]) and strlen($infos['statut'][0]['previsu']) > 1) {
                    $str_statuts = $infos['statut'][0]['previsu'];
                    if ($GLOBALS['connect_statut'] != "0minirezo") {
                        $str_statuts = str_replace('prepa', '', $str_statuts);
                    }
                    $not = substr($str_statuts, 0, 1) == '!' ? 'NOT' : '';
                    $str_statuts = str_replace('!', '', $str_statuts);
                    $Tstatuts = array_filter(explode(',', $str_statuts));
                    $statuts = " AND " . sql_in("O.{$c_statut}", $Tstatuts, $not);
                } else {
                    $statuts = " AND " . sql_in("O.{$c_statut}", $GLOBALS['connect_statut'] == "0minirezo" ? array('prepa', 'prop', 'publie') : array('prop', 'publie'));
                }
            }
            $res = sql_allfetsel("COUNT(*) AS cnt, L.id_mot", "spip_mots_liens AS L\n\t\t\t\t\tLEFT JOIN spip_mots AS M ON L.id_mot=M.id_mot\n\t\t\t\t\t\tAND L.objet=" . sql_quote($objet) . "\n\t\t\t\t\tLEFT JOIN " . $table_objet_sql . " AS O ON L.id_objet=O.{$_id_objet}", "M.id_groupe={$id_groupe}{$statuts}", "L.id_mot");
            foreach ($res as $row) {
                $retour[$table_objet_sql][$row['id_mot']] = $row['cnt'];
            }
        }
    }
    return $retour;
}