/**
 * 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 outlogin($skin_dir = "basic")
{
    global $config, $member, $g4, $urlencode, $is_admin;
    $nick = cut_str($member['mb_nick'], $config['cf_cut_name']);
    $point = number_format($member['mb_point']);
    $outlogin_skin_path = "{$g4['path']}/skin/outlogin/{$skin_dir}";
    // 읽지 않은 쪽지가 있다면
    if ($member['mb_id']) {
        $sql = " select count(*) as cnt from {$g4['memo_table']} where me_recv_mb_id = '{$member['mb_id']}' and me_read_datetime = '0000-00-00 00:00:00' ";
        $row = sql_fetch($sql);
        $memo_not_read = $row['cnt'];
        $is_auth = false;
        $sql = " select count(*) as cnt from {$g4['auth_table']} where mb_id = '{$member['mb_id']}' ";
        $row = sql_fetch($sql);
        if ($row['cnt']) {
            $is_auth = true;
        }
    }
    ob_start();
    if ($member['mb_id']) {
        include_once "{$outlogin_skin_path}/outlogin.skin.2.php";
    } else {
        // 로그인 전이라면
        include_once "{$outlogin_skin_path}/outlogin.skin.1.php";
    }
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
Beispiel #3
0
/**
 * Effacer une rubrique
 *
 * http://doc.spip.org/@action_supprimer_dist
 *
 * @param null $id_rubrique
 * @return void
 */
