function action_dereferencer_traduction_rubrique_dist() {
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	list($type, $id_objet) = explode('/', $arg);
	if (!$type = objet_type($type) or !$id_objet = intval($id_objet)) {
		if (!_AJAX) {
			include_spip('inc/minipres');
			minipres('Arguments incompris');
		}
		else {
			spip_log('Arguments incompris dans action dereferencer_traduction_rubrique');
			return false;
		}
	}

	$objet = table_objet($type);
	$_id_objet = id_table_objet($objet);
	$table = table_objet_sql($objet);

	$id_trad_old = sql_getfetsel('id_trad', $table, "$_id_objet = " . sql_quote($id_objet));

	if ($id_trad_old) {
		include_spip('inc/modifier');
		modifier_contenu($objet, $id_objet, array('invalideur' => "id='$objet/$id_objet'"), array('id_trad' => 0));

		// si la deliaison fait qu'il ne reste plus que la source
		// dans le groupe de traduction on lui remet l'id_trad a 0
		if (1 == $nb_dans_groupe = sql_countsel($table, array('id_trad = ' . sql_quote($id_trad_old)))) {
			modifier_contenu($objet, $id_trad_old, array('invalideur' => "id='$objet/$id_trad_old'"), array('id_trad' => 0));
		}
	}
}
Ejemplo n.º 2
0
/**
 * Enregistre une révision de contact
 *
 * @param int $id_produit
 * @param array $c
 * @return
 */
