|
From: <ma...@us...> - 2012-01-30 22:41:30
|
Revision: 8841
http://xoops.svn.sourceforge.net/xoops/?rev=8841&view=rev
Author: mageg
Date: 2012-01-30 22:41:20 +0000 (Mon, 30 Jan 2012)
Log Message:
-----------
add avatars plugin
Added Paths:
-----------
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/about.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_custom.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_system.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/header.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/menu.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/avatar.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/admin.css
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/changelog.txt
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/credits.txt
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/install.txt
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/lang_diff.txt
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/licence.txt
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/readme.txt
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/icons/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/icons/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/icons/logo_large.png
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/icons/logo_small.png
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/images/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/images/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/images/logo.png
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/images/logo_small.png
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/include/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/include/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/include/install.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/admin.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/help/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/help/help.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/help/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/english/modinfo.php
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/language/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/templates/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/templates/admin/
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/templates/admin/avatars_custom.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/templates/admin/avatars_system.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/templates/admin/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/templates/index.html
XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/xoops_version.php
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars
___________________________________________________________________
Added: tsvn:autoprops
+ *.php = svn:executable=*;svn:keywords=Author Date Id Rev URL;
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin
___________________________________________________________________
Added: tsvn:autoprops
+ *.php = svn:executable=*;svn:keywords=Author Date Id Rev URL;
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/about.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/about.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/about.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,27 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Grégory (AKA Mage)
+ * @version $Id$
+ */
+include dirname(__FILE__) . '/header.php';
+$xoops->header();
+$aboutAdmin = new XoopsModuleAdmin();
+$aboutAdmin->renderNavigation('about.php');
+$aboutAdmin->renderabout('6KJ7RW5DR3VTJ', true);
+$xoops->footer();
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/about.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_custom.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_custom.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_custom.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,186 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Grégory (AKA Mage)
+ * @version $Id$
+ */
+include dirname(__FILE__) . '/header.php';
+// Get main instance
+$system = System::getInstance();
+// Check users rights
+if (!$xoops->isUser() || !$xoops->isModule() || !$xoops->user->isAdmin($xoops->module->mid())) {
+ exit(_NOPERM);
+}
+// Parameters
+$nb_avatars = $xoops->getModuleConfig('avatars_pager');
+$mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png', 'image/png');
+$upload_size = $xoops->getModuleConfig('avatars_imagefilesize');
+$width = $xoops->getModuleConfig('avatars_imagewidth');
+$height = $xoops->getModuleConfig('avatars_imageheight');
+// Get Action type
+$op = $system->cleanVars($_REQUEST, 'op', 'list', 'string');
+// Get avatar handler
+$avatar_Handler = $xoops->getHandlerAvatar();
+// Call Header
+$xoops->header('avatars_custom.html');
+
+$admin_page = new XoopsModuleAdmin();
+$admin_page->renderNavigation('avatars_system.php');
+
+switch ($op) {
+
+ case 'list':
+ default:
+ // Add Scripts
+ $xoops->theme->addScript('media/xoops/xoops.js');
+ // Define Stylesheet
+ $xoops->theme->addStylesheet('modules/avatars/css/admin.css');
+
+ $admin_page->addTips(_AM_AVATARS_CUSTOM_TIPS);
+ $admin_page->renderTips();
+ // Get start pager
+ $start = $system->cleanVars($_REQUEST, 'start', 0, 'int');
+ // Filter avatars
+ $criteria = new Criteria('avatar_type', 'C');
+ $avatar_count = $avatar_Handler->getCount($criteria);
+ $xoops->tpl->assign('avatar_count', $avatar_count);
+ // Get avatar list
+ $criteria->setStart($start);
+ $criteria->setLimit($nb_avatars);
+ $criteria->setSort("avatar_weight");
+ $criteria->setOrder("ASC");
+ $avatars_arr = $avatar_Handler->getObjects($criteria, true);
+ // Construct avatars array
+ $avatar_list = array();
+ $i = 0;
+ foreach (array_keys($avatars_arr) as $i) {
+ $avatar_list[$i] = $avatars_arr[$i]->getValues();
+ $user = $avatar_Handler->getUser($avatars_arr[$i]);
+ if (is_array($user) && isset($user[0])) {
+ $avatar_list[$i]['user'] = $user[0];
+ }
+ }
+ $xoops->tpl->assign('avatars_list', $avatar_list);
+ // Display Page Navigation
+ if ($avatar_count > $nb_avatars) {
+ $nav = new XoopsPageNav($avatar_count, $nb_avatars, $start, 'start', 'op=list');
+ $xoops->tpl->assign('nav_menu', $nav->renderNav(4));
+ }
+ break;
+
+ // Edit
+ case "edit":
+ $admin_page->addTips(sprintf(_AM_AVATARS_TIPS_FORM1, implode(', ', $mimetypes)) . sprintf(_AM_AVATARS_TIPS_FORM2, $upload_size / 1000) . sprintf(_AM_AVATARS_TIPS_FORM3, $width, $height));
+ $admin_page->addItemButton(_AM_AVATARS_LIST, 'avatar_custom.php', 'list');
+ $admin_page->renderTips();
+ $admin_page->renderButton();
+ // Create form
+ $obj = $avatar_Handler->get($system->cleanVars($_REQUEST, 'avatar_id', 0, 'int'));
+ $form = $xoops->getModuleForm($obj, 'avatar');
+ // Assign form
+ $xoops->tpl->assign('form', $form->render());
+ break;
+
+ // Save
+ case "save":
+ // Check security
+ if (!$xoops->security->check()) {
+ $xoops->redirect('avatar_custom.php', 3, implode('<br />', $xoops->security->getErrors()));
+ }
+ $uploader_avatars_img = new XoopsMediaUploader(XOOPS_UPLOAD_PATH . '/avatars', $mimetypes, $upload_size, $width, $height);
+ // Get avatar id
+ $avatar_id = $system->cleanVars($_POST, 'avatar_id', 0, 'int');
+ if ($avatar_id > 0) {
+ $obj = $avatar_Handler->get($avatar_id);
+ } else {
+ $obj = $avatar_Handler->create();
+ }
+ $obj->setVars($_POST);
+ $obj->setVar('avatar_type', 'C');
+ if ($uploader_avatars_img->fetchMedia('avatar_file')) {
+ $uploader_avatars_img->setPrefix('savt');
+ $uploader_avatars_img->fetchMedia('avatar_file');
+ if (!$uploader_avatars_img->upload()) {
+ $errors = $uploader_avatars_img->getErrors();
+ $xoops->redirect("javascript:history.go(-1)", 3, $errors);
+ } else {
+ $obj->setVar('avatar_mimetype', $uploader_avatars_img->getMediaType());
+ $obj->setVar('avatar_file', 'avatars/' . $uploader_avatars_img->getSavedFileName());
+ }
+ } else {
+ $file = $system->cleanVars($_POST, 'avatar_file', 'blank.gif', 'string');
+ $obj->setVar('avatar_file', 'avatars/' . $file);
+ }
+ if ($avatar_Handler->insert($obj)) {
+ $xoops->redirect('avatar_custom.php', 2, _AM_AVATARS_SAVE);
+ }
+ $xoops->error($obj->getHtmlErrors());
+ $form = $xoops->getModuleForm($obj, 'avatar');
+ $xoops->tpl->assign('form', $form->render());
+ break;
+
+ //Delete
+ case "delete":
+ $admin_page->addItemButton(_AM_AVATARS_LIST, 'avatar_custom.php', 'list');
+ $admin_page->renderButton();
+ $avatar_id = $system->cleanVars($_REQUEST, 'avatar_id', 0, 'int');
+ $obj = $avatar_Handler->get($avatar_id);
+ if (isset($_POST["ok"]) && $_POST["ok"] == 1) {
+ if (!$xoops->security->check()) {
+ $xoops->redirect("avatar_custom.php", 3, implode(",", $xoops->security->getErrors()));
+ }
+ if ($avatar_Handler->delete($obj)) {
+ // Delete file
+ $file = $obj->getVar('avatar_file');
+ if (is_file(XOOPS_UPLOAD_PATH . '/' . $file)) {
+ chmod(XOOPS_UPLOAD_PATH . '/' . $file, 0777);
+ unlink(XOOPS_UPLOAD_PATH . '/' . $file);
+ }
+ // Update member profil
+ $xoops->db->query("UPDATE " . $xoops->db->prefix('users') . " SET user_avatar='blank.gif' WHERE user_avatar='" . $file . "'");
+ $xoops->redirect("avatar_custom.php", 2, _AM_AVATARS_SAVE);
+ } else {
+ $xoops->error($obj->getHtmlErrors());
+ }
+ } else {
+ if ($avatar_id > 0) {
+ // Define Stylesheet
+ $xoops->theme->addStylesheet('modules/system/css/admin.css');
+ $msg = '<div class="spacer"><img src="' . XOOPS_UPLOAD_URL . '/' . $obj->getVar('avatar_file', 's') . '" alt="" /></div><div class="txtcenter bold">' . $obj->getVar('avatar_name', 's') . '</div>' . _AM_AVATARS_SUREDEL;
+ // Display message
+ $xoops->confirm(array('ok' => 1, 'op' => 'delete', 'avatar_id' => $avatar_id), 'avatar_custom.php', $msg);
+ } else {
+ $xoops->redirect('avatar_custom.php', 1, _AM_SYSTEM_DBERROR);
+ }
+ }
+ break;
+
+ case "update_display":
+ $avatar_id = $system->cleanVars($_POST, 'avatar_id', 0, 'int');
+ if ($avatar_id > 0) {
+ $obj = $avatar_Handler->get($avatar_id);
+ $old = $obj->getVar('avatar_display');
+ $obj->setVar('avatar_display', !$old);
+ if ($avatar_Handler->insert($obj)) {
+ exit;
+ }
+ echo $obj->getHtmlErrors();
+ }
+ break;
+}
+$xoops->footer();
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_custom.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_system.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_system.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_system.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,200 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Grégory (AKA Mage)
+ * @version $Id$
+ */
+include dirname(__FILE__) . '/header.php';
+// Get main instance
+$system = System::getInstance();
+// Check users rights
+if (!$xoops->isUser() || !$xoops->isModule() || !$xoops->user->isAdmin($xoops->module->mid())) {
+ exit(_NOPERM);
+}
+// Parameters
+$nb_avatars = $xoops->getModuleConfig('avatars_pager');
+$mimetypes = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png', 'image/png');
+$upload_size = $xoops->getModuleConfig('avatars_imagefilesize');
+$width = $xoops->getModuleConfig('avatars_imagewidth');
+$height = $xoops->getModuleConfig('avatars_imageheight');
+// Get Action type
+$op = $system->cleanVars($_REQUEST, 'op', 'list', 'string');
+// Get avatar handler
+$avatar_Handler = $xoops->getHandlerAvatar();
+// Call Header
+$xoops->header('avatars_system.html');
+
+$admin_page = new XoopsModuleAdmin();
+$admin_page->renderNavigation('avatars_system.php');
+
+switch ($op) {
+
+ case 'list':
+ default:
+ // Add Scripts
+ $xoops->theme->addScript('media/xoops/xoops.js');
+ // Define Stylesheet
+ $xoops->theme->addStylesheet('modules/avatars/css/admin.css');
+
+ $admin_page->addTips(_AM_AVATARS_SYSTEM_TIPS);
+ $admin_page->addItemButton(_AM_AVATARS_ADD, 'avatar_system.php?op=new', 'add');
+ $admin_page->renderTips();
+ $admin_page->renderButton();
+ // Get start pager
+ $start = $system->cleanVars($_REQUEST, 'start', 0, 'int');
+ // Filter avatars
+ $criteria = new Criteria('avatar_type', 'S');
+ $avatar_count = $avatar_Handler->getCount($criteria);
+ $xoops->tpl->assign('avatar_count', $avatar_count);
+ // Get avatar list
+ $criteria->setStart($start);
+ $criteria->setLimit($nb_avatars);
+ $criteria->setSort("avatar_weight");
+ $criteria->setOrder("ASC");
+ $avatars_arr = $avatar_Handler->getObjects($criteria, true);
+ // Construct avatars array
+ $avatar_list = array();
+ $i = 0;
+ foreach (array_keys($avatars_arr) as $i) {
+ $avatar_list[$i] = $avatars_arr[$i]->getValues();
+ $avatar_list[$i]['count'] = count($avatar_Handler->getUser($avatars_arr[$i]));
+ }
+ $xoops->tpl->assign('avatars_list', $avatar_list);
+ // Display Page Navigation
+ if ($avatar_count > $nb_avatars) {
+ $nav = new XoopsPageNav($avatar_count, $nb_avatars, $start, 'start', 'op=list');
+ $xoops->tpl->assign('nav_menu', $nav->renderNav(4));
+ }
+ break;
+
+ // New
+ case "new":
+ $admin_page->addTips(sprintf(_AM_AVATARS_TIPS_FORM1, implode(', ', $mimetypes)) . sprintf(_AM_AVATARS_TIPS_FORM2, $upload_size / 1000) . sprintf(_AM_AVATARS_TIPS_FORM3, $width, $height));
+ $admin_page->addItemButton(_AM_AVATARS_LIST, 'avatar_system.php', 'list');
+ $admin_page->renderTips();
+ $admin_page->renderButton();
+ // Create form
+ $obj = $avatar_Handler->create();
+ $form = $xoops->getModuleForm($obj, 'avatar');
+ // Assign form
+ $xoops->tpl->assign('form', $form->render());
+ break;
+
+ // Edit
+ case "edit":
+ $admin_page->addTips(sprintf(_AM_AVATARS_TIPS_FORM1, implode(', ', $mimetypes)) . sprintf(_AM_AVATARS_TIPS_FORM2, $upload_size / 1000) . sprintf(_AM_AVATARS_TIPS_FORM3, $width, $height));
+ $admin_page->addItemButton(_AM_AVATARS_ADD, 'avatar_system.php?op=new', 'add');
+ $admin_page->addItemButton(_AM_AVATARS_LIST, 'avatar_system.php', 'list');
+ $admin_page->renderTips();
+ $admin_page->renderButton();
+ // Create form
+ $obj = $avatar_Handler->get($system->cleanVars($_REQUEST, 'avatar_id', 0, 'int'));
+ $form = $xoops->getModuleForm($obj, 'avatar');
+ // Assign form
+ $xoops->tpl->assign('form', $form->render());
+ break;
+
+ // Save
+ case "save":
+ // Check security
+ if (!$xoops->security->check()) {
+ $xoops->redirect('avatar_system.php', 3, implode('<br />', $xoops->security->getErrors()));
+ }
+ $uploader_avatars_img = new XoopsMediaUploader(XOOPS_UPLOAD_PATH . '/avatars', $mimetypes, $upload_size, $width, $height);
+ // Get avatar id
+ $avatar_id = $system->cleanVars($_POST, 'avatar_id', 0, 'int');
+ if ($avatar_id > 0) {
+ $obj = $avatar_Handler->get($avatar_id);
+ } else {
+ $obj = $avatar_Handler->create();
+ }
+ $obj->setVars($_POST);
+ $obj->setVar('avatar_type', 's');
+ if ($uploader_avatars_img->fetchMedia('avatar_file')) {
+ $uploader_avatars_img->setPrefix('savt');
+ $uploader_avatars_img->fetchMedia('avatar_file');
+ if (!$uploader_avatars_img->upload()) {
+ $errors = $uploader_avatars_img->getErrors();
+ $xoops->redirect("javascript:history.go(-1)", 3, $errors);
+ } else {
+ $obj->setVar('avatar_mimetype', $uploader_avatars_img->getMediaType());
+ $obj->setVar('avatar_file', 'avatars/' . $uploader_avatars_img->getSavedFileName());
+ }
+ } else {
+ $file = $system->cleanVars($_POST, 'avatar_file', 'blank.gif', 'string');
+ $obj->setVar('avatar_file', 'avatars/' . $file);
+ }
+ if ($avatar_Handler->insert($obj)) {
+ $xoops->redirect('avatar_system.php', 2, _AM_AVATARS_SAVE);
+ }
+ $xoops->error($obj->getHtmlErrors());
+ $form = $xoops->getModuleForm($obj, 'avatar');
+ $xoops->tpl->assign('form', $form->render());
+ break;
+
+ //Delete
+ case "delete":
+ $admin_page->addItemButton(_AM_AVATARS_ADD, 'avatar_system.php?op=new', 'add');
+ $admin_page->addItemButton(_AM_AVATARS_LIST, 'avatar_system.php', 'list');
+ $admin_page->renderButton();
+ $avatar_id = $system->cleanVars($_REQUEST, 'avatar_id', 0, 'int');
+ $obj = $avatar_Handler->get($avatar_id);
+ if (isset($_POST["ok"]) && $_POST["ok"] == 1) {
+ if (!$xoops->security->check()) {
+ $xoops->redirect("avatar_system.php", 3, implode(",", $xoops->security->getErrors()));
+ }
+ if ($avatar_Handler->delete($obj)) {
+ // Delete file
+ $file = $obj->getVar('avatar_file');
+ if (is_file(XOOPS_UPLOAD_PATH . '/' . $file)) {
+ chmod(XOOPS_UPLOAD_PATH . '/' . $file, 0777);
+ unlink(XOOPS_UPLOAD_PATH . '/' . $file);
+ }
+ // Update member profil
+ $xoops->db->query("UPDATE " . $xoops->db->prefix('users') . " SET user_avatar='blank.gif' WHERE user_avatar='" . $file . "'");
+ $xoops->redirect("avatar_system.php", 2, _AM_AVATARS_SAVE);
+ } else {
+ $xoops->error($obj->getHtmlErrors());
+ }
+ } else {
+ if ($avatar_id > 0) {
+ // Define Stylesheet
+ $xoops->theme->addStylesheet('modules/system/css/admin.css');
+ $msg = '<div class="spacer"><img src="' . XOOPS_UPLOAD_URL . '/' . $obj->getVar('avatar_file', 's') . '" alt="" /></div><div class="txtcenter bold">' . $obj->getVar('avatar_name', 's') . '</div>' . _AM_AVATARS_SUREDEL;
+ // Display message
+ $xoops->confirm(array('ok' => 1, 'op' => 'delete', 'avatar_id' => $avatar_id), 'avatar_system.php', $msg);
+ } else {
+ $xoops->redirect('avatar_system.php', 1, _AM_SYSTEM_DBERROR);
+ }
+ }
+ break;
+
+ case "update_display":
+ $avatar_id = $system->cleanVars($_POST, 'avatar_id', 0, 'int');
+ if ($avatar_id > 0) {
+ $obj = $avatar_Handler->get($avatar_id);
+ $old = $obj->getVar('avatar_display');
+ $obj->setVar('avatar_display', !$old);
+ if ($avatar_Handler->insert($obj)) {
+ exit;
+ }
+ echo $obj->getHtmlErrors();
+ }
+ break;
+}
+$xoops->footer();
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/avatar_system.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/header.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/header.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/header.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,25 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Grégory (AKA Mage)
+ * @version $Id$
+ */
+require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/include/cp_header.php';
+
+$xoops = Xoops::getInstance();
+XoopsLoad::load('system', 'system');
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/header.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.html
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.html (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.html 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1 @@
+ <script>history.go(-1);</script>
\ No newline at end of file
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,72 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Grégory (AKA Mage)
+ * @version $Id$
+ */
+include dirname(__FILE__) . '/header.php';
+// Get avatars handler
+$avatar_Handler = $xoops->getHandlerAvatar();
+
+$xoops->header();
+// avatars not display system
+$criteria = new CriteriaCompo();
+$criteria->add(new Criteria('avatar_display', 0));
+$criteria->add(new Criteria('avatar_type', 'S'));
+$avatars_notdisplay_s = $avatar_Handler->getCount($criteria);
+// avatars display system
+$criteria = new CriteriaCompo();
+$criteria->add(new Criteria('avatar_display', 0, '!='));
+$criteria->add(new Criteria('avatar_type', 'S'));
+$avatars_display_s = $avatar_Handler->getCount($criteria);
+// total avatars system
+$avatars_total_s = $avatars_notdisplay_s + $avatars_display_s;
+// avatars not display custom
+$criteria = new CriteriaCompo();
+$criteria->add(new Criteria('avatar_display', 0));
+$criteria->add(new Criteria('avatar_type', 'C'));
+$avatars_notdisplay_c = $avatar_Handler->getCount($criteria);
+// avatars display custom
+$criteria = new CriteriaCompo();
+$criteria->add(new Criteria('avatar_display', 0, '!='));
+$criteria->add(new Criteria('avatar_type', 'C'));
+$avatars_display_c = $avatar_Handler->getCount($criteria);
+// total avatars custom
+$avatars_total_c = $avatars_notdisplay_c + $avatars_display_c;
+// folder path
+$folder_path = XOOPS_ROOT_PATH . '/uploads/avatars';
+
+$admin_page = new XoopsModuleAdmin();
+$admin_page->renderNavigation('index.php');
+
+$admin_page->addInfoBox(_MI_AVATARS_SYSTEM, 'avatar_system');
+$admin_page->addInfoBoxLine(sprintf(_AM_AVATARS_NBTOTAL_S, $avatars_total_s), 'avatar_system');
+$admin_page->addInfoBoxLine(sprintf(_AM_AVATARS_NBDISPLAY_S, '<span class="green">' . $avatars_display_s . '</span>'), 'avatar_system');
+$admin_page->addInfoBoxLine(sprintf(_AM_AVATARS_NBNOTDISPLAY_S, '<span class="red">' . $avatars_notdisplay_s . '</span>'), 'avatar_system');
+
+$admin_page->addInfoBox(_MI_AVATARS_CUSTOM, 'avatar_custom');
+$admin_page->addInfoBoxLine(sprintf(_AM_AVATARS_NBTOTAL_C, $avatars_total_c), 'avatar_custom');
+$admin_page->addInfoBoxLine(sprintf(_AM_AVATARS_NBDISPLAY_C, '<span class="green">' . $avatars_display_c . '</span>'), 'avatar_custom');
+$admin_page->addInfoBoxLine(sprintf(_AM_AVATARS_NBNOTDISPLAY_C, '<span class="red">' . $avatars_notdisplay_c . '</span>'), 'avatar_custom');
+
+$admin_page->addConfigBoxLine($folder_path, 'folder');
+$admin_page->addConfigBoxLine(array($folder_path, '777'), 'chmod');
+
+$admin_page->renderIndex();
+
+$xoops->footer();
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/index.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/menu.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/menu.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/menu.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,40 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Grégory (AKA Mage)
+ * @version $Id$
+ */
+$pathIcon32 = '../../media/xoops/images/icons/32/';
+
+$adminmenu = array();
+$i = 1;
+$adminmenu[$i]['title'] = _MI_AVATARS_INDEX;
+$adminmenu[$i]['link'] = "admin/index.php";
+$adminmenu[$i]['icon'] = $pathIcon32 . 'home.png';
+$i++;
+$adminmenu[$i]['title'] = _MI_AVATARS_SYSTEM;
+$adminmenu[$i]['link'] = "admin/avatar_system.php";
+$adminmenu[$i]['icon'] = $pathIcon32 . 'avatar_system.png';
+$i++;
+$adminmenu[$i]['title'] = _MI_AVATARS_CUSTOM;
+$adminmenu[$i]['link'] = "admin/avatar_custom.php";
+$adminmenu[$i]['icon'] = $pathIcon32 . 'avatar_custom.png';
+$i++;
+$adminmenu[$i]['title'] = _MI_AVATARS_ABOUT;
+$adminmenu[$i]['link'] = 'admin/about.php';
+$adminmenu[$i]['icon'] = $pathIcon32 . 'about.png';
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/admin/menu.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class
___________________________________________________________________
Added: tsvn:autoprops
+ *.php = svn:executable=*;svn:keywords=Author Date Id Rev URL;
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form
___________________________________________________________________
Added: tsvn:autoprops
+ *.php = svn:executable=*;svn:keywords=Author Date Id Rev URL;
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/avatar.php
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/avatar.php (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/avatar.php 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,71 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ 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.
+*/
+
+/**
+ * avatars module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package avatar
+ * @since 2.6.0
+ * @author Mage Gr\xE9gory (AKA Mage)
+ * @version $Id$
+ */
+
+defined('XOOPS_ROOT_PATH') or die('Restricted access');
+
+class AvatarsAvatarForm extends XoopsThemeForm
+{
+ public function __construct(XoopsAvatar &$obj)
+ {
+ if ($obj->isNew()) {
+ $blank_img = 'blank.gif';
+ } else {
+ $blank_img = str_replace('avatars/', '', $obj->getVar('avatar_file', 'e'));
+ }
+ $xoops = Xoops::getInstance();
+ // New and edit form
+ $title = $obj->isNew() ? sprintf(_AM_AVATARS_ADD) : sprintf(_AM_AVATARS_EDIT);
+
+ $action = $_SERVER['REQUEST_URI'];
+ parent::__construct($title , 'avatar_form', $action, "post", true);
+ $this->setExtra('enctype="multipart/form-data"');
+ // Name
+ $this->addElement(new XoopsFormText(_AM_AVATARS_NAME, 'avatar_name', 50, 255, $obj->getVar('avatar_name', 'e')), true);
+ // Upload part
+ $imgtray_img = new XoopsFormElementTray(_AM_AVATARS_FILE, '<br />');
+ $imageselect_img = new XoopsFormSelect(sprintf(_AM_AVATARS_IMAGE_PATH, XOOPS_UPLOAD_PATH . '/avatars/'), 'avatar_file', $blank_img);
+ $image_array_img = XoopsLists::getImgListAsArray(XOOPS_UPLOAD_PATH . '/avatars');
+ $imageselect_img->addOption("$blank_img", $blank_img);
+ foreach ($image_array_img as $image_img) {
+ $imageselect_img->addOption("$image_img", $image_img);
+ }
+ $imageselect_img->setExtra("onchange='showImgSelected(\"xo-avatar-img\", \"avatar_file\", \"avatars\", \"\", \"" . XOOPS_UPLOAD_URL . "\")'");
+ $imgtray_img->addElement($imageselect_img, false);
+ $imgtray_img->addElement(new XoopsFormLabel('', "<br /><img src='" . XOOPS_UPLOAD_URL . "/avatars/" . $blank_img . "' name='image_img' id='xo-avatar-img' alt='' />"));
+ $fileseltray_img = new XoopsFormElementTray('<br />', '<br /><br />');
+ $fileseltray_img->addElement(new XoopsFormFile(_AM_AVATARS_UPLOADS, 'avatar_file', $xoops->getModuleConfig('avatars_imagefilesize')), false);
+ $imgtray_img->addElement($fileseltray_img);
+ $this->addElement($imgtray_img);
+ // Weight
+ $this->addElement(new XoopsFormText(_AM_AVATARS_WEIGHT, 'avatar_weight', 3, 4, $obj->getVar('avatar_weight', 'e')));
+ // Display
+ $this->addElement(new XoopsFormRadioYN(_AM_AVATARS_DISPLAY, 'avatar_display', $obj->getVar('avatar_display', 'e'), _YES, _NO));
+ // Hidden
+ if ($obj->isNew()) {
+ $this->addElement(new XoopsFormHidden('avatar_type', 's'));
+ }
+ $this->addElement(new XoopsFormHidden('op', 'save'));
+ $this->addElement(new XoopsFormHidden('avatar_id', $obj->getVar('avatar_id', 'e')));
+ // Button
+ $this->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
+ }
+}
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/avatar.php
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Rev URL
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/index.html
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/index.html (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/form/index.html 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1 @@
+ <script>history.go(-1);</script>
\ No newline at end of file
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/index.html
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/index.html (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/class/index.html 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1 @@
+ <script>history.go(-1);</script>
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css
___________________________________________________________________
Added: tsvn:autoprops
+ *.php = svn:executable=*;svn:keywords=Author Date Id Rev URL;
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/admin.css
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/admin.css (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/admin.css 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,21 @@
+.cp-avatar {
+ font-family: tahoma, Helvetica, sans-serif;
+ text-align: center;
+ background-color: #f4f4f4;
+ -moz-border-radius: 5px;
+ -khtml-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border: 1px solid #eeeeee;
+ border-radius: 5px;
+ box-shadow: 0 20px 10px -10px rgba(255, 255, 255, 0.3) inset;
+ color: #666666;
+ display: block;
+ float: left;
+ height: 155px !important;
+ margin: 3px;
+ padding: 5px;
+ text-decoration: none;
+ vertical-align: middle;
+ width: 150px !important;
+}
+.xo-thumbimg { height: 120px;}
\ No newline at end of file
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/index.html
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/index.html (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/css/index.html 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1 @@
+ <script>history.go(-1);</script>
\ No newline at end of file
Property changes on: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs
___________________________________________________________________
Added: tsvn:autoprops
+ *.php = svn:executable=*;svn:keywords=Author Date Id Rev URL;
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/changelog.txt
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/changelog.txt (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/changelog.txt 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,3 @@
+Version 0.1
+-------------------
+Create avatars plugin
\ No newline at end of file
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/credits.txt
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/credits.txt (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/credits.txt 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,3 @@
+Credits
+-------------------
+
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/index.html
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/index.html (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/index.html 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1 @@
+<script>history.go(-1);</script>
\ No newline at end of file
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/install.txt
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/install.txt (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/install.txt 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,6 @@
+INSTALL/UNISTALL
+-------------------
+
+No special measures necessary, follow the standard installation process extract the module folder into the ../modules directory. Install the module through Admin -> System Module -> Modules.
+
+Detailed instructions on installing modules are available in the XOOPS Operations Manual (http://goo.gl/adT2i)
\ No newline at end of file
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/lang_diff.txt
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/lang_diff.txt (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/lang_diff.txt 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,7 @@
+LANGUAGE DIFFERENCES
+-------------------
+
+Below are language differences from a version to next version.
+
+Release xxx
+-------------------
Added: XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/licence.txt
===================================================================
--- XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/licence.txt (rev 0)
+++ XoopsCore/branches/2.6.x/2.6.0/htdocs/modules/avatars/docs/licence.txt 2012-01-30 22:41:20 UTC (rev 8841)
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; th...
[truncated message content] |