function action_supprimer_rubrique_dist($id_rubrique = null)
{
    if (is_null($id_rubrique)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_rubrique = $securiser_action();
    }
    if (intval($id_rubrique)) {
        sql_delete("spip_rubriques", "id_rubrique=" . intval($id_rubrique));
        // Les admin restreints qui n'administraient que cette rubrique
        // deviennent redacteurs
        // (il y a sans doute moyen de faire ca avec un having)
        $q = sql_select("id_auteur", "spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique));
        while ($r = sql_fetch($q)) {
            $id_auteur = $r['id_auteur'];
            // degrader avant de supprimer la restriction d'admin
            // section critique sur les droits
            $n = sql_countsel("spip_auteurs_liens", "objet='rubrique' AND id_objet!=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
            if (!$n) {
                include_spip('action/editer_auteur');
                auteurs_set($id_auteur, array("statut" => '1comite'));
            }
            sql_delete("spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
        }
        // menu_rubriques devra recalculer
        effacer_meta("date_calcul_rubriques");
        // Une rubrique supprimable n'avait pas le statut "publie"
        // donc rien de neuf pour la rubrique parente
        include_spip('inc/rubriques');
        calculer_langues_rubriques();
        // invalider les caches marques de cette rubrique
        include_spip('inc/invalideur');
        suivre_invalideur("id='rubrique/{$id_rubrique}'");
    }
}
Beispiel #4
0
function action_supprimer_rubrique($r)
{
	list(,,$id_rubrique) = $r;
	sql_delete("spip_rubriques", "id_rubrique=$id_rubrique");
	sql_delete("spip_mots_rubriques", "id_rubrique=$id_rubrique");
	// Les admin restreints qui n'administraient que cette rubrique
	// deviennent redacteurs
	// (il y a sans doute moyen de faire ca avec un having)

	$q = sql_select("id_auteur", "spip_auteurs_rubriques", "id_rubrique=$id_rubrique");

	while ($r = sql_fetch($q)) {
		$id_auteur = $r['id_auteur'];
		sql_delete("spip_auteurs_rubriques", "id_rubrique=$id_rubrique AND id_auteur=$id_auteur");
		$n = sql_countsel("spip_auteurs_rubriques", "id_auteur=$id_auteur");
		if (!$n)
			sql_updateq("spip_auteurs", array("statut" => '1comite'), "id_auteur=$id_auteur");
	}
	// menu_rubriques devra recalculer
	effacer_meta("date_calcul_rubriques");

	// Une rubrique supprimable n'avait pas le statut "publie"
	// donc rien de neuf pour la rubrique parente
	include_spip('inc/rubriques');
	calculer_langues_rubriques();

	// invalider les caches marques de cette rubrique
	include_spip('inc/invalideur');
	suivre_invalideur("id='id_rubrique/$id_rubrique'");
}
function eb_visit($skin_dir = 'basic')
{
    global $config, $g5, $tpl, $is_admin, $connect, $tpl_name;
    // visit 배열변수에
    // $visit[1] = 오늘
    // $visit[2] = 어제
    // $visit[3] = 최대
    // $visit[4] = 전체
    // 숫자가 들어감
    preg_match("/오늘:(.*),어제:(.*),최대:(.*),전체:(.*)/", $config['cf_visit'], $visit);
    settype($visit[1], "integer");
    settype($visit[2], "integer");
    settype($visit[3], "integer");
    settype($visit[4], "integer");
    // 속도 개선을 위해 DB 커넥션 없이 하는 방법을 강구해야 함.
    $write = sql_fetch("select sum(bo_count_write) as total from {$g5['board_table']}", false);
    $comment = sql_fetch("select sum(bo_count_comment) as total from {$g5['board_table']}", false);
    $members = sql_fetch("select count(*) as total from {$g5['member_table']}", false);
    $newby = sql_fetch("select count(*) as total from {$g5['member_table']} where mb_datetime between date_format(" . date("YmdHis") . ",'%Y-%m-%d 00:00:00') and date_format(" . date("YmdHis") . ",'%Y-%m-%d 23:59:59')", false);
    $counter['visit_today'] = number_format($visit[1]);
    $counter['visit_yesterday'] = number_format($visit[2]);
    $counter['visit_max'] = number_format($visit[3]);
    $counter['visit_total'] = number_format($visit[4]);
    $counter['total_write'] = number_format($write['total']);
    $counter['total_comment'] = number_format($comment['total']);
    $counter['newby'] = number_format($newby['total']);
    $counter['members'] = number_format($members['total']);
    $counter['write'] = number_format($write['total']);
    $counter['comment'] = number_format($comment['total']);
    $tpl->define(array('pc' => 'skin_pc/visit/' . $skin_dir . '/visit.skin.html', 'mo' => 'skin_mo/visit/' . $skin_dir . '/visit.skin.html', 'bs' => 'skin_bs/visit/' . $skin_dir . '/visit.skin.html'));
    $tpl->assign(array("visit" => $visit, "is_admin" => $is_admin, "connect" => $connect, "counter" => $counter));
    $tpl->print_($tpl_name);
}
/**
 * Generer un ticket resume de la transaction
 * pour les admins indiques dans la configuration
 * 
 * @param <type> $id_transaction
 * @return <type>
 */
function inc_bank_editer_ticket_admin_dist($id_transaction)
{
    // il faut avoir configure un ou des emails de notification
    $c = unserialize($GLOBALS['meta']['bank_paiement']);
    if (!strlen($email = $c['email_ticket_admin'])) {
        spip_log(var_export($GLOBALS['meta']['bank_paiement'], true), 'bank_ticket');
        return;
    }
    $ticket = "";
    $res = sql_select("*", "spip_transactions", "id_transaction=" . intval($id_transaction));
    if ($row = sql_fetch($res)) {
        $montant = $row['montant_regle'];
        $ticket .= "<h2>Transaction {$id_transaction}</h2>\n<table border='1'>";
        foreach ($row as $k => $v) {
            $ticket .= "<tr><td>{$k}</td><td>{$v}</td>";
        }
        $ticket .= "</table>";
    }
    // ensuite un pipeline pour editer le ticket
    $ticket = pipeline('bank_editer_ticket_reglement', array('args' => array('id_transaction' => $id_transaction), 'data' => $ticket));
    $ticket = "<html>{$ticket}</html>";
    $header = "MIME-Version: 1.0\n" . "Content-Type: text/html; charset=" . $GLOBALS['meta']['charset'] . "\n" . "Content-Transfer-Encoding: 8bit\n";
    $sujet = "Transaction OK #{$id_transaction} [" . affiche_monnaie($montant) . "]";
    $url = parse_url($GLOBALS['meta']['adresse_site']);
    $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
    $envoyer_mail($email, $sujet, $ticket, 'reglements@' . $url['host'], $header);
}
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 revisions_repair_unserialized_fragments()
{
    $res = sql_select("*", "spip_versions_fragments", "compress=" . intval(-1));
    $n = sql_count($res);
    spip_log("{$n} fragments a verifier", "maj");
    while ($row = sql_fetch($res)) {
        $fragment = $row['fragment'];
        $set = array('compress' => 0);
        // verifier que le fragment est bien serializable
        if (unserialize($fragment) === false and strncmp($fragment, "corrompu", 8) !== 0) {
            $dir_tmp = sous_repertoire(_DIR_TMP, "versions_fragments_corrompus");
            $set['fragment'] = revisions_repair_serialise($fragment);
            if (strncmp($set['fragment'], "corrompu", 8) == 0) {
                $f = $row['id_fragment'] . "-" . $row['objet'] . "-" . $row['id_objet'];
                spip_log("Fragment serialize corrompu {$f}", "maj" . _LOG_ERREUR);
                $f = $f . "-serialize.txt";
                ecrire_fichier($dir_tmp . $f, $fragment);
            }
        }
        sql_updateq("spip_versions_fragments", $set, $w = "id_fragment=" . intval($row['id_fragment']) . " AND id_objet=" . intval($row['id_objet']) . " AND objet=" . sql_quote($row['objet']) . " AND version_min=" . intval($row['version_min']));
        #spip_log($w,"maj");
        if (time() > _TIME_OUT) {
            return;
        }
    }
}
Beispiel #9
0
function formulaires_delete_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui')
{
    include_spip('base/abstract_sql');
    include_spip('inc/texte');
    include_spip('action/editer_article');
    include_spip('inc/autoriser');
    $article = _request('article');
    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    include_spip('inc/autoriser');
    if (!autoriser('modifier', 'article', $article)) {
        $id_article = false;
        $result = sql_select('*', 'spip_auteurs_liens', 'id_objet=' . intval($article) . ' AND objet=' . sql_quote("article"));
        if ($row = sql_fetch($result)) {
            if ($row['id_auteur'] == $id_auteur) {
                $id_article = $article;
            }
        }
    } else {
        $id_article = $article;
    }
    if ($id_article) {
        // 2 actualizampos los campos del articulo
        sql_updateq('spip_articles', array('statut' => 'poubelle'), 'id_article=' . intval($id_article));
        // message
        return array("editable" => true, "message_ok" => _T('cgeomap:message_delete') . ':' . $id_article);
    } else {
        // message
        return array("editable" => false, "message_erreur" => _T('cgeomap:not_allowed'));
    }
}
Beispiel #10
0
function latest($skin_dir = "", $bo_table, $rows = 10, $subject_len = 40, $options = "")
{
    global $g4;
    if ($skin_dir) {
        $GLOBALS['latest_skin_path'] = $latest_skin_path = "{$g4['path']}/skin/latest/{$skin_dir}";
    } else {
        $GLOBALS['latest_skin_path'] = $latest_skin_path = "{$g4['path']}/skin/latest/basic";
    }
    $list = array();
    $sql = " select * from {$g4['board_table']} where bo_table = '{$bo_table}'";
    $board = sql_fetch($sql);
    $tmp_write_table = $g4['write_prefix'] . $bo_table;
    // 게시판 테이블 전체이름
    $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} ";
    //explain($sql);
    $result = sql_query($sql);
    for ($i = 0; $row = sql_fetch_array($result); $i++) {
        $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
    }
    ob_start();
    include "{$latest_skin_path}/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
function formulaires_ecatalogue_article_option_charger_dist($id_article)
{
    $valeurs = array();
    if ($res = sql_select('id_rubrique', 'spip_articles', 'id_article=' . $id_article)) {
        while ($r = sql_fetch($res)) {
            $id_rubrique = $r['id_rubrique'];
        }
    }
    $rubriques = array($id_rubrique);
    $rubrique_mdl = new PdkRubriqueModel();
    do {
        // get all parents id
        $rubrique = $rubrique_mdl->select_by_id($id_rubrique);
        $id_rubrique = $rubrique['id_parent'];
        $rubriques[] = $id_rubrique;
    } while ($id_rubrique != '0');
    $groupe_ids = array();
    if ($res = sql_select('id_groupe', 'spip_ecatalogue_rubriques_groupes', 'id_rubrique in (' . implode(',', $rubriques) . ')')) {
        while ($r = sql_fetch($res)) {
            $groupe_ids[] = $r['id_groupe'];
        }
    }
    $valeurs['groupe_ids'] = $groupe_ids;
    $ao_mdl = new ArticleOptionModel();
    $connections = $ao_mdl->select('id_article=' . $id_article);
    foreach ($connections as $connection) {
        $valeurs["options[" . $connection['id_option'] . "]"] = $connection['id_option'];
    }
    return $valeurs;
}
function migrer_articles($where_articles, $champ_date_debut, $champ_date_fin, $horaire, $where_mots)
{
    include_spip('action/editer_evenement');
    $where_mots = implode(' AND ', $where_mots);
    $nb = 0;
    $res = sql_select('*', 'spip_articles', $where_articles);
    while ($row = sql_fetch($res)) {
        $id_evenement = evenement_inserer($row['id_article']);
        // mettre les champs
        $set = array('date_debut' => $row[$champ_date_debut], 'date_fin' => $row[$champ_date_fin], 'titre' => $row['titre'], 'horaire' => $horaire ? 'oui' : 'non');
        evenement_modifier($id_evenement, $set);
        // associer les mots : en sql pour ne pas exploser si plein de mots en base
        $mots = sql_allfetsel('M.id_mot', 'spip_mots AS M JOIN spip_mots_liens AS L ON (M.id_mot=L.id_mot AND L.objet=' . sql_quote('article') . ')', 'id_objet=' . intval($row['id_article']) . ' AND (' . $where_mots . ')');
        if (count($mots)) {
            $insert = array();
            foreach ($mots as $mot) {
                $insert[] = array('id_mot' => $mot['id_mot'], 'objet' => 'evenement', 'id_objet' => $id_evenement);
            }
            sql_insertq_multi('spip_mots_liens', $insert);
        }
        // publier l'evenement
        evenement_modifier($id_evenement, array('statut' => 'publie'));
        $nb++;
    }
    return $nb;
}
/**
 * Preselectionner la rubrique lors de la creation
 * desactive par defaut suite a remontee utilisateur mais activable par define
 * ou surchargeable
 *
 * @param string $objet
 * @param array $row
 * @return string
 */
function inc_preselectionner_parent_nouvel_objet_dist($objet, $row)
{
    if (!_AUTO_SELECTION_RUBRIQUE) {
        return '';
    }
    if (!isset($row['id_rubrique'])) {
        return '';
    }
    $id_rubrique = '';
    if ($GLOBALS['connect_id_rubrique']) {
        // si admin restreint : sa rubrique
        $id_rubrique = $GLOBALS['connect_id_rubrique'][0];
    } else {
        // sinon la derniere rubrique cree
        $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", "0,1");
        $id_rubrique = $row_rub['id_rubrique'];
    }
    // si le choix ne convient pas, on cherche dans un secteur
    if (!autoriser('creer' . $objet . 'dans', 'rubrique', $id_rubrique)) {
        $id_rubrique = '';
        // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises
        $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0");
        while (!$id_rubrique and $row_rub = sql_fetch($res)) {
            if (autoriser('creer' . $objet . 'dans', 'rubrique', $row_rub['id_rubrique'])) {
                $id_rubrique = $row_rub['id_rubrique'];
            }
        }
    }
    return $id_rubrique;
}
Beispiel #14
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 action_supprimer_tous_orphelins()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    //on recupere le contexte pour ne supprimer les orphelins que de ce dernier
    list($media, $distant, $statut, $sanstitre) = explode('/', $arg);
    //critere sur le media
    if ($media) {
        $select = "media=" . sql_quote($media);
    }
    //critere sur le distant
    if ($distant) {
        $where[] = "distant=" . sql_quote($distant);
    }
    //critere sur le statut
    if ($statut) {
        $where[] = "statut REGEXP " . sql_quote("({$statut})");
    }
    //critere sur le sanstitre
    if ($sanstitre) {
        $where[] = "titre=''";
    }
    //on isole les orphelins
    $select = sql_get_select("DISTINCT id_document", "spip_documents_liens as oooo");
    $cond = "spip_documents.id_document NOT IN ({$select})";
    $where[] = $cond;
    $ids_doc_orphelins = sql_select("id_document", "spip_documents", $where);
    $supprimer_document = charger_fonction('supprimer_document', 'action');
    while ($row = sql_fetch($ids_doc_orphelins)) {
        $supprimer_document($row['id_document']);
        // pour les orphelins du contexte, on traite avec la fonction existante
    }
}
function action_clevermail_list_subscriber_clear_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (sql_countsel("spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'")) {
        $subscribers = sql_select("sub.sub_id", "spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'", "list.sub_id", "", "");
        $sub_deleted = "";
        while ($subscriber = sql_fetch($subscribers)) {
            sql_delete("spip_cm_lists_subscribers", "sub_id = " . intval($subscriber['sub_id']));
            sql_delete("spip_cm_pending", "sub_id = " . intval($subscriber['sub_id']));
            $sub_deleted = $sub_deleted . ' ' . intval($subscriber['sub_id']);
        }
        spip_log('Suppression des abonnements ' . $sub_deleted, 'clevermail');
    } else {
        spip_log('Il n\'y a pas d\'abonnement à supprimer', 'clevermail');
    }
    if (sql_countsel("spip_cm_lists_subscribers", "", "lsr_id", "count(lsr_id) > 1") > 1) {
        $doublons = sql_select("lsr_id", "spip_cm_lists_subscribers", "", "lsr_id", "", "", "count(lsr_id) > 1");
        while ($doublon = sql_fetch($doublons)) {
            $lists = sql_select("lst_id, sub_id", "spip_cm_lists_subscribers", "lsr_id ='" . $doublon['lsr_id'] . "'");
            while ($list = sql_fetch($lists)) {
                sql_updateq("spip_cm_lists_subscribers", array('lsr_id' => md5('subscribe#' . intval($list['lst_id']) . '#' . intval($list['sub_id']) . '#' . time())), "lst_id=" . sql_quote($list['lst_id']) . " AND sub_id=" . sql_quote($list['sub_id']));
            }
        }
    }
    //Récupération du timestamp du mois dernier
    $today = time();
    $date_today = date("d:m:Y", $today);
    $today_exploded = explode(":", $date_today);
    $mois = (int) $today_exploded[1];
    $mois = --$mois;
    $valid_date = mktime(0, 0, 0, $mois, $today_exploded[0], $today_exploded[2]);
    sql_delete("spip_cm_pending", "pnd_action_date <" . $valid_date);
    spip_log('Suppression des abonnements en attente depuis plus d\'un mois', 'clevermail');
}
Beispiel #17
0
function maj_v016_dist($version_installee, $version_cible)
{
    if (upgrade_vers(1.6, $version_installee, $version_cible)) {
        #8/08/07  plus d'indexation dans le core
        #		include_spip('inc/indexation');
        #		purger_index();
        #		creer_liste_indexation();
        maj_version(1.6);
    }
    if (upgrade_vers(1.601, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_forum ADD INDEX id_syndic (id_syndic)");
        maj_version(1.601);
    }
    if (upgrade_vers(1.603, $version_installee, $version_cible)) {
        // supprimer les fichiers deplaces
        spip_unlink('inc_meta_cache.php');
        spip_unlink('inc_meta_cache.php3');
        spip_unlink('data/engines-list.ini');
        maj_version(1.603);
    }
    if (upgrade_vers(1.604, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_auteurs ADD lang VARCHAR(10) DEFAULT '' NOT NULL");
        $u = spip_query("SELECT * FROM spip_auteurs WHERE prefs LIKE '%spip_lang%'");
        while ($row = sql_fetch($u)) {
            $prefs = unserialize($row['prefs']);
            $l = $prefs['spip_lang'];
            unset($prefs['spip_lang']);
            spip_query("UPDATE spip_auteurs SET lang=" . _q($l) . ", prefs='" . addslashes(serialize($prefs)) . "' WHERE id_auteur=" . $row['id_auteur']);
        }
        $u = spip_query("SELECT lang FROM spip_auteurs");
        maj_version(1.604, $u);
    }
}
Beispiel #18
0
function connect($skin_dir = 'basic')
{
    global $config, $g5;
    // 회원, 방문객 카운트
    $sql = " select sum(IF(mb_id<>'',1,0)) as mb_cnt, count(*) as total_cnt from {$g5['login_table']}  where mb_id <> '{$config['cf_admin']}' ";
    $row = sql_fetch($sql);
    if (preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
        if (G5_IS_MOBILE) {
            $connect_skin_path = G5_THEME_MOBILE_PATH . '/' . G5_SKIN_DIR . '/connect/' . $match[1];
            if (!is_dir($connect_skin_path)) {
                $connect_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/connect/' . $match[1];
            }
            $connect_skin_url = str_replace(G5_PATH, G5_URL, $connect_skin_path);
        } else {
            $connect_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/connect/' . $match[1];
            $connect_skin_url = str_replace(G5_PATH, G5_URL, $connect_skin_path);
        }
        $skin_dir = $match[1];
    } else {
        if (G5_IS_MOBILE) {
            $connect_skin_path = G5_MOBILE_PATH . '/' . G5_SKIN_DIR . '/connect/' . $skin_dir;
            $connect_skin_url = G5_MOBILE_URL . '/' . G5_SKIN_DIR . '/connect/' . $skin_dir;
        } else {
            $connect_skin_path = G5_SKIN_PATH . '/connect/' . $skin_dir;
            $connect_skin_url = G5_SKIN_URL . '/connect/' . $skin_dir;
        }
    }
    ob_start();
    include_once $connect_skin_path . '/connect.skin.php';
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
function balise_ECATALOGUE_OPTION_FILTER_LINK_dyn($id_rubrique = 0)
{
    include_spip('functions/pdk_url');
    $rubriques = array($id_rubrique);
    $rubrique_mdl = new PdkRubriqueModel();
    do {
        // get all parents id
        $rubrique = $rubrique_mdl->select_by_id($id_rubrique);
        $id_rubrique = $rubrique['id_parent'];
        $rubriques[] = $id_rubrique;
    } while ($id_rubrique != '0');
    $rubriques = array_unique($rubriques);
    //на всякий случай
    $options = array();
    //get required options
    $result = sql_select(array('id_option'), array('spip_ecatalogue_articles_options as ao', 'spip_articles as a', 'spip_ecatalogue_products as p'), array('id_rubrique in (' . implode(',', $rubriques) . ')', 'p.id_article=a.id_article', 'a.id_article=ao.id_article', 'statut="publie"', 'quantity>0'), array('id_option'));
    while ($row = sql_fetch($result)) {
        $options[] = $row['id_option'];
    }
    //get proprietes by options
    $result = sql_select(array('p.id_propriete', 'p.titre as p_titre', 'type', 'id_option', 'o.titre as o_titre'), array('spip_ecatalogue_proprietes as p', 'spip_ecatalogue_options as o'), array('o.id_propriete=p.id_propriete', 'id_option in (' . implode(',', $options) . ')'), '', array('p.titre'));
    while ($row = sql_fetch($result)) {
        if (isset($proprietes[$row['id_propriete']])) {
            //if exits add option to this propriete
            $proprietes[$row['id_propriete']]['options'][$row['id_option']] = $row['o_titre'];
        } else {
            //register new propriete
            $proprietes[$row['id_propriete']] = array('titre' => $row['p_titre'], 'type' => $row['type'], 'options' => array($row['id_option'] => $row['o_titre']));
        }
    }
    return array('balise/ecatalogue_option_filter_link', 0, array('proprietes' => $proprietes));
}
function formulaires_ecatalogue_prices_group_traiter_dist()
{
    $result = array();
    $is_active = _request('is_active');
    $prices_group = _request('price');
    $elements_insert = _request('elements_insert');
    $isset_price_group = sql_select('*', 'spip_ecatalogue_prices_group');
    if ($isset_price_group) {
        while ($row = sql_fetch($isset_price_group)) {
            $id_price_group = $row['id_group'];
            if (isset($prices_group[$id_price_group])) {
                $name = $prices_group[$id_price_group];
                $status = isset($is_active[$id_price_group]) ? 1 : 0;
                sql_update('spip_ecatalogue_prices_group', array('titre' => '"' . $name . '"', 'is_active' => $status), 'id_group = ' . (int) $id_price_group);
            } else {
                sql_delete('spip_ecatalogue_prices_group', 'id_group = ' . $id_price_group);
                // Delete price group
            }
        }
    }
    if (is_array($elements_insert) && !empty($elements_insert)) {
        foreach ($elements_insert as $key => $value) {
            $name = $value['titre'];
            $is_active = isset($value['is_active']) ? 1 : 0;
            sql_insert('spip_ecatalogue_prices_group', '(titre,is_active)', '("' . $name . '",' . $is_active . ')');
        }
    }
    return $result;
}
Beispiel #21
0
function poll($skin_dir = 'basic', $po_id = false)
{
    global $config, $member, $g5, $is_admin;
    // 투표번호가 넘어오지 않았다면 가장 큰(최근에 등록한) 투표번호를 얻는다
    if (!$po_id) {
        $row = sql_fetch(" select MAX(po_id) as max_po_id from {$g5['poll_table']} ");
        $po_id = $row['max_po_id'];
    }
    if (!$po_id) {
        return;
    }
    $po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '{$po_id}' ");
    ob_start();
    if (G5_IS_MOBILE) {
        $poll_skin_path = G5_MOBILE_PATH . '/' . G5_SKIN_DIR . '/poll/' . $skin_dir;
        $poll_skin_url = G5_MOBILE_URL . '/' . G5_SKIN_DIR . '/poll/' . $skin_dir;
    } else {
        $poll_skin_path = G5_SKIN_PATH . '/poll/' . $skin_dir;
        $poll_skin_url = G5_SKIN_URL . '/poll/' . $skin_dir;
    }
    include_once $poll_skin_path . '/poll.skin.php';
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
function formulaires_editer_json_article_traiter_dist($id_article = 'new', $retour = '')
{
    $message = array('editable' => true, 'message_ok' => '');
    $vhplab_json = _request('vhplab_json');
    $vhplab_json_num = intval($vhplab_json);
    if ($vhplab_json_num > 0) {
        // comprobamos si el articulo ya ha sido relacionado con un id
        $result = sql_select('*', 'spip_vhplab_json_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article"));
        if ($row = sql_fetch($result)) {
            // si el articulo ya ha sido relacionado con un id actualizamos el enlace
            sql_updateq('spip_vhplab_json', array('id_json' => $vhplab_json_num), 'id_vhplab_json=' . intval($row['id_vhplab_json']));
            $message['message_ok'] = _T('vhplab:json_update_ok');
        } else {
            // si el articulo no ha sido relacionado con ningún id creamos un enlace
            $id_vhplab = sql_insertq("spip_vhplab_json", array('id_json' => $vhplab_json_num));
            sql_insertq('spip_vhplab_json_liens', array('id_vhplab_json' => intval($id_vhplab), 'id_objet' => intval($id_article), 'objet' => 'article'));
            $message['message_ok'] = _T('vhplab:json_insert_ok');
        }
    }
    if ($retour) {
        include_spip('inc/headers');
        $message['message_ok'] .= redirige_formulaire($retour);
    }
    return $message;
}
function genie_clevermail_auto_ajout_abonnes_dist()
{
    if ($autoListes = sql_select("lst_id, lst_name, lst_auto_subscribers, lst_auto_subscribers_mode", "spip_cm_lists", "lst_auto_subscribers != '' AND lst_auto_subscribers_updated < " . (time() - 60 * 60 * 24))) {
        include_spip('inc/distant');
        while ($liste = sql_fetch($autoListes)) {
            if ($adresses = recuperer_page($liste['lst_auto_subscribers'])) {
                if (!clevermail_verification_adresses_email($adresses)) {
                    // XXX : log en chaîne de langue
                    spip_log('Le format des adresses e-mail ne semble pas bon dans le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
                } else {
                    $retour = clevermail_abonnes_ajout(array($liste['lst_id']), intval($liste['lst_auto_subscribers_mode']), $adresses);
                    sql_updateq("spip_cm_lists", array('lst_auto_subscribers_updated' => time()), "lst_id=" . $liste['lst_id']);
                    // XXX : log en chaîne de langue
                    $msg = 'Ajout automatique d\'abonnés à la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') à partir du fichier ' . $liste['lst_auto_subscribers'] . ' : ';
                    if ($retour === false) {
                        $msg .= _T('clevermail:aucun_nouvel_abonne');
                    } else {
                        $msg .= $retour['nb_nouv'] > 0 ? $retour['nb_nouv'] . _T('clevermail:n_nouveaux_abonnes') : _T('clevermail:aucun_nouvel_abonne');
                        $msg .= $retour['nb_nouv'] > 0 && $retour['nb_maj'] > 0 ? _T('clevermail:nouveaux_abonnes_et') : '';
                        $msg .= $retour['nb_maj'] > 0 ? $retour['nb_maj'] . _T('clevermail:changements_mode_abonnement') : '';
                        spip_log($msg, 'clevermail');
                    }
                }
            } else {
                // XXX : log en chaîne de langue
                spip_log('Impossible de télécharger le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
            }
        }
    }
    return 1;
}
Beispiel #24
0
function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create = false, $is_crop = true, $crop_mode = 'center', $is_sharpen = false, $um_value = '80/0.5/3')
{
    global $g5, $config;
    $filename = $alt = "";
    $edt = false;
    $sql = " select bf_file, bf_content from {$g5['board_file_table']}\r\n                where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_type between '1' and '3' order by bf_no limit 0, 1 ";
    $row = sql_fetch($sql);
    if ($row['bf_file']) {
        $filename = $row['bf_file'];
        $filepath = G5_DATA_PATH . '/file/' . $bo_table;
        $alt = get_text($row['bf_content']);
    } else {
        $write_table = $g5['write_prefix'] . $bo_table;
        $sql = " select wr_content from {$write_table} where wr_id = '{$wr_id}' ";
        $write = sql_fetch($sql);
        $matches = get_editor_image($write['wr_content'], false);
        $edt = true;
        for ($i = 0; $i < count($matches[1]); $i++) {
            // 이미지 path 구함
            $p = parse_url($matches[1][$i]);
            if (strpos($p['path'], '/' . G5_DATA_DIR . '/') != 0) {
                $data_path = preg_replace('/^\\/.*\\/' . G5_DATA_DIR . '/', '/' . G5_DATA_DIR, $p['path']);
            } else {
                $data_path = $p['path'];
            }
            $srcfile = G5_PATH . $data_path;
            if (preg_match("/\\.({$config['cf_image_extension']})\$/i", $srcfile) && is_file($srcfile)) {
                $size = @getimagesize($srcfile);
                if (empty($size)) {
                    continue;
                }
                $filename = basename($srcfile);
                $filepath = dirname($srcfile);
                preg_match("/alt=[\"\\']?([^\"\\']*)[\"\\']?/", $matches[0][$i], $malt);
                $alt = get_text($malt[1]);
                break;
            }
        }
    }
    if (!$filename) {
        return false;
    }
    $tname = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, $is_create, $is_crop, $crop_mode, $is_sharpen, $um_value);
    if ($tname) {
        if ($edt) {
            // 오리지날 이미지
            $ori = G5_URL . $data_path;
            // 썸네일 이미지
            $src = G5_URL . str_replace($filename, $tname, $data_path);
        } else {
            $ori = G5_DATA_URL . '/file/' . $bo_table . '/' . $filename;
            $src = G5_DATA_URL . '/file/' . $bo_table . '/' . $tname;
        }
    } else {
        return false;
    }
    $thumb = array("src" => $src, "ori" => $ori, "alt" => $alt);
    return $thumb;
}
function upgrade_evenements_statut_025()
{
    include_spip('action/editer_evenement');
    $res = sql_select('id_evenement', 'spip_evenements', "statut='0'");
    while ($row = sql_fetch($res)) {
        evenement_modifier($row['id_evenement'], array());
    }
}
Beispiel #26
0
function getBoardTable($bo_table)
{
    global $g5_board;
    $sql = " select * from {$g5_board} where bo_table = '{$bo_table}' ";
    $board = sql_fetch($sql);
    $bo_subject = get_text($board['bo_subject']);
    return [$board, $bo_subject];
}
/**
*
* 연혁 출력
*
* @param string $his_id
* @param string $skin_dir
* @return string $content
*/
function history($his_id, $skin_dir = '', $group = null)
{
    global $g5;
    $sql = "select * from `{$g5['history_master_table']}` where his_id = '{$his_id}'";
    $history = sql_fetch($sql);
    if (!$skin_dir) {
        $skin_dir = $history['his_skin'];
    }
    $history_skin_path = get_skin_path('history', $skin_dir);
    $history_skin_url = get_skin_url('history', $skin_dir);
    $sortable = "order by his_item_year " . $history['his_sort'] . ', his_item_month ' . $history['his_sort'] . ', his_item_day ' . $history['his_sort'];
    $histories = array();
    $group_histories = array();
    for ($i = $history['his_start_year'], $y = $history['his_end_year']; $i <= $history['his_end_year'], $y >= $history['his_start_year']; $i++, $y--) {
        $history_item = array();
        $conditions = array("his_item_disable = ''", "his_id = '{$his_id}'");
        if (!is_null($group)) {
            $conditions['group'] = "his_group_id = '{$group}'";
        }
        if ($history['his_sort'] == 'asc') {
            $item_year = $i;
        } else {
            $item_year = $y;
        }
        $conditions[] = "his_item_year = '{$item_year}'";
        $condition = count($conditions) > 0 ? 'where ' . implode(' and ', $conditions) : '';
        $sql = "select * from `{$g5['history_item_table']}` {$condition} {$sortable}";
        $result = sql_query($sql);
        while ($item = sql_fetch_array($result)) {
            switch ($history['his_output_type']) {
                case 'a':
                    $item['date'] = $item['his_item_year'] . '.' . $item['his_item_month'] . '.' . $item['his_item_day'];
                    break;
                case 'y':
                    $item['date'] = '';
                    break;
                case 'm':
                    $item['date'] = $item['his_item_month'];
                    break;
                case 'd':
                    $item['date'] = $item['his_item_month'] . '.' . $item['his_item_day'];
                    break;
                case 'i':
                    $item['date'] = $item['his_item_date'];
                    break;
            }
            $history_item[] = $item;
            $all_history_item[] = $item;
        }
        $histories[$item_year] = $history_item;
    }
    $histories = array_filter($histories);
    ob_start();
    include $history_skin_path . '/history.skin.php';
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
Beispiel #28
0
function maj_v012_dist($version_installee, $version_cible)
{
    // Correction de l'oubli des modifs creations depuis 1.04
    if (upgrade_vers(1.204, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3) NOT NULL");
        spip_query("ALTER TABLE spip_forum ADD id_message bigint(21) NOT NULL");
        spip_query("ALTER TABLE spip_forum ADD INDEX id_message (id_message)");
        spip_query("ALTER TABLE spip_auteurs ADD en_ligne datetime DEFAULT '0000-00-00 00:00:00' NOT NULL");
        spip_query("ALTER TABLE spip_auteurs ADD imessage VARCHAR(3) not null");
        spip_query("ALTER TABLE spip_auteurs ADD messagerie VARCHAR(3) not null");
        maj_version(1.204);
    }
    if (upgrade_vers(1.207, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_rubriques DROP INDEX id_rubrique");
        spip_query("ALTER TABLE spip_rubriques ADD INDEX id_parent (id_parent)");
        spip_query("ALTER TABLE spip_rubriques ADD statut VARCHAR(10) NOT NULL");
        // Declencher le calcul des rubriques publiques
        include_spip('inc/rubriques');
        calculer_rubriques();
        maj_version(1.207);
    }
    if (upgrade_vers(1.208, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_auteurs_messages CHANGE forum vu CHAR(3) NOT NULL");
        spip_query("UPDATE spip_auteurs_messages SET vu='oui'");
        spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE statut='a'");
        spip_query("ALTER TABLE spip_messages ADD id_auteur bigint(21) NOT NULL");
        spip_query("ALTER TABLE spip_messages ADD INDEX id_auteur (id_auteur)");
        $result = spip_query("SELECT id_auteur, id_message FROM spip_auteurs_messages WHERE statut='de'");
        while ($row = sql_fetch($result)) {
            $id_auteur = $row['id_auteur'];
            $id_message = $row['id_message'];
            spip_query("UPDATE spip_messages SET id_auteur={$id_auteur} WHERE id_message={$id_message}");
        }
        spip_query("ALTER TABLE spip_auteurs_messages DROP statut");
        maj_version(1.208);
    }
    if (upgrade_vers(1.209, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_syndic ADD maj TIMESTAMP");
        spip_query("ALTER TABLE spip_syndic_articles ADD maj TIMESTAMP");
        spip_query("ALTER TABLE spip_messages ADD maj TIMESTAMP");
        maj_version(1.209);
    }
    if (upgrade_vers(1.21, $version_installee, $version_cible)) {
        spip_query("ALTER TABLE spip_messages DROP page");
        stripslashes_base('spip_articles', array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps'));
        stripslashes_base('spip_auteurs', array('nom', 'bio', 'nom_site'));
        stripslashes_base('spip_breves', array('titre', 'texte', 'lien_titre'));
        stripslashes_base('spip_forum', array('titre', 'texte', 'auteur', 'nom_site'));
        stripslashes_base('spip_messages', array('titre', 'texte'));
        stripslashes_base('spip_mots', array('type', 'titre', 'descriptif', 'texte'));
        stripslashes_base('spip_petitions', array('texte'));
        stripslashes_base('spip_rubriques', array('titre', 'descriptif', 'texte'));
        stripslashes_base('spip_signatures', array('nom_email', 'nom_site', 'message'));
        stripslashes_base('spip_syndic', array('nom_site', 'descriptif'));
        stripslashes_base('spip_syndic_articles', array('titre', 'lesauteurs'));
        maj_version(1.21);
    }
}
Beispiel #29
0
function affiche_auteur_diff($auteur)
{
    // Si c'est un nombre, c'est un auteur de la table spip_auteurs
    if ($auteur == intval($auteur) and $s = sql_query("SELECT * FROM spip_auteurs WHERE id_auteur=" . _q($auteur)) and $t = sql_fetch($s)) {
        return typo($t['nom']);
    } else {
        return $auteur;
    }
}
Beispiel #30
0
function exec_documents_liste_dist()
{

//
// Recupere les donnees
//

$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('titre_page_documents_liste'), "naviguer", "documents");
echo debut_gauche('', true);


//////////////////////////////////////////////////////
// Boite "voir en ligne"
//

echo debut_boite_info(true);

echo propre(_T('texte_recapitiule_liste_documents'));

echo fin_boite_info(true);



echo debut_droite('', true);

	// recupere les titres des types
	$res = sql_select('extension, titre', "spip_types_documents");
	while ($row = sql_fetch($res))
		$types[$row['extension']] = $row;

	$result = sql_select("docs.id_document AS id_doc, docs.extension AS extension, docs.fichier AS fichier, docs.date AS date, docs.titre AS titre, docs.descriptif AS descriptif, R.id_rubrique AS id_rub, R.titre AS titre_rub", "spip_documents AS docs, spip_documents_liens AS lien, spip_rubriques AS R", "docs.id_document = lien.id_document AND R.id_rubrique = lien.id_objet AND lien.objet='rubrique' AND docs.mode = 'document'", "", "docs.date DESC");

	while ($row=sql_fetch($result)){
		$titre=$row['titre'];
		$descriptif=$row['descriptif'];
		$date=$row['date'];
		$id_document=$row['id_doc'];
		$id_rubrique=$row['id_rub'];
		$titre_rub = typo($row['titre_rub']);
		$fichier = $row['fichier'];

		if (!$titre) $titre = _T('info_document').' '.$id_document;

		debut_cadre_relief("doc-24.gif");
		echo "<b>$titre</b> (" . $types[$row['extension']]['titre'] . ', ' . affdate($date) . ")";
		if ($descriptif)
			echo propre($descriptif);
		else
			echo "<p><tt>$fichier</tt>" . '</p>';

		echo "<p>"._T('info_dans_rubrique')." <a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>$titre_rub</a></p>";
		echo fin_cadre_relief(true);
	}

	echo fin_gauche(), fin_page();
}