
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (62)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)
Sur d’autres sites (10177)
-
Evolution #3801 (Nouveau) : Filtrage des boucles DATA selon des contenus divers, et extension des ...
2 juillet 2016, par marcimat ☺☮☯♫Je suis tombé sur un cas de boucle DATA qui m’a ennuyé car le filtrage que je souhaitais n’était pas directement possible actuellement avec les critères dont on dispose.
Soit le tableau, disons
#TAB
suivant :$tab = [ [ ’id’ => 1, ’mots’ => [ 11, 120, 53 ]], [ ’id’ => 2, ’mots’ => [ 32, 11, 20 ]], [ ’id’ => 3, ’mots’ => [ 11, 78, 34 ]], [ ’id’ => 4, ’mots’ => [ 120, 26, 91 ]], ] ;
Je souhaitais boucler sur les éléments ayant le mot 11 par exemple, dans la clé ’mots’.
De base la boucle serait :#ID
Il faudrait ajouter un critère pour restreindre aux seuls éléments contenant le mot 11, mais
{mots = 11}
ne va pas, ni{mots IN 11}
vu que c’est le champ "mots" qui est un tableau.
On pourrait imaginer pouvoir écrire{11 IN mots}
qui serait probablement plus clair, mais ce n’est pas permis.Il n’y a actuellement pas moyen de réaliser ce filtre, ni d’étendre simplement les filtres à appliquer.
On propose ici de réfléchir à éventuellement permettre l’extension de ces tests de validation en fonction des contenus, ce qui s’apparente à ajouter quelque chose dans le WHERE en SQL, mais pour les itérateurs, c’est plutôt ajouter une contrainte sur la méthode
valid()
. Les critères tel que{id=3}
ajoutent déjà des contraintes, même{chemin/du/tableau > 5}
fonctionne.Une idée serait d’ajouter un critère
{filtre NN}
ou{valider NN}
et de définir une fonctionNN()
dans son code (mes_fonctions.php par exemple) qui recevrait la clé et la valeur en cours de validation et retournerait true ou false pour indiquer si cette entrée est acceptée ou pas. La fonction à créer serait au minimum doncNN($cle, $valeur) { return true; }
On pourrait transmettre des paramètres supplémentaires, tel que
{filtre nom, p1, p2}
qui arriveraient dans un tableau d’arguments en 3è paramètre :NN($cle, $valeur, $args)
.Voici un diff qui permet :
1) de prendre en compte `$command[’filtres’]` dans les itérateurs. Chaque entrée de ce tableau est un tableau décrivant 1 filtre, avec comme premier élément le nom de la fonction à appeler, et les suivants les éventuels arguments.
2) de déclarer un critère `filtre` sur les boucles DATA qui remplissent ce tableau de filtres
3) de montrer un exemple d’un filtre (mal nommé) ’contient’ avec 2 argumentsIndex : public/iterateur.php ===================================================================
— - public/iterateur.php (revision 23091) +++ public/iterateur.php (working copy) @@ -300,6 +300,18 @@ $this->limit = $limit[1] ;+ // filtres explicites filtre nom_fonction, param, param
+ if (!empty($this->command[’filtres’]))
+ foreach ($this->command[’filtres’] as $args)
+ $nom = array_shift($args) ;
+ if (function_exists($nom))
+ $this->filtre[] = $nom . ’( $me->key(), $me->current(), ’ . var_export($args, true) . ’)’ ;
+ else
+ spip_log("Filtre d’itérateur non connu : " . (string)$filtre) ; // [todo] mettre une erreur de squelette
+
+
+
+/**
* Compile le critère `filtre` d’une boucle DATA
*
* @syntaxe `filtre nom, [arg1, [arg2, [...]]]`
* @example `filtre contient, mots, 3`
*
* @param string $idb Identifiant de la boucle
* @param array $boucles AST du squelette
* @param Critere $crit Paramètres du critère dans cette boucle
*/
function critere_DATA_filtre_dist($idb, &$boucles, $crit)
$boucle = &$boucles[$idb] ;
// créer le tableau de tous filtres de la boucle
$boucle->hash .= "\n\tif (!isset(\$filtres_init)) \$command[’filtres’] = array() ; \$filtres_init = true ; \n" ;
// créer le tableau de ce filtre
$boucle->hash .= "\t\$i = count(\$command[’filtres’]) ; \$command[’filtres’][\$i] = array() ;\n" ;
// ajouter les arguments du filtre
foreach ($crit->param as $param)
$boucle->hash .= "\t" . ’$command[\’filtres\’][$i][] = ’ . calculer_liste($param, array(), $boucles, $boucles[$idb]->id_parent) . " ;\n" ;
/**
* Conserve les éléments de la boucle dont le chemin indiqué contient une certaine valeur
* sous entendu que ce chemin pointe sur une liste de valeurs possibles
*
* @syntaxe `filtre contient, chemin, val`
* @example `filtre contient, mots, 3`
*
* - chemin : est un parcours qui sera fait dans le tableau $valeurs,
* chaque / entrant dans un sous élément @see table_valeur()
* - val : est une valeur à trouver dans le tableau retrouvé du chemin indiqué
* dans l’exemple le chemin ’mots’ retourne pour une entrée une liste tel que `array(12, 31, 21)`
*
* @param int|string $cle Clé analysée
* @param mixed $valeur Valeur analysée
* @param array $args Arguments passés au filtre
* @return bool True pour accepter cette entrée, false sinon.
**/
function contient($cle, $valeur, $args)
if (count($args) != 2)
return false ;
list($chemin, $val) = $args ;
if ($valeurs = table_valeur($valeur, $chemin))
return in_array($val, $valeurs) ;
return false ;
Et un exemple d’utilisation en squelettes
Test
#SETobjets,#LISTE
#SETobjets,#GETobjets|push#ARRAYid,1,mots,#LISTE10,11,12#SETobjets,#GETobjets|push#ARRAYid,2,mots,#LISTE30,31,32
#SETobjets,#GETobjets|push#ARRAYid,3,mots,#LISTE50,51,52
#SETobjets,#GETobjets|push#ARRAYid,4,mots,#LISTE32,11
#SETobjets,#GETobjets|push#ARRAYid,5,mots,#LISTE52,10
#SETid,32
#ID
À réfléchir…
-
Anomalie #2697 (Nouveau) : critère fusion ne fonctionne plus dans les boucles DATA
9 mai 2012, par cy_altern -Contrairement à ce qu’indique la doc sur les boucles DATA (dernier paragraphe de http://www.spip.net/ecrire/?exec=article&id_article=5444), le critère fusion /xx ne fonctionne pas comme attendu dans les boucles DATA avec source = csv Exemple en utilisant le fichier (...)
-
It’s January 28th : Let’s celebrate Data Privacy !
29 janvier 2018, par Matomo Core TeamIt is a special Sunday here for us at Matomo, as today is international Data Privacy Day. The day was created in 2007 to raise awareness of the importance of data privacy for people and businesses worldwide.
What is data privacy about ?
Personal data refers to any data which is collected and can be linked to an individual human being such as phone records, credit card transactions, GPS position, IP addresses, browsing history… So basically, personal data refers to your identity online. That is why you should be highly concerned about sending your personal data (or your customers’ personal data) away. It is important to be aware of who is collecting the information and how it is being used.
What big changes are happening in 2018 ?
New privacy regulations GDPR comes into play next May 2018 : GDPR will bring about some changes (in the right direction) by making people and businesses aware of what data privacy means, and what they should be doing to protect their customers’ privacy. With these new regulations, data privacy awareness is reaching a critical milestone this year.
How can I protect my privacy ?
Here are a few tips to protect your privacy :
- Educate yourself on the importance of privacy : the more informed you are the better.
- Use open source solutions where you can keep full control of your own data (such as NextCloud instead of Dropbox and of course Matomo instead of Google Analytics),
- Experiment with different online services to protect your data privacy, for example using an alternative search engine (such as DuckDuckGo instead of Google) or an alternative email provider (such as ProtonMail).
What’s coming next for Matomo and Privacy ?
Here at Matomo, we are building the leading decentralised open web analytics platform. We’re currently working on new sets of privacy features to make compliance with GDPR a breeze. Stay tuned here to be notified when we launch the new privacy compliance tools !
And in case you’ve missed this important info, you may be interested in :
- Configure Privacy Settings in Matomo
- 11 ways Matomo Analytics helps you to protect your visitors privacy
The post It’s January 28th : Let’s celebrate Data Privacy ! appeared first on Analytics Platform - Matomo.