source: extensions/regenerateThumbnails/main.inc.php @ 9917

Last change on this file since 9917 was 9917, checked in by patdenice, 13 years ago

Add Thumbnails Renegeration plugin.

File size: 3.8 KB
Line 
1<?php
2/*
3Plugin Name: Thumbnails Regeneration
4Version: 2.2.0
5Description: Regenerate thumbnails
6Author: P@t
7*/
8
9if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
10define('REGENERATE_THUMBNAILS_PATH' , PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/');
11
12add_event_handler('loc_begin_element_set_global', 'rg_element_set_global_add_action');
13add_event_handler('element_set_global_action', 'rg_element_set_global_perform_action');
14add_event_handler('ws_add_methods', 'add_regenerate_thumbnails_method');
15
16function rg_element_set_global_add_action()
17{
18  global $template, $conf, $page, $pwg_loaded_plugins;
19
20  load_language('plugin.lang', REGENERATE_THUMBNAILS_PATH);
21  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
22
23  $template->set_filename('regenerateThumbnails', realpath(REGENERATE_THUMBNAILS_PATH.'element_set_global_action.tpl'));
24
25  if (isset($_GET['regeneratedThumbnail']))
26  {
27    $template->delete_compiled_templates();
28    array_push($page['infos'], sprintf(l10n('%s thumbnails have been regenerated'), $_GET['regeneratedThumbnail']));
29    unset($_SESSION['regenerateThumbnail']);
30  }
31
32  foreach (get_upload_form_config() as $param_shortname => $param)
33  {
34    $param_name = 'upload_form_'.$param_shortname;
35    $form_values[$param_shortname] = $conf[$param_name];
36  }
37
38  if (isset($pwg_loaded_plugins['square_thumbnails']))
39  {
40    load_language('plugin.lang', SQUARE_THUMB_PATH);
41    $template->assign(array('SQUARE' => @$conf['upload_form_thumb_square']));
42  }
43
44  $template->assign(array(
45    'upload_form_settings' => $form_values,
46    'all_elements' => $page['cat_elements_id'],
47    'redirect_url' => get_root_url().'admin.php?page='.$_GET['page'],
48    )
49  );
50
51  $template->append('element_set_global_plugins_actions', array(
52    'ID' => 'regenerateThumbnails',
53    'NAME' => l10n('Regenerate Thumbnails'),
54    'CONTENT' => $template->parse('regenerateThumbnails', true),
55    )
56  );
57
58  $template->set_prefilter('batch_manager_global', 'regenerate_prefilter');
59}
60
61function rg_element_set_global_perform_action($action)
62{
63  global $page;
64
65  if ($action == 'my_action')
66  {
67    array_push($page['infos'], 'yo');
68  }
69}
70
71function add_regenerate_thumbnails_method($arr)
72{
73  global $conf;
74
75  $service = &$arr[0];
76  $service->addMethod(
77    'pwg.images.regenerateThumbnail',
78    'ws_images_regenerateThumbnail',
79    array(
80      'image_id'  => array(),
81      'maxwidth'  => array('default'=>$conf['upload_form_thumb_maxwidth']),
82      'maxheight' => array('default'=>$conf['upload_form_thumb_maxheight']),
83      'quality'   => array('default'=>$conf['upload_form_thumb_quality']),
84      'square'    => array('default'=>@$conf['upload_form_thumb_square']),
85    ),
86    'Regenerate a thumbnail with given arguments.'
87  );
88}
89
90function ws_images_regenerateThumbnail($params, &$service)
91{
92  global $conf;
93
94  if (!is_admin())
95    return new PwgError(401, 'Access denied');
96
97  $query='
98SELECT id, path
99FROM '.IMAGES_TABLE.'
100WHERE id = '.(int)$params['image_id'].'
101;';
102
103  $image = pwg_db_fetch_assoc(pwg_query($query));
104  if ($image == null)
105    return new PwgError(404, "image_id not found");
106
107  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
108
109  if ($params['square'] == 'true' or $params['square'] == 'false')
110    $params['square'] = get_boolean($params['square']);
111  if (!$params['square'])
112    remove_event_handler('upload_thumbnail_resize', 'upload_square_resize', 40);
113 
114  trigger_event(
115    'upload_thumbnail_resize',
116    false,
117    $image['path'],
118    file_path_for_type($image['path'], 'thumb'),
119    $params['maxwidth'],
120    $params['maxheight'],
121    $params['quality'],
122    true
123    );
124
125  return true;
126}
127
128function regenerate_prefilter($content, $smarty)
129{
130  return str_replace('{$thumbnail.TN_SRC}', '{$thumbnail.TN_SRC}?rand='.md5(uniqid(rand(), true)), $content);
131}
132
133?>
Note: See TracBrowser for help on using the repository browser.