function revision_contact($id_contact, $c = false)
{
    $invalideur = "id='id_contact/{$id_contact}'";
    modifier_contenu('contact', $id_contact, array('nonvide' => array('titre' => _T('info_sans_titre')), 'invalideur' => $invalideur), $c);
    return '';
    // pas d'erreur
}
Ejemplo n.º 3
0
function revisions_breves ($id_breve, $c=false) {

	// champs normaux
	if ($c === false) {
		$c = array();
		foreach (array(
			'titre', 'texte', 'lien_titre', 'lien_url',
			'id_parent', 'statut'
		) as $champ)
			if (($a = _request($champ)) !== null)
				$c[$champ] = $a;
	}

	// Si la breve est publiee, invalider les caches et demander sa reindexation
	$t = sql_getfetsel("statut", "spip_breves", "id_breve=$id_breve");
	if ($t == 'publie') {
		$invalideur = "id='id_breve/$id_breve'";
		$indexation = true;
	}

	include_spip('inc/modifier');
	modifier_contenu('breve', $id_breve,
		array(
			'nonvide' => array('titre' => _T('info_sans_titre')),
			'invalideur' => $invalideur,
			'indexation' => $indexation
		),
		$c);


	// Changer le statut de la breve ?
	$row = sql_fetsel("statut, id_rubrique,lang, langue_choisie", "spip_breves", "id_breve=$id_breve");

	$id_rubrique = $row['id_rubrique'];
	$statut_ancien = $statut = $row['statut'];
	$langue_old = $row['lang'];
	$langue_choisie_old = $row['langue_choisie'];

	if (_request('statut', $c)
	AND _request('statut', $c) != $statut
	AND autoriser('publierdans', 'rubrique', $id_rubrique)) {
		$statut = $champs['statut'] = _request('statut', $c);
	}

	// Changer de rubrique ?
	// Verifier que la rubrique demandee est a la racine et differente
	// de la rubrique actuelle
	if ($id_parent = intval(_request('id_parent', $c))
	AND $id_parent != $id_rubrique
	AND (NULL !== ($lang=sql_getfetsel('lang', 'spip_rubriques', "id_parent=0 AND id_rubrique=$id_parent")))) {
		$champs['id_rubrique'] = $id_parent;
		// - changer sa langue (si heritee)
		if ($langue_choisie_old != "oui") {
			if ($lang != $langue_old)
				$champs['lang'] = $lang;
		}
		// si la breve est publiee
		// et que le demandeur n'est pas admin de la rubrique
		// repasser la breve en statut 'prop'.
		if ($statut == 'publie') {
			if (!autoriser('publierdans','rubrique',$id_parent))
				$champs['statut'] = $statut = 'prop';
		}
	}

	if (!$champs) return;

	sql_updateq('spip_breves', $champs, "id_breve=$id_breve");

	//
	// Post-modifications
	//

	// Invalider les caches
	include_spip('inc/invalideur');
	suivre_invalideur("id='id_breve/$id_breve'");

	// Au besoin, changer le statut des rubriques concernees 
	include_spip('inc/rubriques');
	calculer_rubriques_if($id_rubrique, $champs, $statut_ancien);

	// Notifications
	if ($notifications = charger_fonction('notifications', 'inc')) {
		$notifications('instituerbreve', $id_breve,
			array('statut' => $statut, 'statut_ancien' => $statut_ancien)
		);
	}

}
Ejemplo n.º 4
0
function crayons_update($id, $colval = array(), $type = '')
{
    if (!$colval or !count($colval)) {
        return false;
    }
    list($distant, $table) = distant_table($type);
    if ($distant) {
        list($nom_table, $where) = table_where($type, $id);
        if (!$nom_table) {
            return false;
        }
        $update = $sep = '';
        foreach ($colval as $col => $val) {
            $update .= $sep . '`' . $col . '`=' . _q($val);
            $sep = ', ';
        }
        $a = spip_query($q = 'UPDATE `' . $nom_table . '` SET ' . $update . ' WHERE ' . $where, $distant);
        #spip_log($q);
        include_spip('inc/invalideur');
        suivre_invalideur($cond, $modif = true);
    } else {
        // cle primaire composee : 3-4-rubrique
        // calculer un where approprie
        // et modifier sans passer par la fonction destinee aux tables principales
        // on limite a SPIP 2 mini car sql_updateq n'est pas mappe dans les crayons_compat
        if (is_scalar($id) and $GLOBALS['spip_version_code'] >= '1.93') {
            list($nom_table, $where) = table_where($type, $id, true);
            // where sous forme de tableau
            $a = sql_updateq($nom_table, $colval, $where);
        } else {
            // modification d'une table principale
            include_spip('inc/modifier');
            $a = modifier_contenu($type, $id, array(), $colval);
        }
    }
    return $a;
}
Ejemplo n.º 5
0
    }
}
// Creation d'un nouvel article du WIKI -- cf. inc-entete
if (_request('ajouter_page_wiki') !== NULL and !preg_match(",http://,", _request('ajouter_page_wiki')) and _request('id_rubrique') !== NULL and !_request('pas_de_robot_merci') and _request('id_rubrique') == $GLOBALS['contexte']['id_rubrique']) {
    $id_rubrique = intval($_POST['id_rubrique']);
    $id_article = null;
    // on verifie d'abord qu'un article de ce titre n'existe pas deja
    $s = sql_query("SELECT id_article FROM spip_articles WHERE titre=" . _q(_request('ajouter_page_wiki')) . " OR url_propre=" . _q(_request('ajouter_page_wiki')));
    if ($t = sql_fetch($s)) {
        $id_article = $t['id_article'];
    } else {
        include_spip('inc/autoriser');
        if (autoriser('publierdans', 'rubrique', $id_rubrique)) {
            include_spip('action/editer_article');
            $id_article = insert_article($id_rubrique);
            include_spip('inc/modifier');
            $r = modifier_contenu('article', $id_article, array('champs' => array('titre', 'statut')), array('titre' => _request('ajouter_page_wiki'), 'statut' => 'publie'));
            # pour SPIP 1.9.3
            if (function_exists('instituer_article')) {
                instituer_article($id_article, array('statut' => 'publie'));
            }
        }
    }
    if (!$id_article) {
        die("Erreur : creation d'article interdite");
    }
    charger_generer_url();
    include_spip('inc/headers');
    redirige_par_entete(generer_url_article($id_article, '&'));
}
define('RUBRIQUE_WIKI_OK', true);
Ejemplo n.º 6
0
/**
 * Enregistre la revision d'un niveau
 *
 * @param int $id_niveau
 * @param array $c
 * @return string
 */
