| 1 | <?php |
|---|
| 2 | /* |
|---|
| 3 | Plugin Name: Thumbnails Regeneration |
|---|
| 4 | Version: 2.2.0 |
|---|
| 5 | Description: Regenerate thumbnails |
|---|
| 6 | Author: P@t |
|---|
| 7 | */ |
|---|
| 8 | |
|---|
| 9 | if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); |
|---|
| 10 | define('REGENERATE_THUMBNAILS_PATH' , PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/'); |
|---|
| 11 | |
|---|
| 12 | add_event_handler('loc_begin_element_set_global', 'rg_element_set_global_add_action'); |
|---|
| 13 | add_event_handler('element_set_global_action', 'rg_element_set_global_perform_action'); |
|---|
| 14 | add_event_handler('ws_add_methods', 'add_regenerate_thumbnails_method'); |
|---|
| 15 | |
|---|
| 16 | function 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 | |
|---|
| 61 | function 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 | |
|---|
| 71 | function 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 | |
|---|
| 90 | function ws_images_regenerateThumbnail($params, &$service) |
|---|
| 91 | { |
|---|
| 92 | global $conf; |
|---|
| 93 | |
|---|
| 94 | if (!is_admin()) |
|---|
| 95 | return new PwgError(401, 'Access denied'); |
|---|
| 96 | |
|---|
| 97 | $query=' |
|---|
| 98 | SELECT id, path |
|---|
| 99 | FROM '.IMAGES_TABLE.' |
|---|
| 100 | WHERE 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 | |
|---|
| 128 | function regenerate_prefilter($content, $smarty) |
|---|
| 129 | { |
|---|
| 130 | return str_replace('{$thumbnail.TN_SRC}', '{$thumbnail.TN_SRC}?rand='.md5(uniqid(rand(), true)), $content); |
|---|
| 131 | } |
|---|
| 132 | |
|---|
| 133 | ?> |
|---|