Partager sur le web

Tous les articles du site

Présentation Elgg lors de fOSSa 2011

October 26, 2011 par Facyla   Commentaires (0)

, , , , , ,

La version francisée de la présentation d'Elgg :

lien présentation elgg

 

 

La présentation originale en anglais, conçue à l'occasion de la rencontre fOSSa organisée par Inria du 26 au 28 octobre 2011 à Lyon.

lien présentation elgg

Modifier   Supprimer

Enquête : Elgg et vous, pour quel meilleur ?

September 23, 2011 par sophiemaheo   Commentaires (0)

, , , ,

Dans la communauté Elgg francophone, regroupement informel, nous échangeons sur nos usages, nos développements. Nous partageons idées et savoir-faire.
Elgg, un drôle de nom… C'est celui d'un moteur de plateformes sociales. Encore un réseau, un réseau pour quoi faire ?

Une rencontre Elgg à la Cantine

Nos sites construits avec Elgg, une solution open source, dessinent des intranets2.0, des réseaux sociaux d'entreprise, des plateformes collaboratives ou de social learning.

A partir d'un framework de développement solide, d'une banque de fonctionnalités riches, nous mettons en scène des dispositifs variés au service d'une stratégie de communication.

La communauté Elgg francophone se re dynamise et souhaite mieux connaître ses membres, mieux identifier ses attentes, valoriser leurs réalisations (sites, plugins, traductions, thèmes, formations…).

Et vous, pourquoi et à quel titre utilisez-vous Elgg ? Pourquoi développez-vous avec elgg ? Sur quelle documentation vous appuyez-vous (#oupas) ?

Avez-vous pensez à inscrire votre site dans la vitrine (une fois connecté, rejoignez le groupe ad hoc pour cela) ?

Modifier   Supprimer

bug get_entities sur les versions antérieures à la 1.7

December 17, 2010 par Facyla   Commentaires (0)

Ce bug ne devrait pas être gênant dans la grande majorité des cas : il n'apparaît que si vous avez besoin de lister les objets d'un owner particulier, mais dont le container est différent (en général on fait le listing de tous les objets et la question ne se pose pas)

Bref, la fonction get_entities ne filtre pas sur l'owner_guid ( (jamais: ce n'est pas dans la clause SQL), mais, lorsqu'il n'y a pas de container précisé, prend la valeur de l'owner_guid spécifiée à la place. Résultat, une liste vide lorsque tous les objets d'un owner sont dans un container dont il n'est pas lui-même owner (sinon on les a quand même, par héritage des droits d'accès).

 

Fonction de remplacement si vous voulez éviter un patch :

