Changeset 10511 for trunk/include


Ignore:
Timestamp:
Apr 20, 2011, 4:52:52 PM (13 years ago)
Author:
patdenice
Message:

feature:2271
Merge autoupdate plugin into piwigo core.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/ws_functions.inc.php

    r10454 r10511  
    27362736  return false;
    27372737}
     2738
     2739function ws_extensions_update($params, &$service)
     2740{
     2741  if (!is_webmaster())
     2742  {
     2743    return new PwgError(401, l10n('Webmaster status is required.'));
     2744  }
     2745
     2746  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     2747  {
     2748    return new PwgError(403, 'Invalid security token');
     2749  }
     2750
     2751  if (empty($params['type']) or !in_array($params['type'], array('plugins', 'themes', 'languages')))
     2752  {
     2753    return new PwgError(403, "invalid extension type");
     2754  }
     2755
     2756  if (empty($params['id']) or empty($params['revision']))
     2757  {
     2758    return new PwgError(null, 'Wrong parameters');
     2759  }
     2760
     2761  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
     2762  include_once(PHPWG_ROOT_PATH.'admin/include/'.$params['type'].'.class.php');
     2763
     2764  $type = $params['type'];
     2765  $extension_id = $params['id'];
     2766  $revision = $params['revision'];
     2767
     2768  $extension = new $type();
     2769
     2770  if ($type == 'plugins')
     2771  {
     2772    if (isset($extension->db_plugins_by_id[$extension_id]) and $extension->db_plugins_by_id[$extension_id]['state'] == 'active')
     2773    {
     2774      $extension->perform_action('deactivate', $extension_id);
     2775
     2776      redirect(PHPWG_ROOT_PATH
     2777        . 'ws.php'
     2778        . '?method=pwg.extensions.update'
     2779        . '&type=plugins'
     2780        . '&id=' . $extension_id
     2781        . '&revision=' . $revision
     2782        . '&reactivate=true'
     2783        . '&pwg_token=' . get_pwg_token()
     2784        . '&format=json'
     2785      );
     2786    }
     2787   
     2788    $upgrade_status = $extension->extract_plugin_files('upgrade', $revision, $extension_id);
     2789    $extension_name = $extension->fs_plugins[$extension_id]['name'];
     2790
     2791    if (isset($params['reactivate']))
     2792    {
     2793      $extension->perform_action('activate', $extension_id);
     2794    }
     2795  }
     2796  elseif ($type == 'themes')
     2797  {
     2798    $upgrade_status = $extension->extract_theme_files('upgrade', $revision, $extension_id);
     2799    $extension_name = $extension->fs_themes[$extension_id]['name'];
     2800  }
     2801  elseif ($type == 'languages')
     2802  {
     2803    $upgrade_status = $extension->extract_language_files('upgrade', $revision, $extension_id);
     2804    $extension_name = $extension->fs_languages[$extension_id]['name'];
     2805  }
     2806
     2807  global $template;
     2808  $template->delete_compiled_templates();
     2809
     2810  switch ($upgrade_status)
     2811  {
     2812    case 'ok':
     2813      return sprintf(l10n('%s has been successfully updated.'), $extension_name);
     2814
     2815    case 'temp_path_error':
     2816      return new PwgError(null, l10n('Can\'t create temporary file.'));
     2817
     2818    case 'dl_archive_error':
     2819      return new PwgError(null, l10n('Can\'t download archive.'));
     2820
     2821    case 'archive_error':
     2822      return new PwgError(null, l10n('Can\'t read or extract archive.'));
     2823
     2824    default:
     2825      return new PwgError(null, sprintf(l10n('An error occured during extraction (%s).'), $upgrade_status));
     2826  }
     2827}
     2828
     2829function ws_extensions_ignoreupdate($params, &$service)
     2830{
     2831  global $conf;
     2832
     2833  define('IN_ADMIN', true);
     2834  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
     2835
     2836  if (!is_webmaster())
     2837  {
     2838    return new PwgError(401, 'Access denied');
     2839  }
     2840
     2841  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     2842  {
     2843    return new PwgError(403, 'Invalid security token');
     2844  }
     2845
     2846  $conf['updates_ignored'] = unserialize($conf['updates_ignored']);
     2847
     2848  if ($params['reset'])
     2849  {
     2850    $conf['updates_ignored'] = array(
     2851      'plugins'=>array(),
     2852      'themes'=>array(),
     2853      'languages'=>array()
     2854    );
     2855    conf_update_param('updates_ignored', pwg_db_real_escape_string(serialize($conf['updates_ignored'])));
     2856    unset($_SESSION['extensions_need_update']);
     2857    return true;
     2858  }
     2859
     2860  if (empty($params['id']) or empty($params['type']) or !in_array($params['type'], array('plugins', 'themes', 'languages')))
     2861  {
     2862    return new PwgError(403, 'Invalid parameters');
     2863  }
     2864
     2865  // Add or remove extension from ignore list
     2866  if (!in_array($params['id'], $conf['updates_ignored'][$params['type']]))
     2867  {
     2868    array_push($conf['updates_ignored'][$params['type']], $params['id']);
     2869  }
     2870  conf_update_param('updates_ignored', pwg_db_real_escape_string(serialize($conf['updates_ignored'])));
     2871  unset($_SESSION['extensions_need_update']);
     2872  return true;
     2873}
    27382874?>
Note: See TracChangeset for help on using the changeset viewer.