Skip to content
Extraits de code Groupes Projets
agenda_autoriser.php 6,07 ko
Newer Older
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
<?php
/**
cedric@yterium.com's avatar
cedric@yterium.com a validé
 * Plugin Agenda 4 pour Spip 3.0
 * Licence GPL 3
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
 *
cedric@yterium.com's avatar
cedric@yterium.com a validé
 * 2006-2011
 * Auteurs : cf paquet.xml
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
 */

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
/* pour que le pipeline ne rale pas ! */
function agenda_autoriser() {
}
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé

function autoriser_evenementcreer_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
	return autoriser('creer', 'evenement', $id, $qui, $opt);
function autoriser_evenements_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
	return true;
}

/**
 * Autorisation d'ajout d'un evenement a un article
 *
 * @param string $faire
 * @param string $quoi
 * @param int $id
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
 * @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 !
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
	// 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)) {
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
		$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')))) {
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
			// si au moins une rubrique a le flag agenda
			if (sql_countsel('spip_rubriques', 'agenda=1')) {
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
				// alors il faut le flag agenda dans cette branche !
				$afficher = false;
cedric@yterium.com's avatar
cedric@yterium.com a validé
				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;
				}
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
			}
		}
	}
	return $afficher;
}

// Autorisation pour créer un événement n'importe où (article ou autre ou rien)
// Par défaut : comme pour créer dans un article si on l'a dans les options, sinon être admin complet
function autoriser_evenement_creer_dist($faire, $quoi, $id, $qui, $options) {
	if (!empty($options['id_article'])) {
		return autoriser('creerevenementdans', 'article', $options['id_article'], $qui, $options);
	} elseif (!empty($options['id_parent'])) {
		return autoriser('creerevenementdans', 'article', $options['id_parent'], $qui, $options);
		return ($qui['statut'] == '0minirezo' and !$qui['restreint']);
	}
}

guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
/**
 * Autorisation de modifier un evenement : autorisations de l'article parent
 *
 * @param string $faire
 * @param string $quoi
 * @param int $id
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
 * @param array $options
 * @return bool
 */
function autoriser_evenement_modifier_dist($faire, $quoi, $id, $qui, $options) {
	$id_article = 0;
	if (!empty($options['id_article'])) {
		$id_article = $options['id_article'];
	}
	elseif (!empty($options['id_parent'])) {
		$id_article = $options['id_parent'];
	}
	if (empty($id_article)) {
		$id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement='.intval($id));
	}
	if (!$id_article) {
	return autoriser('modifier', 'article', $id_article, $qui, $options);
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
}

/**
 * Autorisation d'instituer un evenement : voir si l'article est publie ou non
 * @param string $faire
 * @param string $quoi
 * @param int $id
function autoriser_evenement_instituer_dist($faire, $quoi, $id, $qui, $options) {
	$evenement = sql_fetsel('*', 'spip_evenements', 'id_evenement='.intval($id));
	if (!$evenement) {
		return false;
	}
	// on ne modifie pas independamment le statut d'un evenement repetition qui reste synchro sur l'evenement source
	if ($evenement['id_evenement_source']!=0
		and $evenement['modif_synchro_source']) {
		return false;
	}
	if (!empty($options['id_article'])) {
		$id_article = $options['id_article'];
	}
	elseif (!empty($options['id_parent'])) {
		$id_article = $options['id_parent'];
	}
	else {
		$id_article = $evenement['id_article'];
	if (isset($options['statut'])) {
		$statut = sql_getfetsel('statut', 'spip_articles', 'id_article='.intval($id_article));
		// interdit de publier un evenement sur un article non publie
		if ($statut!=='publie'
			and $options['statut']=='publie') {
			return false;
		}
	}
	$options['id_article'] = $id_article;
	// pour instituer un evenement il faut avoir le droit de modifier
	// l'evenement et d'instituer l'article associe avec le meme statut
	return autoriser('modifier', 'evenement', $id, $qui, $options)
		and autoriser('instituer', 'article', $id_article, $qui, $options_article);
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
/**
 * Autorisation de voir un evenement : autorisations de l'article parent
 *
 * @param string $faire
 * @param string $quoi
 * @param int $id
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
 * @param array $options
 * @return bool
 */
function autoriser_evenement_voir_dist($faire, $quoi, $id, $qui, $options) {
	if (!empty($options['id_article'])) {
		$id_article = $options['id_article'];
	}
	elseif (!empty($options['id_parent'])) {
		$id_article = $options['id_parent'];
	}
	else {
		$id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement='.intval($id));
	}
	if (!$id_article) {
	}
	return autoriser('voir', 'article', $id_article, $qui);
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
}


/**
 * Autorisation de supprimer un evenement : autorisations de l'article parent
 *
 * @param string $faire
 * @param string $quoi
 * @param int $id
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
 * @param array $options
 * @return bool
 */
function autoriser_evenement_supprimer_dist($faire, $quoi, $id, $qui, $options) {
	if (!empty($options['id_article'])) {
		$id_article = $options['id_article'];
	}
	elseif (!empty($options['id_parent'])) {
		$id_article = $options['id_parent'];
	}
	else {
		$id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement='.intval($id));
	}
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
	if (!$id_article) {
		if ($qui['statut']=='0minirezo') {
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
			return true;
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
			return false;
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
	}
	return autoriser('modifier', 'article', $id_article, $qui);
guy.cesaro@gmail.com's avatar
guy.cesaro@gmail.com a validé
}