function adhclub_revision_adhniv($id_niveau, $c = false)
{
    modifier_contenu('adhniv', $id_niveau, array('nonvide' => array('titre' => _T('info_sans_titre'))), $c);
    return '';
    // pas d'erreur
}
Ejemplo n.º 7
0
function revisions_rubriques($id_rubrique, $c=false) {
	include_spip('inc/autoriser');
	include_spip('inc/filtres');

	// champs normaux
	if ($c === false) {
		$c = array();
		foreach (array(
			'titre', 'texte', 'descriptif', 'extra',
			'id_parent', 'confirme_deplace'
		) as $champ)
			if (($a = _request($champ)) !== null)
				$c[$champ] = $a;
	}

	include_spip('inc/modifier');
	modifier_contenu('rubrique', $id_rubrique,
		array(
			'nonvide' => array('titre' => _T('info_sans_titre'))
		),
		$c);

	// Deplacer la rubrique
	if (isset($c['id_parent'])) {
		$c['confirme_deplace'] = _request('confirme_deplace', $c);
		instituer_rubrique($id_rubrique, $c);
	}

	// invalider les caches marques de cette rubrique
	include_spip('inc/invalideur');
	suivre_invalideur("id='id_rubrique/$id_rubrique'");
	// et celui de menu_rubriques 
	effacer_meta("date_calcul_rubriques");
}
Ejemplo n.º 8
0
function revision_forum($id_forum, $c=false) {

	$t = sql_fetsel("*", "spip_forum", "id_forum=".sql_quote($id_forum));
	if (!$t) {
		spip_log("erreur forum $id_forum inexistant");
		return;
	}

	// Calculer l'invalideur des caches lies a ce forum
	if ($t['statut'] == 'publie') {
		include_spip('inc/invalideur');
		$invalideur = "id='id_forum/"
			. calcul_index_forum(
				$t['id_article'],
				$t['id_breve'],
				$t['id_rubrique'],
				$t['id_syndic']
			)
			. "'";
	} else
		$invalideur = '';

	// Supprimer 'http://' tout seul
	if (isset($c['url_site'])) {
		include_spip('inc/filtres');
		$c['url_site'] = vider_url($c['url_site'], false);
	}

	$r = modifier_contenu('forum', $id_forum,
		array(
			'nonvide' => array('titre' => _T('info_sans_titre')),
			'invalideur' => $invalideur
		),
		$c);

	$id_thread = $t["id_thread"];
	$cles = array();
	foreach (array('id_article', 'id_rubrique', 'id_syndic', 'id_breve')
		 as $k) {
		if (isset($c[$k])) $cles[$k] = $c[$k];
	}

	// Modification des id_article etc
	// (non autorise en standard mais utile pour des crayons)
	// on deplace tout le thread {sauf les originaux}.
	if ($cles) {
		sql_updateq("spip_forum", $cles, "id_thread=$id_thread AND statut!='original'");
		// on n'affecte pas $r, car un deplacement ne change pas l'auteur
	}

	// s'il y a vraiment eu une modif, on
	// enregistre le nouveau date_thread,
	// si le message est bien publie ou si c'est un thread non public
	if ($r AND
		($t['statut'] == 'publie' OR !sql_countsel("spip_forum", "statut='publie' AND id_thread=".intval($id_thread)))) {
		// on ne stocke ni le numero IP courant ni le nouvel id_auteur
		// dans le message modifie (trop penible a l'usage) ; mais du
		// coup attention a la responsabilite editoriale
		/*
		sql_updateq('spip_forum', array('ip'=>($GLOBALS['ip']), 'id_auteur'=>($GLOBALS['visiteur_session']['id_auteur'])),"id_forum=".sql_quote($id_forum));
		*/

		// & meme ca ca pourrait etre optionnel
		sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=".intval($id_thread));
	}
}
Ejemplo n.º 9
0
function remplace_en_base($recherche='', $remplace=NULL, $tables=NULL, $options=array()) {
	include_spip('inc/modifier');

	// options par defaut
	$options = array_merge(array(
		'preg_flags' => 'UimsS',
		'toutmodifier' => false
		),
		$options
	);
	$options['champs'] = true;


	if (!is_array($tables))
		$tables = liste_des_champs();

	$results = recherche_en_base($recherche, $tables, $options);

	$preg = '/'.str_replace('/', '\\/', $recherche).'/' . $options['preg_flags'];

	foreach ($results as $table => $r) {
		$_id_table = id_table_objet($table);
		foreach ($r as $id => $x) {
			if ($options['toutmodifier']
			OR autoriser('modifier', $table, $id)) {
				$modifs = array();
				foreach ($x['champs'] as $key => $val) {
					if ($key == $_id_table) next;
					$repl = preg_replace($preg, $remplace, $val);
					if ($repl <> $val)
						$modifs[$key] = $repl;
				}
				if ($modifs)
					modifier_contenu($table, $id,
						array(
							'champs' => array_keys($modifs),
						),
						$modifs);
			}
		}
	}
}
Ejemplo n.º 10
0
/**
 * Enregistre la revision d'une zone
 *
 * @param int $id_zone
 * @param array $c
 * @return string
 */