function alternate_get_entities($type = "", $subtype = "", $owner_guid = 0, $order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0, $container_guid = null, $timelower = 0, $timeupper = 0)
{
  global $CONFIG;
 
  if ($subtype === false || $subtype === null || $subtype === 0)
    return false;
 
  if ($order_by == "") $order_by = "time_created desc";
  $order_by = sanitise_string($order_by);
  $limit = (int)$limit;
  $offset = (int)$offset;
  $site_guid = (int) $site_guid;
  $timelower = (int) $timelower;
  $timeupper = (int) $timeupper;
  if ($site_guid == 0)
    $site_guid = $CONFIG->site_guid;
     
  $where = array();
 
  if (is_array($subtype)) {
    $tempwhere = "";
    if (sizeof($subtype))
    foreach($subtype as $typekey => $subtypearray) {
      foreach($subtypearray as $subtypeval) {
        $typekey = sanitise_string($typekey);
        if (!empty($subtypeval)) {
          if (!$subtypeval = (int) get_subtype_id($typekey, $subtypeval))
            return false;
        } else {
          // @todo: Setting subtype to 0 when $subtype = '' returns entities with
          // no subtype.  This is different to the non-array behavior
          // but may be required in some cases.
          $subtypeval = 0;
        }
        if (!empty($tempwhere)) $tempwhere .= " or ";
        $tempwhere .= "(type = '{$typekey}' and subtype = {$subtypeval})";
      }
    }
    if (!empty($tempwhere)) $where[] = "({$tempwhere})";
   
  } else {
 
    $type = sanitise_string($type);
    if ($subtype !== "" AND !$subtype = get_subtype_id($type, $subtype))
      return false;
   
    if ($type != "")
      $where[] = "type='$type'";
    if ($subtype!=="")
      $where[] = "subtype=$subtype";
  }

  if ($owner_guid != "") {
    if (!is_array($owner_guid)) {
      $owner_array = array($owner_guid);
      $owner_guid = (int) $owner_guid;
        $where[] = "owner_guid = '$owner_guid'";
    } else if (sizeof($owner_guid) > 0) {
      $owner_array = array_map('sanitise_int', $owner_guid);
      // Cast every element to the owner_guid array to int
        $owner_guid = array_map("sanitise_int", $owner_guid);
        $owner_guid = implode(",",$owner_guid);
        $where[] = "owner_guid in ({$owner_guid})";
    }

    if (is_null($container_guid)) {
      $container_guid = $owner_array;
    }
  }
  if ($site_guid > 0)
    $where[] = "site_guid = {$site_guid}";

  if (!is_null($container_guid)) {
    if (is_array($container_guid)) {
      foreach($container_guid as $key => $val) $container_guid[$key] = (int) $val;
      $where[] = "container_guid in (" . implode(",",$container_guid) . ")";
    } else {
      $container_guid = (int) $container_guid;
      $where[] = "container_guid = {$container_guid}";
    }
  }
  if ($timelower)
    $where[] = "time_created >= {$timelower}";
  if ($timeupper)
    $where[] = "time_created <= {$timeupper}";
   
  if (!$count) {
    $query = "SELECT * from {$CONFIG->dbprefix}entities where ";
  } else {
    $query = "SELECT count(guid) as total from {$CONFIG->dbprefix}entities where ";
  }
  foreach ($where as $w)
    $query .= " $w and ";
  $query .= get_access_sql_suffix(); // Add access controls
  if (!$count) {
    $query .= " order by $order_by";
    if ($limit) $query .= " limit $offset, $limit"; // Add order and limit
    $dt = get_data($query, "entity_row_to_elggstar");
    return $dt;
  } else {
    $total = get_data_row($query);
    return $total->total;
  }
}

Modifier   Supprimer

Installation sur 1&1

December 9, 2010 par Farnoosh   Commentaires (0)

, ,

 

Salut,

J'ai pas mal galéré pour installer la version 175 sur un serveur de 1&1.

 

Finalement, il NE fallait PAS mettre URL complet proposé par elgg :

The site URL, followed by a trailing slash:

http://monsite.com/homepages/42/d349502111/htdocs/elgg/

 

mais il fallait couper la partie de "trop" : 

http://monsite.com/elgg/

 

En revanche il falait tout garder pour :

The full path to your site root on your disk, followed by a trailing slash:

/homepages/42/d349502111/htdocs/elgg/

 

The full path to the directory where uploaded files will be stored, followed by a trailing slash:

/homepages/42/d349502111/htdocs/data/

 

Et bien sûre ajouter au fichier .htaccess ceci:

RewriteBase /elgg/

 

Je me suis dit que ça pouvait servir à qqn.

 

Modifier   Supprimer

Riverdashboard

October 8, 2010 par djeph   Commentaires (3)

bonjour,

comment modifié le Riverdashboard pour qu'il reste fixe.

merci a vous

Modifier   Supprimer

ElggFinder

May 22, 2010 par Keven   Commentaires (2)

Voici ma première contribution à Elgg, sous la forme d'un plugin (ou plutôt un "snippet") permettant de retrouver aisément des entités en base de données.
C'est en réalité une "classe à interface fluide" (traduction de Google pour "fluent interface class" que je trouve relativement adaptée), ou chainage de méthodes, qui permet de réaliser une suite d'opérations facilement. Ici les opérations constituent la configuration de la requête de recherche d'entités.

Ceci donne donc :

$blogs = Finder("blog")->
ownedByMyFriends()->
createdBetween("7 days ago")->_and("yesterday")->
find(10);

Ce qui signifie, je pense que tout le monde l'a compris : aboule les 10 premiers blogs créés par mes amis durant les 6 jours ayant précédé hier. En soi ce n'est pas ultra cohérent comme requête, mais le client est roi et c'est simplement une façon d'illustrer les capacités de la classe.

Les capacités sont les suivantes :

Dates

createdBefore(date)
createdAfter(date)
createdBetween(date) [..] _and(date) // Ne pas oublier le tiret devant "and" (le mot "and" sans tiret est réservé)
before(date)
after(date)
between(date) [..] _and(date)
modifiedBefore(date)
modifiedAfter(date)
modifiedBetween(date) [..] _and(date)

