aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--admin.php34
-rw-r--r--alltags.php3
-rw-r--r--locales/fr_FR/LC_MESSAGES/messages.mobin17152 -> 17339 bytes
-rw-r--r--locales/fr_FR/LC_MESSAGES/messages.po332
-rw-r--r--locales/messages.po8
-rw-r--r--populartags.php2
-rw-r--r--services/tag2tagservice.php81
-rw-r--r--services/tagstatservice.php181
-rw-r--r--tables.sql18
-rw-r--r--templates/sidebar.block.linked.php25
-rw-r--r--templates/tags.tpl.php3
-rw-r--r--tests/tag2TagTest.php142
12 files changed, 607 insertions, 222 deletions
diff --git a/admin.php b/admin.php
new file mode 100644
index 0000000..81dde3c
--- /dev/null
+++ b/admin.php
@@ -0,0 +1,34 @@
+<?php
+/***************************************************************************
+Copyright (C) 2006 - 2007 Scuttle project
+http://sourceforge.net/projects/scuttle/
+http://scuttle.org/
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+***************************************************************************/
+
+// Uncomment the following lines to execute the admin script. Don't forget to re-comment them after using.
+
+/*
+require_once('header.inc.php');
+$tagstatservice = & ServiceFactory :: getServiceInstance('TagStatService');
+$templateservice = & ServiceFactory :: getServiceInstance('TemplateService');
+
+// Update the stats
+$tagstatservice->updateAllStat();
+
+echo "Admin script executed: OK!";
+*/
+?>
diff --git a/alltags.php b/alltags.php
index b784414..3805a3d 100644
--- a/alltags.php
+++ b/alltags.php
@@ -75,6 +75,9 @@ if (isset($userid)) {
$tplVars['cat_url'] = createURL('tags', '%2$s');
}
+$tplVars['sidebar_blocks'] = array('linked');
+$tplVars['userid'] = $userid;
+
$tplVars['subtitle'] = $pagetitle;
$templateservice->loadTemplate('tags.tpl', $tplVars);
diff --git a/locales/fr_FR/LC_MESSAGES/messages.mo b/locales/fr_FR/LC_MESSAGES/messages.mo
index c2d6b80..c068266 100644
--- a/locales/fr_FR/LC_MESSAGES/messages.mo
+++ b/locales/fr_FR/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/locales/fr_FR/LC_MESSAGES/messages.po b/locales/fr_FR/LC_MESSAGES/messages.po
index c3c1691..5b1e1d5 100644
--- a/locales/fr_FR/LC_MESSAGES/messages.po
+++ b/locales/fr_FR/LC_MESSAGES/messages.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Scuttle\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-14 11:58+0100\n"
-"PO-Revision-Date: 2008-01-14 11:31+0100\n"
+"POT-Creation-Date: 2008-01-22 16:54+0100\n"
+"PO-Revision-Date: 2008-01-22 16:55+0100\n"
"Last-Translator: BenjaminHKB <benjamin.huynh-kim-bang@loria.fr>\n"
"Language-Team: fr-FR <toony.sf@chezouam.net>\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,8 @@ msgstr ""
"X-Poedit-Country: FRANCE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../../about.php:25 ../../../templates/toolbar.inc.php:23
+#: ../../../about.php:25
+#: ../../../templates/toolbar.inc.php:23
msgid "About"
msgstr "À propos"
@@ -27,7 +28,8 @@ msgstr "À propos"
msgid "You are not allowed to delete this bookmark"
msgstr "Vous ne pouvez pas supprimer ce signet."
-#: ../../../ajaxDelete.php:34 ../../../edit.php:78
+#: ../../../ajaxDelete.php:34
+#: ../../../edit.php:78
msgid "Failed to delete bookmark"
msgstr "Erreur dans la suppression du signet"
@@ -35,31 +37,36 @@ msgstr "Erreur dans la suppression du signet"
msgid "All Tags"
msgstr "Tous les tags"
-#: ../../../alltags.php:57 ../../../bookmarks.php:72
-#: ../../../populartags.php:58 ../../../profile.php:44 ../../../rss.php:62
-#: ../../../search.php:87 ../../../watch.php:34 ../../../watchlist.php:61
+#: ../../../alltags.php:57
+#: ../../../bookmarks.php:72
+#: ../../../populartags.php:58
+#: ../../../profile.php:44
+#: ../../../rss.php:62
+#: ../../../search.php:87
+#: ../../../watch.php:34
+#: ../../../watchlist.php:61
#, php-format
msgid "User with username %s was not found"
msgstr "L'utilisateur %s n'a pas été trouvé."
-#: ../../../bookmarks.php:95 ../../../edit.php:44
+#: ../../../bookmarks.php:95
+#: ../../../edit.php:44
msgid "Your bookmark must have a title and an address"
msgstr "Votre signet doit avoir un titre et une adresse."
-#: ../../../bookmarks.php:115 ../../../edit.php:58
+#: ../../../bookmarks.php:115
+#: ../../../edit.php:58
msgid "Bookmark saved"
msgstr "Signet enregistré."
-#: ../../../bookmarks.php:123 ../../../import.php:99
+#: ../../../bookmarks.php:123
+#: ../../../import.php:99
#: ../../../importNetscape.php:74
-msgid ""
-"There was an error saving your bookmark. Please try again or contact the "
-"administrator."
-msgstr ""
-"Il y a eu une erreur en enregistrant ce signet. Veuillez rééssayer ou "
-"contacter votre administrateur."
+msgid "There was an error saving your bookmark. Please try again or contact the administrator."
+msgstr "Il y a eu une erreur en enregistrant ce signet. Veuillez rééssayer ou contacter votre administrateur."
-#: ../../../bookmarks.php:161 ../../../templates/toolbar.inc.php:14
+#: ../../../bookmarks.php:161
+#: ../../../templates/toolbar.inc.php:14
msgid "Add a Bookmark"
msgstr "Ajouter un signet"
@@ -92,7 +99,8 @@ msgstr "Vous n'êtes pas autorisé à éditer ce signet."
msgid "Error while saving your bookmark"
msgstr "Erreur pendant l'enregistrement de votre signet."
-#: ../../../edit.php:88 ../../../templates/editprofile.tpl.php:49
+#: ../../../edit.php:88
+#: ../../../templates/editprofile.tpl.php:49
msgid "Save Changes"
msgstr "Enregister les modifications"
@@ -108,7 +116,8 @@ msgstr "Erreur SQL"
msgid "Line"
msgstr "Ligne"
-#: ../../../functions.inc.php:115 ../../../templates/importDelicious.tpl.php:8
+#: ../../../functions.inc.php:115
+#: ../../../templates/importDelicious.tpl.php:8
#: ../../../templates/importNetscape.tpl.php:9
msgid "File"
msgstr "Fichier"
@@ -168,11 +177,13 @@ msgstr "Erreur XML: %s à la ligne %d"
msgid "Import Bookmarks from del.icio.us"
msgstr "Importer les signet depuis del.icio.us"
-#: ../../../import.php:86 ../../../importNetscape.php:64
+#: ../../../import.php:86
+#: ../../../importNetscape.php:64
msgid "You have already submitted this bookmark."
msgstr "Vous avez déjà enregistré ce signet."
-#: ../../../import.php:97 ../../../importNetscape.php:72
+#: ../../../import.php:97
+#: ../../../importNetscape.php:72
#, fuzzy
msgid "Bookmark imported."
msgstr "Signets importés."
@@ -199,18 +210,21 @@ msgstr "Conservez, partagez et taggez vos liens favoris"
msgid "Recent Bookmarks"
msgstr "Signets récents"
-#: ../../../jsScuttle.php:22 ../../../templates/tag2tagadd.tpl.php:9
+#: ../../../jsScuttle.php:22
+#: ../../../templates/tag2tagadd.tpl.php:9
#: ../../../templates/tag2tagdelete.tpl.php:8
#: ../../../templates/tagdelete.tpl.php:6
msgid "Are you sure?"
msgstr "Etes-vous sûr ?"
-#: ../../../jsScuttle.php:22 ../../../templates/tag2tagdelete.tpl.php:10
+#: ../../../jsScuttle.php:22
+#: ../../../templates/tag2tagdelete.tpl.php:10
#: ../../../templates/tagdelete.tpl.php:8
msgid "Yes"
msgstr "Oui"
-#: ../../../jsScuttle.php:22 ../../../templates/tag2tagdelete.tpl.php:11
+#: ../../../jsScuttle.php:22
+#: ../../../templates/tag2tagdelete.tpl.php:11
#: ../../../templates/tagdelete.tpl.php:9
msgid "No"
msgstr "Non"
@@ -225,11 +239,10 @@ msgstr "Non Disponible"
#: ../../../login.php:38
msgid "The details you have entered are incorrect. Please try again."
-msgstr ""
-"Les informations que vous avez entrées sont incorrectes. Veuillez "
-"recommencer."
+msgstr "Les informations que vous avez entrées sont incorrectes. Veuillez recommencer."
-#: ../../../login.php:48 ../../../templates/login.tpl.php:26
+#: ../../../login.php:48
+#: ../../../templates/login.tpl.php:26
#: ../../../templates/toolbar.inc.php:24
msgid "Log In"
msgstr "Se connecter"
@@ -239,11 +252,8 @@ msgid "You must enter your username."
msgstr "Vous devez entrer votre nom d'utilisateur."
#: ../../../password.php:35
-msgid ""
-"You must enter your <abbr title=\"electronic mail\">e-mail</abbr> address."
-msgstr ""
-"Vous <em>devez</em> saisir une <abbr title=\"adresse électronique\">E-mail</"
-"abbr>."
+msgid "You must enter your <abbr title=\"electronic mail\">e-mail</abbr> address."
+msgstr "Vous <em>devez</em> saisir une <abbr title=\"adresse électronique\">E-mail</abbr>."
#: ../../../password.php:42
msgid "No matches found for that username."
@@ -251,31 +261,20 @@ msgstr "Rien de trouvé pour ce nom d'utilisateur."
#: ../../../password.php:45
#, fuzzy
-msgid ""
-"No matches found for that combination of username and <abbr title="
-"\"electronic mail\">e-mail</abbr> address."
-msgstr ""
-"Nous n'avons rien trouvé pour cette combinaison de nom d'utilisateur et "
-"d'<abbr title=\"adresse mail\">e-mail</abbr>."
+msgid "No matches found for that combination of username and <abbr title=\"electronic mail\">e-mail</abbr> address."
+msgstr "Nous n'avons rien trouvé pour cette combinaison de nom d'utilisateur et d'<abbr title=\"adresse mail\">e-mail</abbr>."
#: ../../../password.php:53
-msgid ""
-"There was an error while generating your new password. Please try again."
-msgstr ""
-"Il y a eu une erreur en enregistrant ce signet. Veuillez rééssayer ou "
-"contacter votre administrateur."
+msgid "There was an error while generating your new password. Please try again."
+msgstr "Il y a eu une erreur en enregistrant ce signet. Veuillez rééssayer ou contacter votre administrateur."
#: ../../../password.php:57
msgid "Your new password is:"
msgstr "Votre nouveau mot de passe est:"
#: ../../../password.php:57
-msgid ""
-"To keep your bookmarks secure, you should change this password in your "
-"profile the next time you log in."
-msgstr ""
-"Pour garder vos signets sûrs, vous devriez changer ce mot de passe dans "
-"votre profil lors de votre prochaine authentification."
+msgid "To keep your bookmarks secure, you should change this password in your profile the next time you log in."
+msgstr "Pour garder vos signets sûrs, vous devriez changer ce mot de passe dans votre profil lors de votre prochaine authentification."
#: ../../../password.php:60
#, php-format
@@ -291,14 +290,16 @@ msgstr "Nouveau mot de passe généré et envoyé à l'adresse %s"
msgid "Forgotten Password"
msgstr "Mot de passe oublié"
-#: ../../../populartags.php:49 ../../../templates/dynamictags.inc.php:101
+#: ../../../populartags.php:49
+#: ../../../templates/dynamictags.inc.php:101
#: ../../../templates/sidebar.block.common.php:9
#: ../../../templates/sidebar.block.popular.php:15
#: ../../../templates/sidebar.block.recent.php:25
msgid "Popular Tags"
msgstr "Tags populaires"
-#: ../../../profile.php:52 ../../../watchlist.php:116
+#: ../../../profile.php:52
+#: ../../../watchlist.php:116
msgid "Username was not specified"
msgstr "Le nom d'utilisateur n'a pas été spécifié."
@@ -306,7 +307,8 @@ msgstr "Le nom d'utilisateur n'a pas été spécifié."
msgid "My Profile"
msgstr "Mon Profil"
-#: ../../../profile.php:60 ../../../templates/toolbar.inc.php:13
+#: ../../../profile.php:60
+#: ../../../templates/toolbar.inc.php:13
msgid "Profile"
msgstr "Profil"
@@ -324,8 +326,7 @@ msgstr "Adresse de courrier électronique invalide."
#: ../../../profile.php:90
msgid "An error occurred while saving your changes."
-msgstr ""
-"Une erreur s'est produite pendant l'enregistrement de vos modifications."
+msgstr "Une erreur s'est produite pendant l'enregistrement de vos modifications."
#: ../../../profile.php:92
msgid "Changes saved."
@@ -333,9 +334,7 @@ msgstr "Modifications enregistrées."
#: ../../../register.php:33
msgid "You <em>must</em> enter a username, password and e-mail address."
-msgstr ""
-"Vous <em>devez</em> saisir un nom d'utilisateur, un mot de passe, un nom et "
-"un <abbr title=\"adresse électronique\">e-mail</abbr>"
+msgstr "Vous <em>devez</em> saisir un nom d'utilisateur, un mot de passe, un nom et un <abbr title=\"adresse électronique\">e-mail</abbr>"
#: ../../../register.php:37
msgid "This username has been reserved, please make another choice."
@@ -361,7 +360,8 @@ msgstr "Votre inscription a bien été prise en compte !"
msgid "Registration failed. Please try again."
msgstr "Enregistrement raté. Veuillez rééssayer."
-#: ../../../register.php:66 ../../../templates/register.tpl.php:41
+#: ../../../register.php:66
+#: ../../../templates/register.tpl.php:41
#: ../../../templates/toolbar.inc.php:25
msgid "Register"
msgstr "S'enregistrer"
@@ -371,7 +371,8 @@ msgstr "S'enregistrer"
msgid "Recent bookmarks posted to %s"
msgstr "Signets ajoutés récemment à %s"
-#: ../../../search.inc.php:13 ../../../search.inc.php:41
+#: ../../../search.inc.php:13
+#: ../../../search.inc.php:41
msgid "Search"
msgstr "Chercher"
@@ -395,15 +396,17 @@ msgstr "tous les signets"
msgid "for"
msgstr "pour"
-#: ../../../search.php:58 ../../../search.php:104
+#: ../../../search.php:58
+#: ../../../search.php:104
msgid "Search Bookmarks"
msgstr "Recherche de signets"
#: ../../../search.php:64
msgid "Search Results"
-msgstr "Résulats de recherche"
+msgstr "Résultats de recherche"
-#: ../../../tag2tagadd.php:31 ../../../tag2tagdelete.php:31
+#: ../../../tag2tagadd.php:31
+#: ../../../tag2tagdelete.php:31
msgid "Permission denied."
msgstr "Permission non accordée."
@@ -452,21 +455,22 @@ msgstr "Tag renommé"
msgid "Failed to rename the tag"
msgstr "Erreur dans la suppression du tag"
-#: ../../../tagrename.php:57 ../../../templates/sidebar.block.tagactions.php:9
+#: ../../../tagrename.php:57
+#: ../../../templates/sidebar.block.tagactions.php:9
msgid "Rename Tag"
msgid_plural "Rename Tags"
msgstr[0] "Renommer le tag"
msgstr[1] "TRenommer les tags"
-#: ../../../tags.php:38 ../../../templates/editbookmark.tpl.php:44
+#: ../../../tags.php:38
+#: ../../../templates/editbookmark.tpl.php:44
#: ../../../templates/toolbar.inc.php:11
msgid "Tags"
msgstr "Tags"
#: ../../../users.php:33
-#, fuzzy
msgid "Users"
-msgstr "Nom d'utilisateur"
+msgstr "Utilisateurs"
#: ../../../watch.php:46
msgid "User removed from your watchlist"
@@ -481,42 +485,28 @@ msgstr "Utilisateur ajouté à la liste des consultés."
msgid "My Watchlist"
msgstr "Liste des signets vus"
-#: ../../../watchlist.php:105 ../../../templates/toolbar.inc.php:12
+#: ../../../watchlist.php:105
+#: ../../../templates/toolbar.inc.php:12
#, fuzzy
msgid "Watchlist"
msgstr "Liste des signets vus"
#: ../../../templates/about.tpl.php:6
-msgid ""
-"<strong>Store</strong> all your favourite links in one place, accessible "
-"from anywhere."
-msgstr ""
-"<strong>Conservez</strong> tous vos signets au même endroit, accessibles de "
-"partout. "
+msgid "<strong>Store</strong> all your favourite links in one place, accessible from anywhere."
+msgstr "<strong>Conservez</strong> tous vos signets au même endroit, accessibles de partout. "
#: ../../../templates/about.tpl.php:7
-msgid ""
-"<strong>Share</strong> your bookmarks with everyone, with friends on your "
-"watchlist or just keep them private."
-msgstr ""
-"<strong>Partagez</strong> vos signets avec tout le monde, avec les "
-"utilisateurs autorisés ou gardez-les pour vous."
+msgid "<strong>Share</strong> your bookmarks with everyone, with friends on your watchlist or just keep them private."
+msgstr "<strong>Partagez</strong> vos signets avec tout le monde, avec les utilisateurs autorisés ou gardez-les pour vous."
#: ../../../templates/about.tpl.php:8
-msgid ""
-"<strong>Tag</strong> your bookmarks with as many labels as you want, instead "
-"of wrestling with folders."
-msgstr ""
-"<strong>Taggez</strong> vos signets avec autant de labels que vous le "
-"souhaitez au lieu de les hiérarchiser avec des dossiers."
+msgid "<strong>Tag</strong> your bookmarks with as many labels as you want, instead of wrestling with folders."
+msgstr "<strong>Taggez</strong> vos signets avec autant de labels que vous le souhaitez au lieu de les hiérarchiser avec des dossiers."
#: ../../../templates/about.tpl.php:9
#, php-format
-msgid ""
-"<strong><a href=\"register.php\">Register now</a></strong> to start using %s!"
-msgstr ""
-"<a href=\"register.php\">Enregistrez-vous maintenant</a> pour poster vos "
-"propres signets !"
+msgid "<strong><a href=\"register.php\">Register now</a></strong> to start using %s!"
+msgstr "<a href=\"register.php\">Enregistrez-vous maintenant</a> pour poster vos propres signets sur %s !"
#: ../../../templates/about.tpl.php:12
msgid "Geek Stuff"
@@ -524,33 +514,16 @@ msgstr "Pour les Geeks"
#: ../../../templates/about.tpl.php:14
#, php-format
-msgid ""
-"%s is based on <a href=\"http://sourceforge.net/projects/scuttle/\">an open-"
-"source project</a> licensed under the <a href=\"http://www.gnu.org/copyleft/"
-"gpl.html\"><acronym title=\"GNU's Not Unix\">GNU</acronym> General Public "
-"License</a>. This means you can host it on your own web server for free, "
-"whether it is on the Internet, a private network or just your own computer."
-msgstr ""
-"%s est basé sur <a href=\"http://sourceforge.net/projects/scuttle/\">un "
-"projet open-source</a>, sous la license <a href=\"http://www.gnu.org/"
-"copyleft/gpl.html\"><acronym title=\"GNU's Not Unix\">GNU</acronym> General "
-"Public License</a>. Vous pouvez donc héberger Scuttle sur votre propre "
-"serveur gratuitement, qu'il soit relié à Internet, dans un réseau privé ou "
-"juste sur votre ordinateur personnel."
+msgid "%s is based on <a href=\"http://sourceforge.net/projects/scuttle/\">an open-source project</a> licensed under the <a href=\"http://www.gnu.org/copyleft/gpl.html\"><acronym title=\"GNU's Not Unix\">GNU</acronym> General Public License</a>. This means you can host it on your own web server for free, whether it is on the Internet, a private network or just your own computer."
+msgstr "%s est basé sur <a href=\"http://sourceforge.net/projects/scuttle/\">un projet open-source</a>, sous la license <a href=\"http://www.gnu.org/copyleft/gpl.html\"><acronym title=\"GNU's Not Unix\">GNU</acronym> General Public License</a>. Vous pouvez donc héberger Scuttle sur votre propre serveur gratuitement, qu'il soit relié à Internet, dans un réseau privé ou juste sur votre ordinateur personnel."
#: ../../../templates/about.tpl.php:15
#, php-format
-msgid ""
-"%1$s supports most of the <a href=\"http://del.icio.us/doc/api\">del.icio.us "
-"<abbr title=\"Application Programming Interface\">API</abbr></a>. Almost all "
-"of the neat tools made for that system can be modified to work with %1$s "
-"instead. If you find a tool that won't let you change the API address, ask "
-"the creator to add this setting. You never know, they might just do it."
-msgstr ""
-"%1$s supporte la plupart de l'<a href=\"http://del.icio.us/doc/api\">del."
-"icio.us <abbr title=\"Application Programming Interface\">API</abbr></a>."
+msgid "%1$s supports most of the <a href=\"http://del.icio.us/doc/api\">del.icio.us <abbr title=\"Application Programming Interface\">API</abbr></a>. Almost all of the neat tools made for that system can be modified to work with %1$s instead. If you find a tool that won't let you change the API address, ask the creator to add this setting. You never know, they might just do it."
+msgstr "%1$s supporte la plupart de l'<a href=\"http://del.icio.us/doc/api\">del.icio.us <abbr title=\"Application Programming Interface\">API</abbr></a>."
-#: ../../../templates/bookmarks.tpl.php:17 ../../../templates/tags.tpl.php:7
+#: ../../../templates/bookmarks.tpl.php:17
+#: ../../../templates/tags.tpl.php:7
#: ../../../templates/users.tpl.php:8
msgid "Sort by:"
msgstr "Classer par :"
@@ -657,11 +630,8 @@ msgid "Comma-separated"
msgstr "Séparés par des virgules"
#: ../../../templates/editbookmark.tpl.php:50
-msgid ""
-"Note: use \">\" to include one tag in another. e.g.: europe>france>paris"
-msgstr ""
-"Note: utiliser \">\" pour inclure un tag dans un autre. ex: "
-"europe>france>paris"
+msgid "Note: use \">\" to include one tag in another. e.g.: europe>france>paris"
+msgstr "Note: utiliser \">\" pour inclure un tag dans un autre. ex: europe>france>paris"
#: ../../../templates/editbookmark.tpl.php:53
#: ../../../templates/importDelicious.tpl.php:15
@@ -695,13 +665,8 @@ msgstr "Bookmarklet"
#: ../../../templates/editbookmark.tpl.php:98
#, php-format
-msgid ""
-"Drag one of the following bookmarklets to your browser's bookmarks and click "
-"it whenever you want to add the page you are on to %s"
-msgstr ""
-"Déplacez l'un des 'bookmarklet' suivants dans les marques-pages de votre "
-"navigateur et cliquez dessus chaque fois que vous souhaitez ajouter un "
-"signet pour la page courante dans %s "
+msgid "Drag one of the following bookmarklets to your browser's bookmarks and click it whenever you want to add the page you are on to %s"
+msgstr "Déplacez l'un des 'bookmarklet' suivants dans les marques-pages de votre navigateur et cliquez dessus chaque fois que vous souhaitez ajouter un signet pour la page courante dans %s "
#: ../../../templates/editbookmark.tpl.php:110
#, php-format
@@ -736,8 +701,10 @@ msgid "Account Details"
msgstr "Détail du compte"
#: ../../../templates/editprofile.tpl.php:11
-#: ../../../templates/login.tpl.php:15 ../../../templates/password.tpl.php:10
-#: ../../../templates/profile.tpl.php:7 ../../../templates/register.tpl.php:16
+#: ../../../templates/login.tpl.php:15
+#: ../../../templates/password.tpl.php:10
+#: ../../../templates/profile.tpl.php:7
+#: ../../../templates/register.tpl.php:16
msgid "Username"
msgstr "Nom d'utilisateur"
@@ -797,28 +764,16 @@ msgid "Instructions"
msgstr "Instructions"
#: ../../../templates/importDelicious.tpl.php:33
-msgid ""
-"Log in to the <a href=\"http://del.icio.us/api/posts/all\">export page at "
-"del.icio.us</a>"
-msgstr ""
-"Se connecter à la <a href=\"http://del.icio.us/api/posts/all\">page d'export "
-"de del.icio.us</a>"
+msgid "Log in to the <a href=\"http://del.icio.us/api/posts/all\">export page at del.icio.us</a>"
+msgstr "Se connecter à la <a href=\"http://del.icio.us/api/posts/all\">page d'export de del.icio.us</a>"
#: ../../../templates/importDelicious.tpl.php:34
-msgid ""
-"Save the resulting <abbr title=\"Extensible Markup Language\">XML</abbr> "
-"file to your computer"
-msgstr ""
-"Enregistrer le fichier <abbr title=\"Extensible Markup Language\">XML</abbr> "
-"résultant sur votre ordinateur"
+msgid "Save the resulting <abbr title=\"Extensible Markup Language\">XML</abbr> file to your computer"
+msgstr "Enregistrer le fichier <abbr title=\"Extensible Markup Language\">XML</abbr> résultant sur votre ordinateur"
#: ../../../templates/importDelicious.tpl.php:35
-msgid ""
-"Click <kbd>Browse...</kbd> to find this file on your computer. The maximum "
-"size the file can be is 1MB"
-msgstr ""
-"Cliquez sur <kbd>Parcourir...</kbd> pour trouver le fichier sur votre "
-"ordinateur. La taille maximale du fichier ne peut excèder 1Mo"
+msgid "Click <kbd>Browse...</kbd> to find this file on your computer. The maximum size the file can be is 1MB"
+msgstr "Cliquez sur <kbd>Parcourir...</kbd> pour trouver le fichier sur votre ordinateur. La taille maximale du fichier ne peut excèder 1Mo"
#: ../../../templates/importDelicious.tpl.php:36
#: ../../../templates/importNetscape.tpl.php:43
@@ -827,48 +782,31 @@ msgstr "Selectionnez la vision par défaut à appliquer à vos signets importés
#: ../../../templates/importDelicious.tpl.php:37
#: ../../../templates/importNetscape.tpl.php:44
-msgid ""
-"Click <kbd>Import</kbd> to start importing the bookmarks; it may take a "
-"minute"
-msgstr ""
-"Cliquez sur <kbd>Importer</kbd> pour débuter l'import des signets; cette "
-"opération peut prendre quelques minutes"
+msgid "Click <kbd>Import</kbd> to start importing the bookmarks; it may take a minute"
+msgstr "Cliquez sur <kbd>Importer</kbd> pour débuter l'import des signets; cette opération peut prendre quelques minutes"
#: ../../../templates/importNetscape.tpl.php:35
msgid "Export your bookmarks from your browser to a file"
msgstr "Exporter vos signets dans un fichier depuis votre navigateur"
#: ../../../templates/importNetscape.tpl.php:37
-msgid ""
-"Internet Explorer: <kbd>File &gt; Import and Export... &gt; Export Favorites"
-msgstr ""
-"Internet Explorer: <kbd>Ficher &gt; Importer et Exporter... &gt; Exporter "
-"les favoris"
+msgid "Internet Explorer: <kbd>File &gt; Import and Export... &gt; Export Favorites"
+msgstr "Internet Explorer: <kbd>Ficher &gt; Importer et Exporter... &gt; Exporter les favoris"
#: ../../../templates/importNetscape.tpl.php:38
-msgid ""
-"Mozilla Firefox: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; File &gt; "
-"Export..."
-msgstr ""
-"Mozilla Firefox: <kbd>Marques-pages &gt; Gérer les marques-pages... &gt; "
-"Fichier &gt; Exporter..."
+msgid "Mozilla Firefox: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; File &gt; Export..."
+msgstr "Mozilla Firefox: <kbd>Marques-pages &gt; Gérer les marques-pages... &gt; Fichier &gt; Exporter..."
#: ../../../templates/importNetscape.tpl.php:39
-msgid ""
-"Netscape: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; Tools &gt; Export..."
-msgstr ""
-"Netscape: <kbd>Marques-pages &gt; Gérer les marques-pages... &gt; Outils "
-"&gt; Exporter..."
+msgid "Netscape: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; Tools &gt; Export..."
+msgstr "Netscape: <kbd>Marques-pages &gt; Gérer les marques-pages... &gt; Outils &gt; Exporter..."
#: ../../../templates/importNetscape.tpl.php:42
-msgid ""
-"Click <kbd>Browse...</kbd> to find the saved bookmark file on your computer. "
-"The maximum size the file can be is 1MB"
-msgstr ""
-"Cliquez sur <kbd>Parcourir...</kbd> pour trouver le fichier sur votre "
-"ordinateur. La taille maximale du fichier ne peut excèder 1Mo"
+msgid "Click <kbd>Browse...</kbd> to find the saved bookmark file on your computer. The maximum size the file can be is 1MB"
+msgstr "Cliquez sur <kbd>Parcourir...</kbd> pour trouver le fichier sur votre ordinateur. La taille maximale du fichier ne peut excèder 1Mo"
-#: ../../../templates/login.tpl.php:20 ../../../templates/register.tpl.php:21
+#: ../../../templates/login.tpl.php:20
+#: ../../../templates/register.tpl.php:21
msgid "Password"
msgstr "Mot de passe"
@@ -882,14 +820,8 @@ msgstr "Avez-vous oublié votre mot de passe ?"
#: ../../../templates/password.tpl.php:5
#, php-format
-msgid ""
-"If you have forgotten your password, %s can generate a new one. Enter the "
-"username and e-mail address of your account into the form below and we will "
-"e-mail your new password to you."
-msgstr ""
-"Si vous avez oublié votre mot de passe, %s peut en générer un nouveau. "
-"Entrez le nom d'utilisateur et l'adresse email de votre compte dans le "
-"formulaire ci-dessous et nous vous enverrons un nouveau mot de passe."
+msgid "If you have forgotten your password, %s can generate a new one. Enter the username and e-mail address of your account into the form below and we will e-mail your new password to you."
+msgstr "Si vous avez oublié votre mot de passe, %s peut en générer un nouveau. Entrez le nom d'utilisateur et l'adresse email de votre compte dans le formulaire ci-dessous et nous vous enverrons un nouveau mot de passe."
#: ../../../templates/password.tpl.php:19
msgid "Generate Password"
@@ -912,21 +844,21 @@ msgstr "Consultés"
#: ../../../templates/register.tpl.php:11
#, php-format
-msgid ""
-"Sign up here to create a free %s account. All the information requested "
-"below is required"
-msgstr ""
-"Enregistrez-vous ici pour créer un compte gratuit %s. Toutes les "
-"informations requises ci-dessous sont nécessaires."
+msgid "Sign up here to create a free %s account. All the information requested below is required"
+msgstr "Enregistrez-vous ici pour créer un compte gratuit %s. Toutes les informations requises ci-dessous sont nécessaires."
#: ../../../templates/register.tpl.php:33
msgid "Antispam question"
msgstr "Question antispam"
-#: ../../../templates/sidebar.block.linked.php:63
+#: ../../../templates/sidebar.block.linked.php:72
msgid "Linked Tags"
msgstr "Tags structurés"
+#: ../../../templates/sidebar.block.linked.php:75
+msgid "plus"
+msgstr "plus"
+
#: ../../../templates/sidebar.block.recent.php:15
msgid "Recent Tags"
msgstr "Tags récents"
@@ -954,14 +886,12 @@ msgid "Add to Watchlist"
msgstr "Ajouter à la liste des consultés"
#: ../../../templates/tag2tagadd.tpl.php:7
-#, fuzzy
msgid "Create new link:"
msgstr "Créer un nouveau lien"
#: ../../../templates/tag2tagadd.tpl.php:11
-#, fuzzy
msgid "Create"
-msgstr "Privée"
+msgstr "Créer"
#: ../../../templates/tag2tagadd.tpl.php:12
#: ../../../templates/tagrename.tpl.php:25
@@ -977,16 +907,17 @@ msgid "New"
msgstr "Nouvaeu"
#: ../../../templates/tagrename.tpl.php:24
-#, fuzzy
msgid "Rename"
-msgstr "Nom d'utilisateur"
+msgstr "Renommer"
-#: ../../../templates/tags.tpl.php:8 ../../../templates/users.tpl.php:9
+#: ../../../templates/tags.tpl.php:8
+#: ../../../templates/users.tpl.php:9
#, fuzzy
msgid "Alphabet"
msgstr "Alphabet"
-#: ../../../templates/tags.tpl.php:9 ../../../templates/users.tpl.php:10
+#: ../../../templates/tags.tpl.php:9
+#: ../../../templates/users.tpl.php:10
msgid "Popularity"
msgstr "Popularité"
@@ -1010,17 +941,16 @@ msgstr "Créé en "
msgid "bookmarks"
msgstr "signets"
+#~ msgid "edit"
+#~ msgstr "éditer"
#~ msgid "Failed to delete the bookmark"
#~ msgstr "Erreur dans la suppression du signet"
-
#~ msgid "User with username %s not was not found"
#~ msgstr "L'utilisateur %s n'a pas été trouvé."
-
#~ msgid "%s Bookmarks"
#~ msgstr "Signets de %s"
-
#~ msgid "<abbr title=\"Electronic mail\">E-mail</abbr>"
#~ msgstr "<abbr title=\"Adresse électronique\">E-mail</abbr>"
-
#~ msgid "No bookmarks found"
#~ msgstr "Pas de signets trouvés"
+
diff --git a/locales/messages.po b/locales/messages.po
index f32110b..a5301eb 100644
--- a/locales/messages.po
+++ b/locales/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-14 11:58+0100\n"
+"POT-Creation-Date: 2008-01-22 16:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -853,10 +853,14 @@ msgstr ""
msgid "Antispam question"
msgstr ""
-#: ../../../templates/sidebar.block.linked.php:63
+#: ../../../templates/sidebar.block.linked.php:72
msgid "Linked Tags"
msgstr ""
+#: ../../../templates/sidebar.block.linked.php:75
+msgid "plus"
+msgstr ""
+
#: ../../../templates/sidebar.block.recent.php:15
msgid "Recent Tags"
msgstr ""
diff --git a/populartags.php b/populartags.php
index daef205..6bed82d 100644
--- a/populartags.php
+++ b/populartags.php
@@ -76,6 +76,8 @@ if (isset($userid)) {
$tplVars['cat_url'] = createURL('tags', '%2$s');
}
+$tplVars['sidebar_blocks'] = array('linked');
+
$tplVars['subtitle'] = $pagetitle;
$templateservice->loadTemplate('tags.tpl', $tplVars);
diff --git a/services/tag2tagservice.php b/services/tag2tagservice.php
index 7ceb8da..14d57b3 100644
--- a/services/tag2tagservice.php
+++ b/services/tag2tagservice.php
@@ -28,17 +28,35 @@ class Tag2TagService {
return false;
}
$this->db->sql_transaction('commit');
+
+ // Update stats
+ $tsts =& ServiceFactory::getServiceInstance('TagStatService');
+ $tsts->updateStat($tag1, $relationType, $uId);
+
return true;
}
- function getLinkedTags($tag1, $relationType, $uId = -1) {
+ // Return the target linked tags. If inverseRelation is true, return the source linked tags.
+ function getLinkedTags($tag, $relationType, $uId = null, $inverseRelation = false) {
// Set up the SQL query.
- $query = "SELECT DISTINCT tag2 as 'tag' FROM `". $this->getTableName() ."`";
- $query.= " WHERE tag1 = '" .$tag1 ."'";
+ if($inverseRelation) {
+ $queriedTag = "tag1";
+ $givenTag = "tag2";
+ } else {
+ $queriedTag = "tag2";
+ $givenTag = "tag1";
+ }
+
+ $query = "SELECT DISTINCT ". $queriedTag ." as 'tag'";
+ $query.= " FROM `". $this->getTableName() ."`";
+ $query.= " WHERE 1=1";
+ if($tag !=null) {
+ $query.= " AND ". $givenTag ." = '". $tag ."'";
+ }
if($relationType) {
$query.= " AND relationType = '". $relationType ."'";
}
- if($uId>0) {
+ if($uId != null) {
$query.= " AND uId = '".$uId."'";
}
@@ -88,9 +106,14 @@ class Tag2TagService {
return $output;
}
- function getOrphewTags($relationType, $uId = 0) {
- $query = "SELECT DISTINCT tag1 as tag FROM `". $this->getTableName() ."`";
- $query.= " WHERE tag1 <> ALL";
+ function getOrphewTags($relationType, $uId = 0, $limit = null, $orderBy = null) {
+ $query = "SELECT DISTINCT tts.tag1 as tag";
+ $query.= " FROM `". $this->getTableName() ."` tts";
+ if($orderBy != null) {
+ $tsts =& ServiceFactory::getServiceInstance('TagStatService');
+ $query.= ", ".$tsts->getTableName() ." tsts";
+ }
+ $query.= " WHERE tts.tag1 <> ALL";
$query.= " (SELECT DISTINCT tag2 FROM `". $this->getTableName() ."`";
$query.= " WHERE relationType = '".$relationType."'";
if($uId > 0) {
@@ -98,12 +121,41 @@ class Tag2TagService {
}
$query.= ")";
if($uId > 0) {
- $query.= " AND uId = '".$uId."'";
+ $query.= " AND tts.uId = '".$uId."'";
}
- //die($query);
+ switch($orderBy) {
+ case "nb":
+ $query.= " AND tts.tag1 = tsts.tag1";
+ $query.= " AND tsts.relationType = '".$relationType."'";
+ if($uId > 0) {
+ $query.= " AND tsts.uId = ".$uId;
+ }
+ $query.= " ORDER BY tsts.nb DESC";
+ break;
+ case "depth": // by nb of descendants
+ $query.= " AND tts.tag1 = tsts.tag1";
+ $query.= " AND tsts.relationType = '".$relationType."'";
+ if($uId > 0) {
+ $query.= " AND tsts.uId = ".$uId;
+ }
+ $query.= " ORDER BY tsts.depth DESC";
+ break;
+ case "nbupdate":
+ $query.= " AND tts.tag1 = tsts.tag1";
+ $query.= " AND tsts.relationType = '".$relationType."'";
+ if($uId > 0) {
+ $query.= " AND tsts.uId = ".$uId;
+ }
+ $query.= " ORDER BY tsts.nbupdate DESC";
+ break;
+ }
- if (! ($dbresult =& $this->db->sql_query_limit($query, $limit)) ){
+ if($limit != null) {
+ $query.= " LIMIT 0,".$limit;
+ }
+
+ if (! ($dbresult =& $this->db->sql_query($query)) ){
message_die(GENERAL_ERROR, 'Could not get linked tags', '', __LINE__, __FILE__, $query, $this->db);
return false;
}
@@ -117,7 +169,7 @@ class Tag2TagService {
$query.= " AND relationType = '". $relationType ."'";
$query.= " AND uId = '".$uId."'";
- return $this->db->sql_numrows($dbresult) > 0;
+ return $this->db->sql_numrows($this->db->sql_query($query)) > 0;
}
function removeLinkedTags($tag1, $tag2, $relationType, $uId) {
@@ -132,12 +184,19 @@ class Tag2TagService {
return false;
}
+ // Update stats
+ $tsts =& ServiceFactory::getServiceInstance('TagStatService');
+ $tsts->updateStat($tag1, $relationType, $uId);
+
return true;
}
function deleteAll() {
$query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
$this->db->sql_query($query);
+
+ $tsts =& ServiceFactory::getServiceInstance('TagStatService');
+ $tsts->deleteAll();
}
// Properties
diff --git a/services/tagstatservice.php b/services/tagstatservice.php
new file mode 100644
index 0000000..fa416f4
--- /dev/null
+++ b/services/tagstatservice.php
@@ -0,0 +1,181 @@
+<?php
+class TagStatService {
+ var $db;
+ var $tablename;
+
+ function &getInstance(&$db) {
+ static $instance;
+ if (!isset($instance))
+ $instance =& new TagStatService($db);
+ return $instance;
+ }
+
+ function TagStatService(&$db) {
+ $this->db =& $db;
+ $this->tablename = $GLOBALS['tableprefix'] .'tagsstats';
+ }
+
+ function getNbChildren($tag1, $relationType, $uId) {
+ $tts =& ServiceFactory::getServiceInstance('Tag2TagService');
+ $query = "SELECT tag1, relationType, uId FROM `". $tts->getTableName() ."`";
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+
+ return $this->db->sql_numrows($this->db->sql_query($query));
+ }
+
+ function getNbDescendants($tag1, $relationType, $uId) {
+ $query = "SELECT nb FROM `". $this->getTableName() ."`";
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+
+ $dbresults =& $this->db->sql_query($query);
+ $row = $this->db->sql_fetchrow($dbresults);
+ if($row['nb'] == null) {
+ return 0;
+ } else {
+ return (int) $row['nb'];
+ }
+ }
+
+ function getMaxDepth($tag1, $relationType, $uId) {
+ $query = "SELECT depth FROM `". $this->getTableName() ."`";
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+
+ $dbresults =& $this->db->sql_query($query);
+ $row = $this->db->sql_fetchrow($dbresults);
+ if($row['depth'] == null) {
+ return 0;
+ } else {
+ return (int) $row['depth'];
+ };
+ }
+
+ function getNbUpdate($tag1, $relationType, $uId) {
+ $query = "SELECT nbupdate FROM `". $this->getTableName() ."`";
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+
+ $dbresults =& $this->db->sql_query($query);
+ $row = $this->db->sql_fetchrow($dbresults);
+ if($row['nbupdate'] == null) {
+ return 0;
+ } else {
+ return (int) $row['nbupdate'];
+ }
+ }
+
+ function existStat($tag1, $relationType, $uId) {
+ $query = "SELECT tag1, relationType, uId FROM `". $this->getTableName() ."`";
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+
+ return $this->db->sql_numrows($this->db->sql_query($query))>0;
+ }
+
+ function createStat($tag1, $relationType, $uId) {
+ $query = "INSERT INTO `". $this->getTableName() ."`";
+ $query.= "(tag1, relationType, uId)";
+ $query.= " VALUES ('".$tag1."','".$relationType."','".$uId."')";
+ $this->db->sql_query($query);
+ }
+
+ function updateStat($tag1, $relationType, $uId=null, $stoplist=array()) {
+ if(in_array($tag1, $stoplist)) {
+ return false;
+ }
+
+ $tts =& ServiceFactory::getServiceInstance('Tag2TagService');
+ $linkedTags = $tts->getLinkedTags($tag1, $relationType, $uId);
+ $nbDescendants = 0;
+ $maxDepth = 0;
+ foreach($linkedTags as $linkedTag) {
+ $nbDescendants+= 1 + $this->getNbDescendants($linkedTag, $relationType, $uId);
+ $maxDepth = max($maxDepth, 1 + $this->getMaxDepth($linkedTag, $relationType, $uId));
+ }
+ $this->setNbDescendants($tag1, $relationType, $uId, $nbDescendants);
+ $this->setMaxDepth($tag1, $relationType, $uId, $maxDepth);
+ $this->increaseNbUpdate($tag1, $relationType, $uId);
+
+ // propagation to the precedent tags
+ $linkedTags = $tts->getLinkedTags($tag1, $relationType, $uId, true);
+ $stoplist[] = $tag1;
+ foreach($linkedTags as $linkedTag) {
+ $this->updateStat($linkedTag, $relationType, $uId, $stoplist);
+ }
+ }
+
+ function updateAllStat() {
+ $tts =& ServiceFactory::getServiceInstance('Tag2TagService');
+
+ $query = "SELECT tag1, uId FROM `". $tts->getTableName() ."`";
+ $query.= " WHERE relationType = '>'";
+
+//die($query);
+
+ if (! ($dbresult =& $this->db->sql_query($query)) ){
+ message_die(GENERAL_ERROR, 'Could not update stats', '', __LINE__, __FILE__, $query, $this->db);
+ return false;
+ }
+
+ $rowset = $this->db->sql_fetchrowset($dbresult);
+ foreach($rowset as $row) {
+ $this->updateStat($row['tag1'], '>', $row['uId']);
+ }
+ }
+
+ function setNbDescendants($tag1, $relationType, $uId, $nb) {
+ if(!$this->existStat($tag1, $relationType, $uId)) {
+ $this->createStat($tag1, $relationType, $uId);
+ }
+ $query = "UPDATE `". $this->getTableName() ."`";
+ $query.= " SET nb = ". $nb;
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+ $this->db->sql_query($query);
+ }
+
+ function setMaxDepth($tag1, $relationType, $uId, $depth) {
+ if(!$this->existStat($tag1, $relationType, $uId)) {
+ $this->createStat($tag1, $relationType, $uId);
+ }
+ $query = "UPDATE `". $this->getTableName() ."`";
+ $query.= " SET depth = ". $depth;
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+ $this->db->sql_query($query);
+ }
+
+ function increaseNbUpdate($tag1, $relationType, $uId) {
+ if(!$this->existStat($tag1, $relationType, $uId)) {
+ $this->createStat($tag1, $relationType, $uId);
+ }
+ $query = "UPDATE `". $this->getTableName() ."`";
+ $query.= " SET nbupdate = nbupdate + 1";
+ $query.= " WHERE tag1 = '" .$tag1 ."'";
+ $query.= " AND relationType = '". $relationType ."'";
+ $query.= " AND uId = '".$uId."'";
+
+ //die($query);
+
+ $this->db->sql_query($query);
+ }
+
+ function deleteAll() {
+ $query = 'TRUNCATE TABLE `'. $this->getTableName() .'`';
+ $this->db->sql_query($query);
+ }
+
+ // Properties
+ function getTableName() { return $this->tablename; }
+ function setTableName($value) { $this->tablename = $value; }
+}
+?>
diff --git a/tables.sql b/tables.sql
index 1968507..3dd7bab 100644
--- a/tables.sql
+++ b/tables.sql
@@ -82,3 +82,21 @@ CREATE TABLE `sc_tags2tags` (
PRIMARY KEY (`ttId`),
UNIQUE KEY `sc_tags2tags_tag1_tag2_uId` (`tag1`,`tag2`,`relationType`,`uId`)
);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `sc_tagsstats`
+--
+
+CREATE TABLE `sc_tagsstats` (
+ `tstId` int(11) NOT NULL auto_increment,
+ `tag1` varchar(32) NOT NULL default '',
+ `relationType` varchar(32) NOT NULL default '',
+ `uId` int(11) NOT NULL default '0',
+ `nb` int(11) NOT NULL default '0',
+ `depth` int(11) NOT NULL default '0',
+ `nbupdate` int(11) NOT NULL default '0',
+ PRIMARY KEY (`tstId`),
+ UNIQUE KEY `sc_tagsstats_tag1_type_uId` (`tag1`,`relationType`,`uId`)
+);
diff --git a/templates/sidebar.block.linked.php b/templates/sidebar.block.linked.php
index 5a891ea..7bbde81 100644
--- a/templates/sidebar.block.linked.php
+++ b/templates/sidebar.block.linked.php
@@ -4,11 +4,14 @@ $userservice =& ServiceFactory::getServiceInstance('UserService');
function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode =false, $precedentTag =null, $level=0, $stopList=array()) {
$tag2tagservice =& ServiceFactory::getServiceInstance('Tag2TagService');
+ $tagstatservice =& ServiceFactory::getServiceInstance('TagStatService');
$output = '';
$output.= '<tr>';
$output.= '<td></td>';
$output.= '<td>'. str_repeat('&nbsp;', $level*2) .'<a href="'. sprintf($cat_url, filter($user, 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>';
+ //$output.= ' - '. $tagstatservice->getMaxDepth($tag, $linkType, $uId);
+
if($editingMode) {
$output.= ' (';
$output.= '<a href="'.createURL('tag2tagadd', $tag).'">add</a>';
@@ -22,7 +25,7 @@ function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode
$output.= '</tr>';
if(!in_array($tag, $stopList)) {
- $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $userid, $level);
+ $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $userid);
$precedentTag = $tag;
$stopList[] = $tag;
$level = $level + 1;
@@ -33,7 +36,6 @@ function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode
return $output;
}
-
$logged_on_userid = $userservice->getCurrentUserId();
if ($logged_on_userid === false) {
$logged_on_userid = NULL;
@@ -43,7 +45,12 @@ $explodedTags = array();
if ($currenttag) {
$explodedTags = explode('+', $currenttag);
} else {
- $orphewTags = $tag2tagservice->getOrphewTags('>', $userid);
+ if($userid != null) {
+ $orphewTags = $tag2tagservice->getOrphewTags('>', $userid);
+ } else {
+ $orphewTags = $tag2tagservice->getOrphewTags('>', $userid, 4, "nb");
+ }
+
foreach($orphewTags as $orphewTag) {
$explodedTags[] = $orphewTag['tag'];
}
@@ -60,7 +67,17 @@ if(count($explodedTags) > 0) {
if ($displayLinkedZone) {
?>
-<h2><?php echo T_('Linked Tags'); ?></h2>
+<h2>
+<?php
+ echo T_('Linked Tags').' ';
+ //if($userid != null) {
+ $cUser = $userservice->getUser($userid);
+ echo '<a href="'.createURL('alltags', $cUser['username']).'">('.T_('plus').')</a>';
+ //}
+?>
+</h2>
+
+
<div id="linked">
<table>
<?php
diff --git a/templates/tags.tpl.php b/templates/tags.tpl.php
index 7266170..d5de176 100644
--- a/templates/tags.tpl.php
+++ b/templates/tags.tpl.php
@@ -23,5 +23,6 @@ echo $contents ."\n";
<?php
}
+$this->includeTemplate('sidebar.tpl');
$this->includeTemplate($GLOBALS['bottom_include']);
-?> \ No newline at end of file
+?>
diff --git a/tests/tag2TagTest.php b/tests/tag2TagTest.php
index 3a8466f..7b84ac6 100644
--- a/tests/tag2TagTest.php
+++ b/tests/tag2TagTest.php
@@ -26,6 +26,8 @@ class Tag2TagTest extends PHPUnit_Framework_TestCase
$this->ts->deleteAll();
$this->tts =& ServiceFactory::getServiceInstance('Tag2TagService');
$this->tts->deleteAll();
+ $this->tsts =& ServiceFactory::getServiceInstance('TagStatService');
+ $this->tsts->deleteAll();
}
public function testManipulateTag2TagRelations()
@@ -58,9 +60,11 @@ class Tag2TagTest extends PHPUnit_Framework_TestCase
$this->assertSame('a', $orphewTags[0]['tag']);
$this->assertSame('f', $orphewTags[1]['tag']);
$orphewTags = $tts->getOrphewTags('>');
- $this->assertEquals(2, sizeof($orphewTags));
+ $this->assertEquals(1, sizeof($orphewTags));
$this->assertSame('f', $orphewTags[0]['tag']);
+ $linkedTags = $tts->getLinkedTags('a', '>');
+ $this->assertSame(array('b', 'c', 'd'), $linkedTags);
$linkedTags = $tts->getLinkedTags('a', '>', 1);
$this->assertSame(array('b', 'c'), $linkedTags);
$tts->removeLinkedTags('a', 'b', '>', 1);
@@ -69,8 +73,48 @@ class Tag2TagTest extends PHPUnit_Framework_TestCase
$tts->removeLinkedTags('a', 'c', '>', 1);
$linkedTags = $tts->getLinkedTags('a', '>', 1);
$this->assertEquals(0, sizeof($linkedTags));
- $linkedTags = $tts->getLinkedTags('a', '>');
- $this->assertSame(array('b', 'c', 'd'), $linkedTags);
+ }
+
+ /* Test function that select the best tags to display? */
+ public function testViewTag2TagRelations()
+ {
+ $tts = $this->tts;
+
+ $tts->addLinkedTags('a', 'b', '>', 1);
+ $tts->addLinkedTags('c', 'd', '>', 1);
+ $tts->addLinkedTags('d', 'e', '>', 1);
+ $tts->addLinkedTags('f', 'g', '>', 1);
+ $tts->addLinkedTags('f', 'h', '>', 1);
+ $tts->addLinkedTags('f', 'i', '>', 1);
+
+ $orphewTags = $tts->getOrphewTags('>', 1);
+ $this->assertEquals(3, sizeof($orphewTags));
+ $this->assertSame('a', $orphewTags[0]['tag']);
+ $this->assertSame('c', $orphewTags[1]['tag']);
+ $this->assertSame('f', $orphewTags[2]['tag']);
+
+ // with limit
+ $orphewTags = $tts->getOrphewTags('>', 1, 2);
+ $this->assertEquals(2, sizeof($orphewTags));
+ $this->assertSame('a', $orphewTags[0]['tag']);
+ $this->assertSame('c', $orphewTags[1]['tag']);
+
+ // with sorting
+ $orphewTags = $tts->getOrphewTags('>', 1, 2, 'nb'); // nb descendants
+ $this->assertEquals(2, sizeof($orphewTags));
+ $this->assertSame('f', $orphewTags[0]['tag']);
+ $this->assertSame('c', $orphewTags[1]['tag']);
+
+ $orphewTags = $tts->getOrphewTags('>', 1, 1, 'depth');
+ $this->assertEquals(1, sizeof($orphewTags));
+ $this->assertSame('c', $orphewTags[0]['tag']);
+
+ $orphewTags = $tts->getOrphewTags('>', 1, null, 'nbupdate');
+ $this->assertEquals(3, sizeof($orphewTags));
+ $this->assertSame('f', $orphewTags[0]['tag']);
+ $this->assertSame('c', $orphewTags[1]['tag']);
+ $this->assertSame('a', $orphewTags[2]['tag']);
+
}
public function testAddLinkedTagsThroughBookmarking()
@@ -97,6 +141,7 @@ class Tag2TagTest extends PHPUnit_Framework_TestCase
$this->assertEquals(1, sizeof($linkedTags));
$this->assertSame('c', $linkedTags[0]['tag']);
$this->assertTrue($tts->existsLinkedTags('d', 'e', '>', 1));
+ $this->assertFalse($tts->existsLinkedTags('e', 'd', '>', 1));
}
public function testSearchThroughLinkedTags()
@@ -140,5 +185,96 @@ class Tag2TagTest extends PHPUnit_Framework_TestCase
}
+ public function testStatsBetweenTags()
+ {
+ $tsts = $this->tsts;
+ $tts = $this->tts;
+
+ // basic functions
+ $this->assertFalse($tsts->existStat('a', '>', 10));
+ $tsts->setNbDescendants('a', '>', 10, 2);
+ $this->assertSame(2, $tsts->getNbDescendants('a', '>', 10));
+ $tsts->setMaxDepth('a', '>', 10, 3);
+ $this->assertSame(3, $tsts->getMaxDepth('a', '>', 10));
+ $this->assertTrue($tsts->existStat('a', '>', 10));
+ $this->assertFalse($tsts->existStat('a', '>', 20));
+ $tsts->increaseNbUpdate('a', '>', 10);
+ $this->assertSame(1, $tsts->getNbUpdate('a', '>', 10));
+
+ $tsts->deleteAll();
+
+ // no structure
+ $nbC = $tsts->getNbChildren('a', '>', 1);
+ $nbD = $tsts->getNbDescendants('a', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('a', '>', 1);
+ $this->assertSame(0, $nbC);
+ $this->assertSame(0, $nbD);
+ $this->assertSame(0, $maxDepth);
+
+ // simple case
+ $tts->addLinkedTags('b', 'c', '>', 1);
+ $tts->addLinkedTags('a', 'd', '>', 1);
+ $tts->addLinkedTags('a', 'b', '>', 1);
+ $tts->addLinkedTags('b', 'e', '>', 1);
+
+ $this->assertSame(3, $tsts->getNbUpdate('a', '>', '1'));
+ $this->assertSame(2, $tsts->getNbUpdate('b', '>', '1'));
+ $this->assertSame(0, $tsts->getNbUpdate('c', '>', '1'));
+ $this->assertSame(0, $tsts->getNbUpdate('d', '>', '1'));
+ $this->assertSame(0, $tsts->getNbUpdate('e', '>', '1'));
+
+
+ $nbC = $tsts->getNbChildren('a', '>', 1);
+ $nbD = $tsts->getNbDescendants('a', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('a', '>', 1);
+ $this->assertSame(2, $nbC);
+ $this->assertSame(4, $nbD);
+ $this->assertSame(2, $maxDepth);
+
+ $nbC = $tsts->getNbChildren('b', '>', 1);
+ $nbD = $tsts->getNbDescendants('b', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('b', '>', 1);
+ $this->assertSame(2, $nbC);
+ $this->assertSame(2, $nbD);
+ $this->assertSame(1, $maxDepth);
+
+ $nbC = $tsts->getNbChildren('c', '>', 1);
+ $nbD = $tsts->getNbDescendants('c', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('c', '>', 1);
+ $this->assertSame(0, $nbC);
+ $this->assertSame(0, $nbD);
+ $this->assertSame(0, $maxDepth);
+
+ $nbC = $tsts->getNbChildren('d', '>', 1);
+ $nbD = $tsts->getNbDescendants('d', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('d', '>', 1);
+ $this->assertSame(0, $nbC);
+ $this->assertSame(0, $nbD);
+ $this->assertSame(0, $maxDepth);
+
+ // deletion
+ $tts->removeLinkedTags('b', 'e', '>', 1);
+
+ $nbC = $tsts->getNbChildren('b', '>', 1);
+ $nbD = $tsts->getNbDescendants('b', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('b', '>', 1);
+ $this->assertSame(1, $nbC);
+ $this->assertSame(1, $nbD);
+ $this->assertSame(1, $maxDepth);
+
+ $nbC = $tsts->getNbChildren('a', '>', 1);
+ $nbD = $tsts->getNbDescendants('a', '>', 1);
+ $maxDepth = $tsts->getMaxDepth('a', '>', 1);
+ $this->assertSame(2, $nbC);
+ $this->assertSame(3, $nbD);
+ $this->assertSame(2, $maxDepth);
+
+
+ // advanced case with fore loop
+ //$tts->addLinkedTags('d', 'c', '>', 1);
+
+ // advanced case with back loop
+ //$tts->addLinkedTags('e', 'a', '>', 1);
+ }
}
?>