diff --git a/admin/include/functions_plugins.inc.php b/admin/include/functions_plugins.inc.php
index 7bed61904..2860e2d66 100644
--- a/admin/include/functions_plugins.inc.php
+++ b/admin/include/functions_plugins.inc.php
@@ -46,4 +46,22 @@ function get_admin_plugin_menu_link($file)
}
return $url;
}
+
+/**
+ * Set tabsheet for plugins pages.
+ * @param string selected page.
+ */
+function set_plugins_tabsheet($selected)
+{
+ include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
+
+ $link = get_root_url().'admin.php?page=';
+
+ $tabsheet = new tabsheet();
+ $tabsheet->add('plugins_list', l10n('plugins_tab_list'), $link.'plugins_list');
+ $tabsheet->add('plugins_update', l10n('plugins_tab_update'), $link.'plugins_update');
+ $tabsheet->add('plugins_new', l10n('plugins_tab_new'), $link.'plugins_new');
+ $tabsheet->select($selected);
+ $tabsheet->assign();
+}
?>
\ No newline at end of file
diff --git a/admin/include/plugins.class.php b/admin/include/plugins.class.php
index e26e0f3b9..459eb5ef5 100644
--- a/admin/include/plugins.class.php
+++ b/admin/include/plugins.class.php
@@ -28,7 +28,7 @@ class plugins
{
var $fs_plugins = array();
var $db_plugins_by_id = array();
- var $server_plugins = array();
+ var $server_plugins;
/**
* Initialize $fs_plugins and $db_plugins_by_id
@@ -49,7 +49,7 @@ class plugins
* @param string - plugin id
* @param array - errors
*/
- function perform_action($action, $plugin_id, $errors=array())
+ function perform_action($action, $plugin_id)
{
if (isset($this->db_plugins_by_id[$plugin_id]))
{
@@ -57,6 +57,8 @@ class plugins
}
$file_to_include = PHPWG_PLUGINS_PATH . $plugin_id . '/maintain.inc.php';
+ $errors = array();
+
switch ($action)
{
case 'install':
@@ -279,10 +281,6 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"';
{
$this->server_plugins = @unserialize($source);
}
- else
- {
- $this->server_plugins = false;
- }
}
/**
@@ -295,6 +293,9 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"';
case 'date':
krsort($this->server_plugins);
break;
+ case 'revision':
+ usort($this->server_plugins, array($this, 'extension_revision_compare'));
+ break;
case 'name':
uasort($this->server_plugins, array($this, 'extension_name_compare'));
break;
@@ -427,9 +428,18 @@ DELETE FROM ' . PLUGINS_TABLE . ' WHERE id="' . $plugin_id . '"';
*/
function plugin_version_compare($a, $b)
{
- $r = version_compare($a['version'], $b['version']);
- if ($r == 0) return strcasecmp($a['version'], $b['version']);
- else return $r;
+ $pattern = array('/([a-z])/ei', '/\.+/', '/\.\Z|\A\./');
+ $replacement = array( "'.'.intval('\\1', 36).'.'", '.', '');
+
+ $array = preg_replace($pattern, $replacement, array($a['version'], $b['version']));
+
+ return version_compare($array[0], $array[1], '>=');
+ }
+
+ function extension_revision_compare($a, $b)
+ {
+ if ($a['date'] < $b['date']) return 1;
+ else return -1;
}
function extension_name_compare($a, $b)
diff --git a/admin/plugins_list.php b/admin/plugins_list.php
index ac5d5c1a2..18ee8b8ac 100644
--- a/admin/plugins_list.php
+++ b/admin/plugins_list.php
@@ -41,23 +41,16 @@ $plugins = new plugins();
if (isset($_GET['action']) and isset($_GET['plugin']) and !is_adviser())
{
$page['errors'] =
- $plugins->perform_action($_GET['action'], $_GET['plugin'], $page['errors']);
+ $plugins->perform_action($_GET['action'], $_GET['plugin']);
if (empty($page['errors'])) redirect($base_url);
}
//--------------------------------------------------------------------Tabsheet
-include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
-$link = get_root_url().'admin.php?page=';
-$tabsheet = new tabsheet();
-$tabsheet->add('plugins_list', l10n('plugins_tab_list'), $link.'plugins_list');
-$tabsheet->add('plugins_update', l10n('plugins_tab_update'), $link.'plugins_update');
-$tabsheet->add('plugins_new', l10n('plugins_tab_new'), $link.'plugins_new');
-$tabsheet->select($page['page']);
-$tabsheet->assign();
+set_plugins_tabsheet($page['page']);
//---------------------------------------------------------------Order options
-$link .= $page['page'].'&order=';
+$link = get_root_url().'admin.php?page='.$page['page'].'&order=';
$template->assign('order_options',
array(
$link.'name' => l10n('Name'),
diff --git a/admin/plugins_new.php b/admin/plugins_new.php
index 4ca829571..487514876 100644
--- a/admin/plugins_new.php
+++ b/admin/plugins_new.php
@@ -77,20 +77,14 @@ if (isset($_GET['installstatus']))
}
//--------------------------------------------------------------------Tabsheet
-include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
-$link = get_root_url().'admin.php?page=';
-$tabsheet = new tabsheet();
-$tabsheet->add('plugins_list', l10n('plugins_tab_list'), $link.'plugins_list');
-$tabsheet->add('plugins_update', l10n('plugins_tab_update'), $link.'plugins_update');
-$tabsheet->add('plugins_new', l10n('plugins_tab_new'), $link.'plugins_new');
-$tabsheet->select($page['page']);
-$tabsheet->assign();
+set_plugins_tabsheet($page['page']);
//---------------------------------------------------------------Order options
-$link .= $page['page'].'&order=';
+$link = get_root_url().'admin.php?page='.$page['page'].'&order=';
$template->assign('order_options',
array(
$link.'date' => l10n('Post date'),
+ $link.'revision' => l10n('plugins_revisions'),
$link.'name' => l10n('Name'),
$link.'author' => l10n('Author')));
$template->assign('order_selected', $link.$order);
@@ -99,10 +93,11 @@ $template->assign('order_selected', $link.$order);
// | start template output |
// +-----------------------------------------------------------------------+
$plugins->get_server_plugins(true);
-$plugins->sort_server_plugins($order);
-if ($plugins->server_plugins !== false)
+if (is_array($plugins->server_plugins))
{
+ $plugins->sort_server_plugins($order);
+
foreach($plugins->server_plugins as $plugin)
{
$ext_desc = nl2br(htmlspecialchars(strip_tags(
@@ -130,6 +125,7 @@ if ($plugins->server_plugins !== false)
'EXT_DESC' => $ext_desc,
'VERSION' => $plugin['version'],
'VERSION_URL' => PEM_URL.'/revision_view.php?rid='.$plugin['id_revision'],
+ 'DATE' => date('Y-m-d', $plugin['date']),
'VER_DESC' => $ver_desc,
'AUTHOR' => $plugin['author'],
'URL_INSTALL' => $url_auto_install,
diff --git a/admin/plugins_update.php b/admin/plugins_update.php
index 34ab6afce..144d14fbe 100644
--- a/admin/plugins_update.php
+++ b/admin/plugins_update.php
@@ -94,21 +94,14 @@ if (isset($_GET['upgradestatus']) and isset($_GET['plugin']))
}
//--------------------------------------------------------------------Tabsheet
-include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
-$link = get_root_url().'admin.php?page=';
-$tabsheet = new tabsheet();
-$tabsheet->add('plugins_list', l10n('plugins_tab_list'), $link.'plugins_list');
-$tabsheet->add('plugins_update', l10n('plugins_tab_update'), $link.'plugins_update');
-$tabsheet->add('plugins_new', l10n('plugins_tab_new'), $link.'plugins_new');
-$tabsheet->select($page['page']);
-$tabsheet->assign();
+set_plugins_tabsheet($page['page']);
// +-----------------------------------------------------------------------+
// | start template output |
// +-----------------------------------------------------------------------+
$plugins->get_server_plugins();
-if ($plugins->server_plugins !== false)
+if (is_array($plugins->server_plugins))
{
foreach($plugins->fs_plugins as $plugin_id => $fs_plugin)
{
@@ -126,7 +119,7 @@ if ($plugins->server_plugins !== false)
nl2br(htmlspecialchars(strip_tags(
utf8_encode($plugin_info['description'])))));
- if ($plugins->plugin_version_compare($fs_plugin, $plugin_info) >= 0)
+ if ($plugins->plugin_version_compare($fs_plugin, $plugin_info))
{
// Plugin is up to date
$template->append('plugins_uptodate',
diff --git a/language/en_UK/admin.lang.php b/language/en_UK/admin.lang.php
index 48787cd83..884efdba6 100644
--- a/language/en_UK/admin.lang.php
+++ b/language/en_UK/admin.lang.php
@@ -230,7 +230,7 @@ $lang['conf_main_title'] = 'Main';
$lang['conf_nb_comment_page_error'] = 'The number of comments a page must be between 5 and 50 included.';
$lang['config'] = 'Configuration';
$lang['confirm'] = 'confirm';
-$lang['date'] = 'date';
+$lang['Date'] = 'Date';
$lang['delete category'] = 'delete category';
$lang['description'] = 'description';
$lang['dissociate from category'] = 'dissociate from category';
@@ -626,6 +626,7 @@ $lang['plugins_description'] = 'Version: %s
Date: %s
version';
+/* TODO */ $lang['plugins_new_version'] = 'Available
version';
+/* TODO */ $lang['plugins_auto_update'] = 'Automatic upgrade';
+/* TODO */ $lang['plugins_auto_install'] = 'Automatic installation';
+/* TODO */ $lang['plugins_download'] = 'Download file';
+/* TODO */ $lang['plugins_description'] = 'Version: %s
Date: %s
%s';
+/* TODO */ $lang['plugins_tab_list'] = 'Plugin list';
+/* TODO */ $lang['plugins_tab_update'] = 'Check for updates';
+/* TODO */ $lang['plugins_tab_new'] = 'Other plugins';
+/* TODO */ $lang['plugins_revisions'] = 'Last revisions';
+/* TODO */ $lang['plugins_delete'] = 'Delete';
+/* TODO */ $lang['plugins_confirm_delete'] = 'Are you sure you want to delete this plugin?';
+/* TODO */ $lang['plugins_confirm_install'] = 'Are you sure you want to install this plugin?';
+/* TODO */ $lang['plugins_confirm_upgrade'] = 'Are you sur to install this upgrade? You must verify if this version does not need uninstallation.';
+/* TODO */ $lang['plugins_upgrade_ok'] = '%s has been successfully upgraded.';
+/* TODO */ $lang['plugins_install_ok'] = 'Plugin has been successfully copied';
+/* TODO */ $lang['plugins_install_need_activate'] = 'You might go to plugin list to install and activate it.';
+/* TODO */ $lang['plugins_temp_path_error'] = 'Can\'t create temporary file.';
+/* TODO */ $lang['plugins_dl_archive_error'] = 'Can\'t download archive.';
+/* TODO */ $lang['plugins_archive_error'] = 'Can\'t read or extract archive.';
+/* TODO */ $lang['plugins_extract_error'] = 'An error occured during extraction (%s).';
+/* TODO */ $lang['plugins_check_chmod'] = 'Please check "plugins" folder and sub-folders permissions (CHMOD).';
+/* TODO */ $lang['plugins_server_error'] = 'Can\'t connect to server.';
+
/* TODO */ $lang['Purge compiled templates'] = 'Purge compiled templates';
?>
diff --git a/language/fr_FR/admin.lang.php b/language/fr_FR/admin.lang.php
index d374609bf..36ee740dc 100644
--- a/language/fr_FR/admin.lang.php
+++ b/language/fr_FR/admin.lang.php
@@ -230,7 +230,7 @@ $lang['conf_main_title'] = 'Principale';
$lang['conf_nb_comment_page_error'] = 'Le nombre de commentaires d\'utilisateurs par page doit être compris entre 5 et 50.';
$lang['config'] = 'Configuration';
$lang['confirm'] = 'confirmer';
-$lang['date'] = 'date';
+$lang['Date'] = 'Date';
$lang['delete category'] = 'supprimer la catégorie';
$lang['description'] = 'description';
$lang['dissociate from category'] = 'dissocier de la catégorie';
@@ -626,6 +626,7 @@ $lang['plugins_description'] = 'Version: %s
Date: %s
version';
+/* TODO */ $lang['plugins_new_version'] = 'Available
version';
+/* TODO */ $lang['plugins_auto_update'] = 'Automatic upgrade';
+/* TODO */ $lang['plugins_auto_install'] = 'Automatic installation';
+/* TODO */ $lang['plugins_download'] = 'Download file';
+/* TODO */ $lang['plugins_description'] = 'Version: %s
Date: %s
%s';
+/* TODO */ $lang['plugins_tab_list'] = 'Plugin list';
+/* TODO */ $lang['plugins_tab_update'] = 'Check for updates';
+/* TODO */ $lang['plugins_tab_new'] = 'Other plugins';
+/* TODO */ $lang['plugins_revisions'] = 'Last revisions';
+/* TODO */ $lang['plugins_delete'] = 'Delete';
+/* TODO */ $lang['plugins_confirm_delete'] = 'Are you sure you want to delete this plugin?';
+/* TODO */ $lang['plugins_confirm_install'] = 'Are you sure you want to install this plugin?';
+/* TODO */ $lang['plugins_confirm_upgrade'] = 'Are you sur to install this upgrade? You must verify if this version does not need uninstallation.';
+/* TODO */ $lang['plugins_upgrade_ok'] = '%s has been successfully upgraded.';
+/* TODO */ $lang['plugins_install_ok'] = 'Plugin has been successfully copied';
+/* TODO */ $lang['plugins_install_need_activate'] = 'You might go to plugin list to install and activate it.';
+/* TODO */ $lang['plugins_temp_path_error'] = 'Can\'t create temporary file.';
+/* TODO */ $lang['plugins_dl_archive_error'] = 'Can\'t download archive.';
+/* TODO */ $lang['plugins_archive_error'] = 'Can\'t read or extract archive.';
+/* TODO */ $lang['plugins_extract_error'] = 'An error occured during extraction (%s).';
+/* TODO */ $lang['plugins_check_chmod'] = 'Please check "plugins" folder and sub-folders permissions (CHMOD).';
+/* TODO */ $lang['plugins_server_error'] = 'Can\'t connect to server.';
+
/* TODO */ $lang['Purge compiled templates'] = 'Purge compiled templates';
?>
diff --git a/template/yoga/admin/history.tpl b/template/yoga/admin/history.tpl
index e3ccc1197..3ed4c94b3 100644
--- a/template/yoga/admin/history.tpl
+++ b/template/yoga/admin/history.tpl
@@ -116,7 +116,7 @@
| {'date'|@translate} | +{'Date'|@translate} | {'time'|@translate} | {'user'|@translate} | {'IP'|@translate} | diff --git a/template/yoga/admin/plugins_new.tpl b/template/yoga/admin/plugins_new.tpl index 90167e2e9..fa22aaa26 100644 --- a/template/yoga/admin/plugins_new.tpl +++ b/template/yoga/admin/plugins_new.tpl @@ -4,7 +4,7 @@ {'Sort order'|@translate} : -
|---|