Possession

ownedBy(user, user, ...) // Accepte un GUID ou un ElggUser
ownedByMe() <-- Me = utilisateur connecté
ownedByFriendsOf(user, user, ...) // Accepte un GUID ou un ElggUser

Relations

rel(relation, pair) // = "ayant une [relation] avec [pair], ce dernier étant optionnel
relRelation(pair) // méthode magique déduisant la relation

Actions

find(count, limit)
findAll()
findOne()
findByGUID()
disable()
enable()
delete()
set(field, value)
setField(value) // méthode "magique" déduisant le nom du champ
save()

Voilà pour le moment c'est tout. Le développement de cette petite classe est très frais (deux jours pour tout dire).
J'aimerais que ceux que ça intéresse puissent tester cette classe et me donner leur avis sur les corrections et les évolutions à envisager.

Le code est à retrouver à l'adresse suivante : http://github.com/webpowered/elgg

Modifier   Supprimer

parution nouveau livre

May 17, 2010 par BASTIEN   Commentaires (1)

, , , , , ,

J'ai le plaisir de vous annoncer la sortie de mon nouvel ouvrage:

L'ISLAM, Art et Géométrie

qui traite des rapports entre la géométrie et les mosaïques, l'architecture et les objets usuels.

Il s'agit d'un ouvrage permettant de comprendre l'évolution de l'art entre les années 800 et 1800 selon trois variables:

la géométrie: soit la géométrie de la forme: carré, losange, hexagone, octogone......qui est visible ou  peu visible au premier abord. Il faut savoir que bien souvent dans les zelliges se cachent l'étoile de David et la Croix du Christ afin de montrer les filiations

              soit la géométrie des transformations et des isométries: grandissement des formes, symétries, translations visibles particulièrement dans l'art du Moyen Orient et surtout dans les pays tels Inde, Pakistan Ouzbekistan....

 

la dynastie: chaque dynastie a voulu marquer de son empreinte l'art, en important des artisans d'autres régions tels les iraniens qui ont travaillé dans tout le Moyen Orient ou par le biais de l'esclavage ou de prisonniers

 

le lieu: certains lieux sont symboliques des échanges entre artistes, soit un style nouveau apparaît, soit l'art est poussé à son paroxysme, soit encore le style précédent s'enrichit.

 

ce livre est disponible sous forme papier, tirage pdf et bientôt E-book (dans environ 2 mois)

et complète les livres déjà produits:

 

http://www.thebookedition.com/advanced_search_result.php?keywords=roger+bastien

 

Modifier   Supprimer

Installation Elgg et 1and1 -> Besoin d'aide

May 13, 2010 par Cédric   Commentaires (1)

Bonjour à tous,

J'ai installé en local elgg pas de souci.

Je l'ai installé sur mon hébergeur 1and1 et là c'est la galère, j'ai modifié le fichier .htaccess (voir à la suite) et quand j'ai le formulaire de validation. Je plante sur :  www.monsite.fr/elgg/action/systemsettings/install pour info dans le repertoire systemsetting le fichier existe mais s'apelle install.php et non install (sans extension).

SetEnv PHP_VER 5

 

AddType x-mapp-php5 .php

AddHandler x-mapp-php5 .php

<IfModule !mod_rewrite.c>

# ugly ugly hack to detect missing mod_rewrite

# RedirectMatch must be to an absolute destination, so forces 500 error...

ErrorDocument 500 "Elgg error: Apache does not have mod_rewrite loaded. Please check your Apache setup."

RedirectMatch 302 .* index.php

</IfModule>

<Files ".htaccess">

order allow,deny

deny from all

</Files>

# Don't listing directory

Options -Indexes

# Follow symbolic links

Options +FollowSymLinks

# Default handler

DirectoryIndex index.php

# Turn on expiry

<IfModule mod_expires.c>

ExpiresActive On

ExpiresDefault "access plus 10 years"

</IfModule>

# php 4, apache 1.x

<IfModule mod_php4.c>

ErrorDocument 500 "Elgg error: Elgg does not support PHP 4."

RedirectMatch 302 .* index.php

</IfModule>

# php 4, apache 2

<IfModule sapi_apache2.c>