function accesrestreint_revision_zone($id_zone, $c=false) {

	modifier_contenu('zone', $id_zone,
		array(
			'nonvide' => array('titre' => _T('info_sans_titre')),
		),
		$c);

	return ''; // pas d'erreur
}
Ejemplo n.º 11
0
function document_fichier_revision($id, $data, $type, $ref)
{
    $s = spip_query("SELECT * FROM spip_documents WHERE id_document=" . intval($id));
    if (!($t = sql_fetch($s))) {
        return false;
    }
    /*
    // Envoi d'une URL de document distant ?
    // TODO: verifier l'extension distante, sinon tout explose
    if ($data['fichier']
    AND preg_match(',^(https?|ftp)://.+,', $data['fichier'])) {
    	include_spip('inc/modifier');
    	modifier_contenu('document', $id,
    		array('champs' => array('fichier', 'distant')),
    		array('fichier' => $data['fichier'], 'distant' => 'oui')
    	);
    	return true;
    }
    else
    */
    // Chargement d'un nouveau doc ?
    if ($data['document']) {
        $arg = $data['document'];
        /** 
         * Méthode >= SPIP 3.0 
         * ou SPIP 2.x + Mediathèque
         */
        if ($ajouter_documents = charger_fonction('ajouter_documents', 'action', true)) {
            $actifs = $ajouter_documents($id, array($arg), '', 0, $t['mode']);
            $x = reset($actifs);
            if (is_numeric($x)) {
                return true;
            } else {
                return false;
            }
        } else {
            if ($ajouter_documents = charger_fonction('ajouter_documents', 'inc', true)) {
                check_upload_error($arg['error']);
                $x = $ajouter_documents($arg['tmp_name'], $arg['name'], 'article', 0, 'document', null, $actifs);
                // $actifs contient l'id_document nouvellement cree
                // on recopie les donnees interessantes dans l'ancien
                $extension = ", extension ";
                //compat 192
                if ($GLOBALS['spip_version_code'] < '1.93') {
                    $extension = "";
                }
                if ($id_new = array_pop($actifs) and $s = spip_query("SELECT fichier, taille, largeur, hauteur {$extension}, distant FROM spip_documents\r\n\t\t\t\tWHERE id_document=" . _q($id_new)) and $new = sql_fetch($s)) {
                    define('FILE_UPLOAD', true);
                    // message pour crayons_json_export :(
                    // Une vignette doit rester une image
                    if ($t['mode'] == 'vignette' and !in_array($new['extension'], array('jpg', 'gif', 'png'))) {
                        return false;
                    }
                    // Maintenant on est bon, on recopie les nouvelles donnees
                    // dans l'ancienne ligne spip_documents
                    include_spip('inc/modifier');
                    modifier_contenu('document', $id, array('champs' => array_keys($new)), $new);
                    // supprimer l'ancien document (sauf s'il etait distant)
                    if ($t['distant'] != 'oui' and file_exists(get_spip_doc($t['fichier']))) {
                        supprimer_fichier(get_spip_doc($t['fichier']));
                    }
                    // Effacer la ligne temporaire de spip_document
                    spip_query("DELETE FROM spip_documents WHERE id_document=" . _q($id_new));
                    // oublier id_document temporaire (ca marche chez moi, sinon bof)
                    spip_query("ALTER TABLE spip_documents AUTO_INCREMENT=" . _q($id_new));
                    return true;
                }
            }
        }
    }
}
Ejemplo n.º 12
0
function revisions_sites ($id_syndic, $c=false) {

	include_spip('inc/rubriques');
	include_spip('inc/autoriser');

	// champs normaux
	if ($c === false) {
		$c = array();
		foreach (array(
			'nom_site', 'url_site', 'descriptif', 'url_syndic', 'syndication', 'statut', 'id_parent'
		) as $champ)
			if (($a = _request($champ)) !== null)
				$c[$champ] = $a;
	}

	// Si le site est publie, invalider les caches et demander sa reindexation
	$t = sql_getfetsel("statut", "spip_syndic", "id_syndic=$id_syndic");
	if ($t == 'publie') {
		$invalideur = "id='id_syndic/$id_syndic'";
		$indexation = true;
	}
	include_spip('inc/modifier');

	modifier_contenu('syndic', $id_syndic,
		array(
			'nonvide' => array('nom_site' => _T('info_sans_titre')),
			'invalideur' => $invalideur,
			'indexation' => $indexation
		),
		$c);


	$row = sql_fetsel("statut, id_rubrique, id_secteur", "spip_syndic", "id_syndic=$id_syndic");
	$id_rubrique = $row['id_rubrique'];
	$statut_ancien = $row['statut'];
	$id_secteur_old = $row['id_secteur'];

	$statut = $c['statut'];

	if ($statut
	AND $statut != $statut_ancien
	AND autoriser('publierdans','rubrique',$id_rubrique)) {
		$champs['statut'] = $statut;
		if ($statut == 'publie') {
			if ($d = _request('date', $c)) {
				$champs['date'] = $d;
			} else {
				$champs['date'] = date('Y-m-d H:i:s');
			}
		}
	} else
		$statut = $statut_ancien;

	// Changer de rubrique ?
	// Verifier que la rubrique demandee est differente de l'actuelle,
	// et qu'elle existe. Recuperer son secteur

	if ($id_parent = intval(_request('id_parent', $c))
	AND $id_parent != $id_rubrique
	AND ($id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', "id_rubrique=$id_parent"))) {
		$champs['id_rubrique'] = $id_parent;
		if ($id_secteur_old != $id_secteur)
			$champs['id_secteur'] = $id_secteur;
		// si le site est publie
		// et que le demandeur n'est pas admin de la rubrique
		// repasser le site en statut 'prop'.
		if ($statut == 'publie') {
			if (!autoriser('publierdans','rubrique',$id_parent))
				$champs['statut'] = $statut = 'prop';
		}
	}

	if (!$champs) return;

	// Enregistrer les modifications
	sql_updateq('spip_syndic', $champs, "id_syndic=$id_syndic");

	// Invalider les caches
	if ($statut == 'publie') {
		include_spip('inc/invalideur');
		suivre_invalideur("id='id_syndic/$id_syndic'");
	}

	// Notifications
	if ($notifications = charger_fonction('notifications', 'inc')) {
		$notifications('instituersite', $id_syndic,
			array('statut' => $statut, 'statut_ancien' => $statut_ancien, 'date'=>($champs['date']?$champs['date']:$row['date']))
		);
	}

	include_spip('inc/rubriques');
	calculer_rubriques_if($id_rubrique, $champs, $statut_ancien);
}
Ejemplo n.º 13
0
function agenda_action_revision_evenement ($id_evenement, $c=false) {

	if ($c['id_parent']) {
		// Si l'article est publie, invalider les caches et demander sa reindexation
		$t = sql_getfetsel("statut", "spip_articles", "id_article=".intval($c['id_parent']));
		if ($t == 'publie') {
			$invalideur = "id='id_article/$id_article'";
			$indexation = true;
		}
	}

	modifier_contenu('evenement', $id_evenement,
		array(
			'nonvide' => array('titre' => _T('info_sans_titre')),
			'invalideur' => $invalideur,
			'indexation' => $indexation
		),
		$c);

	return ''; // pas d'erreur
}
Ejemplo n.º 14
0
/**
 * Enregistre la revision d'une cotisation
 *
 * @param int $id_coti
 * @param array $c
 * @return string
 */
function adhclub_revision_adhcoti($id_coti, $c = false)
{
    /*$debug1= "DEBUG plugin JR : action/editer_adhcoti.php - adhclub_revision_adhcoti - Pt02 - <br />";
    	echo "<br />", $debug1;
    	echo "id_coti= $id_coti.<br />";
    		// un tableau (array)
    	echo "c= <br />"; var_dump($c); echo ".<br />";
    	echo "FIN ", $debug1;
    	*/
    modifier_contenu('adhcoti', $id_coti, array('nonvide' => array('titre' => _T('info_sans_titre'))), $c);
    return '';
    // pas d'erreur
}
function stage_action_revision_candidature($id_candidature, $c = false)
{
    modifier_contenu('candidature', $id_candidature, '', $c);
    return '';
    // pas d'erreur
}
Ejemplo n.º 16
0
function revision_abonnement($id_abonnement, $c = false)
{
    modifier_contenu('abonnement', $id_abonnement, array('nonvide' => array('titre' => _T('info_sans_titre'))), $c);
}