ErrorDocument 500 "Elgg error: Elgg does not support PHP 4."

RedirectMatch 302 .* index.php

</IfModule>

# php 5, apache 1 and 2

<IfModule mod_php5.c>

# default memory limit to 64Mb

php_value memory_limit 64M

# to make sure register global is off

php_value register_globals 0

# max post size to 8Mb

php_value post_max_size 8388608

# upload size limit to 5Mb

php_value upload_max_filesize 5242880

# hide errors, enable only if debug enabled

php_value display_errors 0

</IfModule>

# Turn on mod_gzip if available

<IfModule mod_gzip.c>

mod_gzip_on yes

mod_gzip_dechunk yes

mod_gzip_keep_workfiles No

mod_gzip_minimum_file_size 1000

mod_gzip_maximum_file_size 1000000

mod_gzip_maximum_inmem_size 1000000

mod_gzip_item_include mime ^text/.*

mod_gzip_item_include mime ^application/javascript$

mod_gzip_item_include mime ^application/x-javascript$

# Exclude old browsers and images since IE has trouble with this

mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4\..*\["

mod_gzip_item_exclude mime ^image/.*

</IfModule>

## Apache2 deflate support if available

##

## Important note: mod_headers is required for correct functioning across proxies.

##

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4\.[0678] no-gzip

BrowserMatch \bMSIE !no-gzip

<IfModule mod_headers.c>

Header append Vary User-Agent env=!dont-vary

</IfModule>

SetEnvIfNoCase Request_URI action\/* no-gzip dont-vary

SetEnvIfNoCase Request_URI actions\/* no-gzip dont-vary

 

</IfModule>

# Configure ETags

<FilesMatch "\.(jpg|jpeg|gif|png|mp3|flv|mov|avi|3pg|html|htm|swf)$">

FileETag MTime Size

</FilesMatch>

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteBase /elgg/

RewriteRule ^action\/([A-Za-z0-9\_\-\/]+)$ /engine/handlers/action_handler.php?action=$1

RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)$ /services/export/handler.php?view=$1&guid=$2

RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/$ /services/export/handler.php?view=$1&guid=$2

RewriteRule ^export\/([A-Za-z]+)\/([0-9]+)\/([A-Za-z]+)\/([A-Za-z0-9\_]+)\/$ /services/export/handler.php?view=$1&guid=$2&type=$3&idname=$4

RewriteRule ^\_css\/css\.css$ /_css/css.php

RewriteRule ^pg\/([A-Za-z0-9\_\-]+)\/(.*)$ /engine/handlers/pagehandler.php?handler=$1&page=$2

RewriteRule ^pg\/([A-Za-z0-9\_\-]+)$ /engine/handlers/pagehandler.php?handler=$1

RewriteRule xml-rpc.php /engine/handlers/xml-rpc_handler.php

RewriteRule mt/mt-xmlrpc.cgi /engine/handlers/xml-rpc_handler.php

RewriteRule ^tag/(.+)/?$ /engine/handlers/pagehandler.php?handler=search&page=$1

RedirectMatch ^/$ http://www.monsite.fr/elgg/

</IfModule>

Merci de bien vouloir le regarder avant toute proposition, je tourne en rond et je suis à la version 1253...

Modifier   Supprimer

be2bi ca avance

May 12, 2010 par Benjamin Dumourier   Commentaires (1)

Le projet avance à petit pas mais il avance. Je n'ai malheureusement pas vraiment beaucoup de temps à y consacrer mais les vacances arrivant, j'espère donner un coup de cravache.

Toujours est-il  que malgrè mes difficultés en design de thème, j'ai abouti à une maquette plutôt pas mal. A vous de juger:

 

le réseau social du décisionnel

Modifier   Supprimer

Aurevoir....

May 6, 2010 par Kriss  

Et bien ce fut bref... et intense mais j'ai finalement rencontré trop d'instabilités et de bugs difficile à comprendre et à Corriger ! j'avais besoin d'un outils vraiment opérationnel, Elgg est super mais un peu jeune, je me suis donc tourné vers ... PhpBB ! sans doute l'un des derniers cms que je n'avais pas testé et je suis comblé par rapport à ce dont j'avais besoin (gestion individuelle des accès des utilisateurs dans des groupes privés/public/secret ...)

Merci et bonne continuation à la communauté Elgg Rigolant

 

Modifier   Supprimer