Version Description
- Fix: watermarking class optimised to avoid out-of-memory errors
- Fix: settings are now kept after deactivation
- Fix: many small bugs in a code
- Added: bunch of new text placeholders
- small changes in UI
Download this release
Release Info
Developer | szaleq |
Plugin | Easy Watermark |
Version | 0.5.2 |
Comparing to | |
See all releases |
Code changes from version 0.5.1 to 0.5.2
- classes/class-ew-plugin-core.php +1 -1
- classes/class-ew-plugin.php +138 -29
- classes/class-ew-settings.php +41 -1
- index.php +4 -4
- lib/EasyWatermark.php +85 -47
- readme.txt +10 -3
- views/easy-watermark-page.php +2 -2
- views/help_tab_placeholders_author.php +8 -0
- views/help_tab_placeholders_general.php +9 -0
- views/help_tab_placeholders_image.php +6 -0
- views/help_tab_placeholders_user.php +8 -0
- views/placeholders.php +7 -0
- views/settings-form-general.php +1 -1
- views/settings-form-text.php +7 -11
- views/settings-page.php +1 -0
- views/settings-sidebar.php +3 -2
classes/class-ew-plugin-core.php
CHANGED
@@ -23,7 +23,7 @@ class EW_Plugin_Core extends EW_Pluggable
|
|
23 |
/**
|
24 |
* @var string plugin version
|
25 |
*/
|
26 |
-
protected static $version = '0.5.
|
27 |
|
28 |
/**
|
29 |
* @var string plugin class name
|
23 |
/**
|
24 |
* @var string plugin version
|
25 |
*/
|
26 |
+
protected static $version = '0.5.2';
|
27 |
|
28 |
/**
|
29 |
* @var string plugin class name
|
classes/class-ew-plugin.php
CHANGED
@@ -34,6 +34,26 @@ class EW_Plugin extends EW_Plugin_Core
|
|
34 |
*/
|
35 |
private $defaultPostTypes = array('post', 'page', 'unattached');
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
/**
|
38 |
* Loads textdomain for translations,
|
39 |
* adds wordpress actions
|
@@ -52,7 +72,7 @@ class EW_Plugin extends EW_Plugin_Core
|
|
52 |
if(is_admin()){
|
53 |
$this->add_action('admin_menu', 'add_media_page')
|
54 |
->add_filter('media_row_actions', 'add_media_row_action', 10, 3)
|
55 |
-
->add_filter('attachment_fields_to_edit', 'add_attachment_field', 10, 2)
|
56 |
->add_action('admin_notices')
|
57 |
->add_action('admin_head-upload.php', 'add_bulk_action_script')
|
58 |
->add_action('admin_action_ew_add_watermark', 'bulk_action_handler')
|
@@ -63,6 +83,16 @@ class EW_Plugin extends EW_Plugin_Core
|
|
63 |
}
|
64 |
|
65 |
$this->test_GD();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
|
68 |
/**
|
@@ -231,6 +261,10 @@ class EW_Plugin extends EW_Plugin_Core
|
|
231 |
if(!self::isGDEnabled() && get_current_screen()->id == 'plugins'){
|
232 |
echo '<div class="error"><p>'.__('Easy Watermark is active, but requires GD library to work. Please enable this extension.', 'easy-watermark').' <a href="http://www.php.net/manual/en/image.setup.php" target="_blank">'.__('Read more', 'easy-watermark').'</p></div>';
|
233 |
}
|
|
|
|
|
|
|
|
|
234 |
}
|
235 |
|
236 |
/**
|
@@ -292,7 +326,7 @@ EOD;
|
|
292 |
* @return array
|
293 |
*/
|
294 |
public function add_attachment_field($form_fields, $post){
|
295 |
-
if($this->isGDEnabled() && in_array($post->post_mime_type, $this->allowedMime)){
|
296 |
// Add link if it's supported image type
|
297 |
$form_fields = array_reverse($form_fields);
|
298 |
$form_fields['easy-watermark'] = array(
|
@@ -324,19 +358,23 @@ EOD;
|
|
324 |
|
325 |
check_admin_referer('bulk-media');
|
326 |
$result = true;
|
|
|
327 |
foreach($_REQUEST['media'] as $entry){
|
328 |
-
if(!$this->watermark_single((int) $entry))
|
329 |
$result = false;
|
330 |
}
|
331 |
|
332 |
if(isset($_GET['_wp_http_referer'])){
|
333 |
$referer = $_GET['_wp_http_referer'];
|
334 |
-
if(strpos($referer, '?'))
|
335 |
-
$referer .= '&';
|
336 |
-
else
|
337 |
-
$referer .= '?';
|
|
|
|
|
338 |
|
339 |
-
$
|
|
|
340 |
|
341 |
wp_redirect($referer);
|
342 |
exit;
|
@@ -432,7 +470,7 @@ EOD;
|
|
432 |
global $wpdb;
|
433 |
|
434 |
$images = $wpdb->get_results("
|
435 |
-
SELECT ID, post_mime_type, post_author
|
436 |
FROM $wpdb->posts
|
437 |
WHERE post_type = 'attachment'
|
438 |
AND post_mime_type LIKE 'image/%'
|
@@ -441,9 +479,13 @@ EOD;
|
|
441 |
$output = '';
|
442 |
$skipped = 0;
|
443 |
if($images && ($this->settings['image']['watermark_path'] != '' || $this->settings['text']['text'])){
|
|
|
|
|
444 |
foreach($images as $img){
|
|
|
|
|
445 |
$filepath = get_attached_file($img->ID);
|
446 |
-
if(!current_user_can('edit_others_posts') && wp_get_current_user()->ID != $img->
|
447 |
// No permission to edit this image
|
448 |
$output .= sprintf(__('No permission to edit file %s. Skipping...', 'easy-watermark'), '<strong>'.$filepath.'</strong>').'<br/>';
|
449 |
$skipped++;
|
@@ -488,6 +530,13 @@ EOD;
|
|
488 |
|
489 |
if($this->settings['image']['watermark_path'] != $filepath){
|
490 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
491 |
$sizes = $meta['sizes'];
|
492 |
$sizes['full'] = array(
|
493 |
'file' => $meta['file'],
|
@@ -511,6 +560,8 @@ EOD;
|
|
511 |
return $return;
|
512 |
}
|
513 |
|
|
|
|
|
514 |
return false;
|
515 |
}
|
516 |
|
@@ -531,7 +582,11 @@ EOD;
|
|
531 |
->setOutputMime($imageType);
|
532 |
|
533 |
if(!$ew->create() || !$ew->saveOutput()){
|
534 |
-
$this->
|
|
|
|
|
|
|
|
|
535 |
return false;
|
536 |
}
|
537 |
|
@@ -654,25 +709,32 @@ echo '<style type="text/css" media="screen">
|
|
654 |
}
|
655 |
|
656 |
private function display_column_and_metabox($post_id, $page = 'library'){
|
657 |
-
$
|
658 |
-
|
659 |
-
|
|
|
660 |
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
|
665 |
-
|
666 |
-
|
667 |
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
|
|
|
|
|
|
673 |
}
|
|
|
674 |
|
675 |
-
|
|
|
|
|
676 |
}
|
677 |
}
|
678 |
|
@@ -681,13 +743,27 @@ echo '<style type="text/css" media="screen">
|
|
681 |
*
|
682 |
* @return void
|
683 |
*/
|
684 |
-
public static function install(
|
685 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
687 |
foreach($settings as $sectionName => $section){
|
688 |
update_option(self::$pluginSlug.'-settings-'.$sectionName, $section);
|
689 |
}
|
690 |
-
update_option(self::$pluginSlug.'-version', self::$version);
|
691 |
}
|
692 |
|
693 |
/**
|
@@ -778,7 +854,15 @@ echo '<style type="text/css" media="screen">
|
|
778 |
$settings['image'] = array_merge($defaults['image'], $settings['image']);
|
779 |
$settings['text'] = array_merge($defaults['text'], $settings['text']);
|
780 |
|
781 |
-
self::
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
782 |
}
|
783 |
|
784 |
/**
|
@@ -923,26 +1007,51 @@ echo '<style type="text/css" media="screen">
|
|
923 |
$date = !empty($this->settings['general']['date_format']) ? $this->settings['general']['date_format'] : get_option('date_format');
|
924 |
$time = !empty($this->settings['general']['time_format']) ? $this->settings['general']['time_format'] : get_option('time_format');
|
925 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
926 |
$placeholders = array(
|
927 |
'%user%',
|
928 |
'%user_name%',
|
929 |
'%user_email%',
|
|
|
|
|
|
|
|
|
|
|
930 |
'%admin_email%',
|
931 |
'%blog_name%',
|
932 |
'%blog_url%',
|
933 |
'%date%',
|
934 |
'%time%',
|
|
|
|
|
935 |
);
|
936 |
|
937 |
$replacements = array(
|
938 |
$user->user_login,
|
939 |
$user->display_name,
|
940 |
$user->user_email,
|
|
|
|
|
|
|
|
|
|
|
941 |
get_bloginfo('admin_email'),
|
942 |
get_bloginfo('name'),
|
943 |
home_url(),
|
944 |
date($date),
|
945 |
date($time),
|
|
|
|
|
946 |
);
|
947 |
|
948 |
return str_replace($placeholders, $replacements, $text);
|
34 |
*/
|
35 |
private $defaultPostTypes = array('post', 'page', 'unattached');
|
36 |
|
37 |
+
/**
|
38 |
+
* @var array
|
39 |
+
*/
|
40 |
+
private $notices = array();
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var object post object for an image
|
44 |
+
*/
|
45 |
+
private $currentImage;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var array messages for different error codes from EasyWatermark class
|
49 |
+
*/
|
50 |
+
private $ewErrors = array();
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @var boolean
|
54 |
+
*/
|
55 |
+
private $isBulkAction = false;
|
56 |
+
|
57 |
/**
|
58 |
* Loads textdomain for translations,
|
59 |
* adds wordpress actions
|
72 |
if(is_admin()){
|
73 |
$this->add_action('admin_menu', 'add_media_page')
|
74 |
->add_filter('media_row_actions', 'add_media_row_action', 10, 3)
|
75 |
+
// ->add_filter('attachment_fields_to_edit', 'add_attachment_field', 10, 2)
|
76 |
->add_action('admin_notices')
|
77 |
->add_action('admin_head-upload.php', 'add_bulk_action_script')
|
78 |
->add_action('admin_action_ew_add_watermark', 'bulk_action_handler')
|
83 |
}
|
84 |
|
85 |
$this->test_GD();
|
86 |
+
|
87 |
+
$this->ewErrors = array(
|
88 |
+
EasyWatermark::ERROR_SAME_IMAGE_PATHS => __('Same image and watermark paths.', 'easy-watermark'),
|
89 |
+
EasyWatermark::ERROR_NO_WATERMARK_SET => __('No watermark image or text specified.', 'easy-watermark'),
|
90 |
+
EasyWatermark::ERROR_NO_INPUT_IMAGE => __('No input image specified.', 'easy-watermark'),
|
91 |
+
EasyWatermark::ERROR_NOT_ALLOWED_TYPE => __('Not allowed image type.', 'easy-watermark'),
|
92 |
+
EasyWatermark::ERROR_NO_OUTPUT_FILE_SET => __('No output file specified.', 'easy-watermark'),
|
93 |
+
EasyWatermark::ERROR_NOT_ALLOWED_OUTPUT_TYPE => __('Not allowed output type.', 'easy-watermark'),
|
94 |
+
EasyWatermark::ERROR_UNKNOWN => __('Could not apply watermark.', 'easy-watermark')
|
95 |
+
);
|
96 |
}
|
97 |
|
98 |
/**
|
261 |
if(!self::isGDEnabled() && get_current_screen()->id == 'plugins'){
|
262 |
echo '<div class="error"><p>'.__('Easy Watermark is active, but requires GD library to work. Please enable this extension.', 'easy-watermark').' <a href="http://www.php.net/manual/en/image.setup.php" target="_blank">'.__('Read more', 'easy-watermark').'</p></div>';
|
263 |
}
|
264 |
+
|
265 |
+
foreach($this->notices as $msg){
|
266 |
+
echo '<div class="' . $msg[0] . '"><p>' . $msg[1] . '</p></div>';
|
267 |
+
}
|
268 |
}
|
269 |
|
270 |
/**
|
326 |
* @return array
|
327 |
*/
|
328 |
public function add_attachment_field($form_fields, $post){
|
329 |
+
if($this->isGDEnabled() && in_array($post->post_mime_type, $this->allowedMime) && $post->ID != $this->settings['image']['watermark_id']){
|
330 |
// Add link if it's supported image type
|
331 |
$form_fields = array_reverse($form_fields);
|
332 |
$form_fields['easy-watermark'] = array(
|
358 |
|
359 |
check_admin_referer('bulk-media');
|
360 |
$result = true;
|
361 |
+
$this->isBulkAction = true;
|
362 |
foreach($_REQUEST['media'] as $entry){
|
363 |
+
if(!$this->watermark_single((int) $entry) && $this->error != 99)
|
364 |
$result = false;
|
365 |
}
|
366 |
|
367 |
if(isset($_GET['_wp_http_referer'])){
|
368 |
$referer = $_GET['_wp_http_referer'];
|
369 |
+
// if(strpos($referer, '?'))
|
370 |
+
// $referer .= '&';
|
371 |
+
// else
|
372 |
+
// $referer .= '?';
|
373 |
+
|
374 |
+
// $referer .= $result ? 'watermarked=1' : 'ew_error=2';
|
375 |
|
376 |
+
$args = $result ? array('watermarked' => '1') : array('ew_error' => $this->error);
|
377 |
+
$referer = add_query_arg($args, remove_query_arg(array('ew_error', 'watermarked'), $referer));
|
378 |
|
379 |
wp_redirect($referer);
|
380 |
exit;
|
470 |
global $wpdb;
|
471 |
|
472 |
$images = $wpdb->get_results("
|
473 |
+
SELECT ID, post_mime_type, post_author, post_title
|
474 |
FROM $wpdb->posts
|
475 |
WHERE post_type = 'attachment'
|
476 |
AND post_mime_type LIKE 'image/%'
|
479 |
$output = '';
|
480 |
$skipped = 0;
|
481 |
if($images && ($this->settings['image']['watermark_path'] != '' || $this->settings['text']['text'])){
|
482 |
+
$this->isBulkAction = true;
|
483 |
+
|
484 |
foreach($images as $img){
|
485 |
+
$this->currentImage = $img;
|
486 |
+
|
487 |
$filepath = get_attached_file($img->ID);
|
488 |
+
if(!current_user_can('edit_others_posts') && wp_get_current_user()->ID != $img->post_author){
|
489 |
// No permission to edit this image
|
490 |
$output .= sprintf(__('No permission to edit file %s. Skipping...', 'easy-watermark'), '<strong>'.$filepath.'</strong>').'<br/>';
|
491 |
$skipped++;
|
530 |
|
531 |
if($this->settings['image']['watermark_path'] != $filepath){
|
532 |
|
533 |
+
$this->currentImage = $post;
|
534 |
+
|
535 |
+
if($this->isBulkAction){
|
536 |
+
// Refresh watermark text for each image
|
537 |
+
$this->getEasyWatermark()->setText($this->parseText($this->settings['text']['text']));
|
538 |
+
}
|
539 |
+
|
540 |
$sizes = $meta['sizes'];
|
541 |
$sizes['full'] = array(
|
542 |
'file' => $meta['file'],
|
560 |
return $return;
|
561 |
}
|
562 |
|
563 |
+
$this->error = 99;
|
564 |
+
|
565 |
return false;
|
566 |
}
|
567 |
|
582 |
->setOutputMime($imageType);
|
583 |
|
584 |
if(!$ew->create() || !$ew->saveOutput()){
|
585 |
+
$error = $this->ewErrors[$ew->getError()];
|
586 |
+
if($this->isBulkAction){
|
587 |
+
$error = sprintf(__("Error: '%s', file: %s", 'easy-watermark'), $error, $imageFile);
|
588 |
+
}
|
589 |
+
$this->add_error($error);
|
590 |
return false;
|
591 |
}
|
592 |
|
709 |
}
|
710 |
|
711 |
private function display_column_and_metabox($post_id, $page = 'library'){
|
712 |
+
if($post_id != $this->settings['image']['watermark_id']){
|
713 |
+
$watermarked = get_post_meta($post_id, '_ew_watermarked', true);
|
714 |
+
$status = $watermarked == '1' ? __('watermarked', 'easy-watermark') : __('not watermarked', 'easy-watermark');
|
715 |
+
echo __('Status', 'easy-watermark') . ': <strong>' . $status . '</strong><br/>';
|
716 |
|
717 |
+
global $post;
|
718 |
+
if(current_user_can('edit_others_posts') || $post->post_author == wp_get_current_user()->ID){
|
719 |
+
$mark = $watermarked == '1' ? '0' : '1';
|
720 |
|
721 |
+
$link_text = $watermarked == '1' ?
|
722 |
+
__('mark as not watermarked', 'easy-watermark') : __('mark as watermarked', 'easy-watermark');
|
723 |
|
724 |
+
if($page == 'post'){
|
725 |
+
$class = ' class="button-secondary"';
|
726 |
+
}
|
727 |
+
else {
|
728 |
+
$class = null;
|
729 |
+
}
|
730 |
+
|
731 |
+
echo '<a href="'.wp_nonce_url(admin_url('upload.php?page=easy-watermark&attachment_id='.$post_id.'&r='.$page.'&mark='.$mark), 'ew_mark').'">' . $link_text . '</a><br/><br/><strong><a href="' . wp_nonce_url(admin_url('upload.php?page=easy-watermark&attachment_id='.$post_id.'&r='.$page), 'ew_add_watermark') . '"'.$class.'>'.__('Add Watermark', 'easy-watermark').'</a></strong>';
|
732 |
}
|
733 |
+
}
|
734 |
|
735 |
+
else {
|
736 |
+
echo __('This image is used as watermark.', 'easy-watermark') . '<br/><a href="'.admin_url('options-general.php?page=easy-watermark-settings&tab=image').'">' . __('Change settings', 'easy-watermark') . '</a>';
|
737 |
+
|
738 |
}
|
739 |
}
|
740 |
|
743 |
*
|
744 |
* @return void
|
745 |
*/
|
746 |
+
public static function install(){
|
747 |
+
$version = get_option(self::$pluginSlug.'-version', false);
|
748 |
+
if($version)
|
749 |
+
return; // Do nothing, the plugin has been installed before
|
750 |
+
|
751 |
+
$settings = EW_Settings::getDefaults();
|
752 |
+
|
753 |
+
self::update_settings($settings);
|
754 |
+
}
|
755 |
|
756 |
+
/**
|
757 |
+
* Method to write given settings array to the db
|
758 |
+
*
|
759 |
+
* @param array
|
760 |
+
* @return void
|
761 |
+
*/
|
762 |
+
private static function update_settings($settings){
|
763 |
foreach($settings as $sectionName => $section){
|
764 |
update_option(self::$pluginSlug.'-settings-'.$sectionName, $section);
|
765 |
}
|
766 |
+
update_option(self::$pluginSlug.'-version', self::$version);
|
767 |
}
|
768 |
|
769 |
/**
|
854 |
$settings['image'] = array_merge($defaults['image'], $settings['image']);
|
855 |
$settings['text'] = array_merge($defaults['text'], $settings['text']);
|
856 |
|
857 |
+
self::update_settings($settings);
|
858 |
+
}
|
859 |
+
|
860 |
+
private function add_error($msg){
|
861 |
+
$this->notices[] = array('error', $msg);
|
862 |
+
}
|
863 |
+
|
864 |
+
private function add_info($msg){
|
865 |
+
$this->notices[] = array('update', $msg);
|
866 |
}
|
867 |
|
868 |
/**
|
1007 |
$date = !empty($this->settings['general']['date_format']) ? $this->settings['general']['date_format'] : get_option('date_format');
|
1008 |
$time = !empty($this->settings['general']['time_format']) ? $this->settings['general']['time_format'] : get_option('time_format');
|
1009 |
|
1010 |
+
if(is_object($this->currentImage)){
|
1011 |
+
$author = get_user_by('id', $this->currentImage->post_author);
|
1012 |
+
$imageTitle = $this->currentImage->post_title;
|
1013 |
+
$imageAlt = get_post_meta($this->currentImage->ID, '_wp_attachment_image_alt', true);
|
1014 |
+
}
|
1015 |
+
else {
|
1016 |
+
$author = $user;
|
1017 |
+
$imageTitle = '(image title here)';
|
1018 |
+
$imageAlt = '(image alt here)';
|
1019 |
+
}
|
1020 |
+
|
1021 |
$placeholders = array(
|
1022 |
'%user%',
|
1023 |
'%user_name%',
|
1024 |
'%user_email%',
|
1025 |
+
'%user_url%',
|
1026 |
+
'%author%',
|
1027 |
+
'%author_name%',
|
1028 |
+
'%author_email%',
|
1029 |
+
'%author_url%',
|
1030 |
'%admin_email%',
|
1031 |
'%blog_name%',
|
1032 |
'%blog_url%',
|
1033 |
'%date%',
|
1034 |
'%time%',
|
1035 |
+
'%image_title%',
|
1036 |
+
'%image_alt%',
|
1037 |
);
|
1038 |
|
1039 |
$replacements = array(
|
1040 |
$user->user_login,
|
1041 |
$user->display_name,
|
1042 |
$user->user_email,
|
1043 |
+
$user->user_url,
|
1044 |
+
$author->user_login,
|
1045 |
+
$author->display_name,
|
1046 |
+
$author->user_email,
|
1047 |
+
$author->user_url,
|
1048 |
get_bloginfo('admin_email'),
|
1049 |
get_bloginfo('name'),
|
1050 |
home_url(),
|
1051 |
date($date),
|
1052 |
date($time),
|
1053 |
+
$imageTitle,
|
1054 |
+
$imageAlt
|
1055 |
);
|
1056 |
|
1057 |
return str_replace($placeholders, $replacements, $text);
|
classes/class-ew-settings.php
CHANGED
@@ -112,7 +112,47 @@ class EW_Settings
|
|
112 |
}
|
113 |
|
114 |
public function add_options_page(){
|
115 |
-
add_options_page(__('Easy Watermark', 'easy-watermark'), __('Easy Watermark', 'easy-watermark'), 'manage_options', 'easy-watermark-settings', array($this, 'settings_page'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}
|
117 |
|
118 |
public function register_settings(){
|
112 |
}
|
113 |
|
114 |
public function add_options_page(){
|
115 |
+
$page_id = add_options_page(__('Easy Watermark', 'easy-watermark'), __('Easy Watermark', 'easy-watermark'), 'manage_options', 'easy-watermark-settings', array($this, 'settings_page'));
|
116 |
+
|
117 |
+
add_action('load-' . $page_id, array($this, 'add_help_tab'));
|
118 |
+
}
|
119 |
+
|
120 |
+
public function add_help_tab(){
|
121 |
+
if(isset($_GET['tab']) && $_GET['tab'] == 'text'){
|
122 |
+
$screen = get_current_screen();
|
123 |
+
|
124 |
+
$author = $this->get_help_tab('author');
|
125 |
+
$user = $this->get_help_tab('user');
|
126 |
+
$general = $this->get_help_tab('general');
|
127 |
+
$image = $this->get_help_tab('image');
|
128 |
+
|
129 |
+
$screen->add_help_tab(array(
|
130 |
+
'id' => 'ew_placeholders_author',
|
131 |
+
'title' => __('Author placeholders'),
|
132 |
+
'content' => $author,
|
133 |
+
));
|
134 |
+
$screen->add_help_tab(array(
|
135 |
+
'id' => 'ew_placeholders_user',
|
136 |
+
'title' => __('User placeholders'),
|
137 |
+
'content' => $user,
|
138 |
+
));
|
139 |
+
$screen->add_help_tab(array(
|
140 |
+
'id' => 'ew_placeholders_image',
|
141 |
+
'title' => __('Image placeholders'),
|
142 |
+
'content' => $image,
|
143 |
+
));
|
144 |
+
$screen->add_help_tab(array(
|
145 |
+
'id' => 'ew_placeholders_general',
|
146 |
+
'title' => __('General placeholders'),
|
147 |
+
'content' => $general,
|
148 |
+
));
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
private function get_help_tab($name){
|
153 |
+
ob_start();
|
154 |
+
include EWVIEWS . EWDS . 'help_tab_placeholders_' . $name . '.php';
|
155 |
+
return ob_get_clean();
|
156 |
}
|
157 |
|
158 |
public function register_settings(){
|
index.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
/*
|
3 |
Plugin Name: Easy Watermark
|
4 |
Description: This plugin can automatically add image and text watermark to pictures as they are uploaded to wordpress media library. You can also watermark existing images manually (all at once or an every single image). Watermark image can be a png, gif (alpha channel supported in both cases) or jpg. It's also possibile to set watermark opacity (doesn't apply to png with alpha channel). For text watermark you can select font, set color, size, angel and opacity.
|
5 |
-
Version:
|
6 |
-
Author:
|
7 |
-
Author URI:
|
8 |
-
License:
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
*/
|
11 |
|
2 |
/*
|
3 |
Plugin Name: Easy Watermark
|
4 |
Description: This plugin can automatically add image and text watermark to pictures as they are uploaded to wordpress media library. You can also watermark existing images manually (all at once or an every single image). Watermark image can be a png, gif (alpha channel supported in both cases) or jpg. It's also possibile to set watermark opacity (doesn't apply to png with alpha channel). For text watermark you can select font, set color, size, angel and opacity.
|
5 |
+
Version: 0.5.2
|
6 |
+
Author: Wojtek Szałkiewicz
|
7 |
+
Author URI: http://szalkiewicz.pl/
|
8 |
+
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
*/
|
11 |
|
lib/EasyWatermark.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* @package Easy Watermark
|
4 |
-
* @version 3.
|
5 |
* @license GPL
|
6 |
* @author Wojtek Szałkiewicz
|
7 |
* @author url http://szalkiewicz.pl
|
@@ -34,6 +34,15 @@
|
|
34 |
|
35 |
class EasyWatermark
|
36 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
/**
|
38 |
* @var array default settings
|
39 |
*/
|
@@ -470,7 +479,7 @@ class EasyWatermark
|
|
470 |
$return = true;
|
471 |
}
|
472 |
else {
|
473 |
-
$this->error =
|
474 |
}
|
475 |
}
|
476 |
|
@@ -480,11 +489,11 @@ class EasyWatermark
|
|
480 |
}
|
481 |
|
482 |
if(!$return){
|
483 |
-
$this->error =
|
484 |
}
|
485 |
}
|
486 |
else {
|
487 |
-
$this->error =
|
488 |
}
|
489 |
|
490 |
return $return;
|
@@ -497,13 +506,15 @@ class EasyWatermark
|
|
497 |
*/
|
498 |
public function applyImageWatermark(){
|
499 |
|
500 |
-
$this->getInputImage();
|
501 |
$this->getOutputImage();
|
502 |
|
|
|
|
|
|
|
503 |
// Create GD image resources
|
504 |
list($this->watermarkImage, $this->watermarkImageType) = $this->createImage($this->watermarkPath, $this->watermarkMime);
|
505 |
|
506 |
-
if(!$this->
|
507 |
return false;
|
508 |
|
509 |
// Prepare settings array
|
@@ -555,10 +566,12 @@ class EasyWatermark
|
|
555 |
$newWidth, $newHeight, $watermarkWidth, $watermarkHeight
|
556 |
);
|
557 |
|
|
|
|
|
|
|
558 |
$this->watermarkImage = $tmpImage;
|
559 |
$watermarkWidth = $newWidth;
|
560 |
$watermarkHeight = $newHeight;
|
561 |
-
|
562 |
unset($tmpImage, $newWidth, $nweHeight);
|
563 |
}
|
564 |
|
@@ -597,9 +610,11 @@ class EasyWatermark
|
|
597 |
*/
|
598 |
public function applyTextWatermark(){
|
599 |
|
600 |
-
$this->getInputImage();
|
601 |
$this->getOutputImage();
|
602 |
|
|
|
|
|
|
|
603 |
$settings = $this->parseSettings('text');
|
604 |
|
605 |
list($textWidth, $textHeight, $deltaX, $deltaY) = $this->getTextSize($settings['size'], $settings['angle'], $settings['font'], $this->text);
|
@@ -640,29 +655,35 @@ class EasyWatermark
|
|
640 |
|
641 |
$this->outputImage = imagecreatetruecolor($width, $height);
|
642 |
|
643 |
-
$
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
$
|
649 |
-
|
650 |
-
$
|
651 |
-
|
652 |
-
|
|
|
|
|
|
|
653 |
}
|
654 |
-
$startColor = ($startColor == 1) ? 0 : 1;
|
655 |
-
}
|
656 |
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
|
|
|
|
|
|
|
|
|
|
662 |
|
663 |
-
$this->
|
664 |
|
665 |
-
return
|
666 |
}
|
667 |
|
668 |
/**
|
@@ -709,25 +730,40 @@ class EasyWatermark
|
|
709 |
*/
|
710 |
private function getOutputImage(){
|
711 |
if(empty($this->outputImage)){
|
712 |
-
|
|
|
|
|
|
|
713 |
|
714 |
-
|
715 |
-
|
|
|
|
|
|
|
716 |
|
717 |
-
|
|
|
718 |
|
719 |
-
|
720 |
-
// Preserve opacity for png images
|
721 |
-
imagealphablending($this->outputImage, false);
|
722 |
-
imagesavealpha($this->outputImage, true);
|
723 |
-
}
|
724 |
|
725 |
-
|
726 |
-
|
727 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
728 |
}
|
729 |
|
730 |
-
|
|
|
731 |
|
732 |
return $this->outputImage;
|
733 |
}
|
@@ -737,9 +773,9 @@ class EasyWatermark
|
|
737 |
*
|
738 |
* @return array width and height
|
739 |
*/
|
740 |
-
private function getImageSize(
|
741 |
-
$img = $input ? $this->inputImage : $this->outputImage;
|
742 |
if(empty($this->imageSize)){
|
|
|
743 |
$this->imageSize = array(
|
744 |
imagesx($img),
|
745 |
imagesy($img)
|
@@ -805,7 +841,7 @@ class EasyWatermark
|
|
805 |
$type = $this->detectMimeType($mime, $filePath);
|
806 |
|
807 |
if(!in_array($type, $this->allowedTypes)){
|
808 |
-
$this->error =
|
809 |
return false;
|
810 |
}
|
811 |
|
@@ -840,7 +876,7 @@ class EasyWatermark
|
|
840 |
if(empty($file)) $file = $this->outputFile;
|
841 |
|
842 |
if(empty($file)){
|
843 |
-
$this->error =
|
844 |
return false;
|
845 |
}
|
846 |
|
@@ -857,7 +893,7 @@ class EasyWatermark
|
|
857 |
$type = !empty($this->outputMime) ? $this->detectMimeType($this->outputMime) : $this->inputImageType;
|
858 |
|
859 |
if(!$type || !in_array($type, $this->allowedTypes)){
|
860 |
-
$this->error =
|
861 |
return false;
|
862 |
}
|
863 |
|
@@ -880,8 +916,10 @@ class EasyWatermark
|
|
880 |
|
881 |
$result = @call_user_func_array($func, $params);
|
882 |
|
|
|
|
|
883 |
if(!$result){
|
884 |
-
$this->error =
|
885 |
return false;
|
886 |
}
|
887 |
|
@@ -951,10 +989,10 @@ class EasyWatermark
|
|
951 |
* cleans up image resources when object is destructed
|
952 |
*/
|
953 |
public function clean(){
|
954 |
-
if($this->inputImage) imagedestroy($this->inputImage); $this->inputImage = null;
|
955 |
if($this->watermarkImage) imagedestroy($this->watermarkImage); $this->watermarkImage = null;
|
956 |
if($this->outputImage) imagedestroy($this->outputImage); $this->outputImage = null;
|
957 |
$this->imageSize = null;
|
|
|
958 |
}
|
959 |
|
960 |
/**
|
1 |
<?php
|
2 |
/**
|
3 |
* @package Easy Watermark
|
4 |
+
* @version 3.3
|
5 |
* @license GPL
|
6 |
* @author Wojtek Szałkiewicz
|
7 |
* @author url http://szalkiewicz.pl
|
34 |
|
35 |
class EasyWatermark
|
36 |
{
|
37 |
+
// Error codes
|
38 |
+
const ERROR_SAME_IMAGE_PATHS = 1,
|
39 |
+
ERROR_NO_WATERMARK_SET = 2,
|
40 |
+
ERROR_NO_INPUT_IMAGE = 3,
|
41 |
+
ERROR_NOT_ALLOWED_TYPE = 4,
|
42 |
+
ERROR_NO_OUTPUT_FILE_SET = 5,
|
43 |
+
ERROR_NOT_ALLOWED_OUTPUT_TYPE = 6,
|
44 |
+
ERROR_UNKNOWN = 9;
|
45 |
+
|
46 |
/**
|
47 |
* @var array default settings
|
48 |
*/
|
479 |
$return = true;
|
480 |
}
|
481 |
else {
|
482 |
+
$this->error = self::ERROR_SAME_IMAGE_PATHS;
|
483 |
}
|
484 |
}
|
485 |
|
489 |
}
|
490 |
|
491 |
if(!$return){
|
492 |
+
$this->error = self::ERROR_NO_WATERMARK_SET;
|
493 |
}
|
494 |
}
|
495 |
else {
|
496 |
+
$this->error = self::ERROR_NO_INPUT_IMAGE;
|
497 |
}
|
498 |
|
499 |
return $return;
|
506 |
*/
|
507 |
public function applyImageWatermark(){
|
508 |
|
|
|
509 |
$this->getOutputImage();
|
510 |
|
511 |
+
if(!$this->outputImage)
|
512 |
+
return false;
|
513 |
+
|
514 |
// Create GD image resources
|
515 |
list($this->watermarkImage, $this->watermarkImageType) = $this->createImage($this->watermarkPath, $this->watermarkMime);
|
516 |
|
517 |
+
if(!$this->watermarkImage)
|
518 |
return false;
|
519 |
|
520 |
// Prepare settings array
|
566 |
$newWidth, $newHeight, $watermarkWidth, $watermarkHeight
|
567 |
);
|
568 |
|
569 |
+
// Clean memory
|
570 |
+
imagedestroy($this->watermarkImage);
|
571 |
+
|
572 |
$this->watermarkImage = $tmpImage;
|
573 |
$watermarkWidth = $newWidth;
|
574 |
$watermarkHeight = $newHeight;
|
|
|
575 |
unset($tmpImage, $newWidth, $nweHeight);
|
576 |
}
|
577 |
|
610 |
*/
|
611 |
public function applyTextWatermark(){
|
612 |
|
|
|
613 |
$this->getOutputImage();
|
614 |
|
615 |
+
if(!$this->outputImage)
|
616 |
+
return false;
|
617 |
+
|
618 |
$settings = $this->parseSettings('text');
|
619 |
|
620 |
list($textWidth, $textHeight, $deltaX, $deltaY) = $this->getTextSize($settings['size'], $settings['angle'], $settings['font'], $this->text);
|
655 |
|
656 |
$this->outputImage = imagecreatetruecolor($width, $height);
|
657 |
|
658 |
+
if($this->outputImage){
|
659 |
+
$grid = 6;
|
660 |
+
$grey = imagecolorallocate($this->outputImage, 130,130,130);
|
661 |
+
$white = imagecolorallocate($this->outputImage, 200,200,200);
|
662 |
+
$startColor = 1;
|
663 |
+
for($i = 0; $i < ($height / $grid); $i++){
|
664 |
+
$currentColor = $startColor;
|
665 |
+
for($n = 0; $n < ($width / $grid); $n++){
|
666 |
+
$color = ($currentColor == 1) ? $grey : $white;
|
667 |
+
imagefilledrectangle($this->outputImage, $grid * $n, $grid * $i, $grid * $n + $grid, $grid * $i + $grid, $color);
|
668 |
+
$currentColor = ($currentColor == 1) ? 0 : 1;
|
669 |
+
}
|
670 |
+
$startColor = ($startColor == 1) ? 0 : 1;
|
671 |
}
|
|
|
|
|
672 |
|
673 |
+
$this->settings['text']['position_x'] = 1;
|
674 |
+
$this->settings['text']['position_y'] = 1;
|
675 |
+
$this->settings['text']['offset_x'] = 0;
|
676 |
+
$this->settings['text']['offset_y'] = 0;
|
677 |
+
$this->outputMime = 'jpeg';
|
678 |
+
|
679 |
+
$this->applyTextWatermark();
|
680 |
+
|
681 |
+
return $this->printOutput();
|
682 |
+
}
|
683 |
|
684 |
+
$this->error = self::ERROR_UNKNOWN;
|
685 |
|
686 |
+
return false;
|
687 |
}
|
688 |
|
689 |
/**
|
730 |
*/
|
731 |
private function getOutputImage(){
|
732 |
if(empty($this->outputImage)){
|
733 |
+
if(empty($this->inputImage)){
|
734 |
+
// Create Input Image
|
735 |
+
$this->getInputImage();
|
736 |
+
}
|
737 |
|
738 |
+
if(!$this->inputImage){
|
739 |
+
$this->outputImage = false;
|
740 |
+
}
|
741 |
+
else {
|
742 |
+
list($imageWidth, $imageHeight) = $this->getImageSize();
|
743 |
|
744 |
+
// Create blank image
|
745 |
+
$this->outputImage = imagecreatetruecolor($imageWidth, $imageHeight);
|
746 |
|
747 |
+
$this->outputMime = !empty($this->outputMime) ? $this->detectMimeType($this->outputMime) : $this->inputImageType;
|
|
|
|
|
|
|
|
|
748 |
|
749 |
+
if(($this->outputMime == 'png' && $this->isAlphaPng($this->imagePath))){
|
750 |
+
// Preserve opacity for png images
|
751 |
+
imagealphablending($this->outputImage, false);
|
752 |
+
imagesavealpha($this->outputImage, true);
|
753 |
+
}
|
754 |
+
|
755 |
+
imagecopy($this->outputImage, $this->inputImage,
|
756 |
+
0, 0, 0, 0, $imageWidth, $imageHeight
|
757 |
+
);
|
758 |
+
|
759 |
+
// Destroy Input Image to save memory
|
760 |
+
imagedestroy($this->inputImage);
|
761 |
+
unset($this->inputImage);
|
762 |
+
}
|
763 |
}
|
764 |
|
765 |
+
if($this->outputImage)
|
766 |
+
imagealphablending($this->outputImage, true);
|
767 |
|
768 |
return $this->outputImage;
|
769 |
}
|
773 |
*
|
774 |
* @return array width and height
|
775 |
*/
|
776 |
+
private function getImageSize(){
|
|
|
777 |
if(empty($this->imageSize)){
|
778 |
+
$img = is_resource($this->inputImage) ? $this->inputImage : $this->outputImage;
|
779 |
$this->imageSize = array(
|
780 |
imagesx($img),
|
781 |
imagesy($img)
|
841 |
$type = $this->detectMimeType($mime, $filePath);
|
842 |
|
843 |
if(!in_array($type, $this->allowedTypes)){
|
844 |
+
$this->error = self::ERROR_NOT_ALLOWED_TYPE;
|
845 |
return false;
|
846 |
}
|
847 |
|
876 |
if(empty($file)) $file = $this->outputFile;
|
877 |
|
878 |
if(empty($file)){
|
879 |
+
$this->error = self::ERROR_NO_OUTPUT_FILE_SET;
|
880 |
return false;
|
881 |
}
|
882 |
|
893 |
$type = !empty($this->outputMime) ? $this->detectMimeType($this->outputMime) : $this->inputImageType;
|
894 |
|
895 |
if(!$type || !in_array($type, $this->allowedTypes)){
|
896 |
+
$this->error = self::ERROR_NOT_ALLOWED_OUTPUT_TYPE;
|
897 |
return false;
|
898 |
}
|
899 |
|
916 |
|
917 |
$result = @call_user_func_array($func, $params);
|
918 |
|
919 |
+
$this->clean();
|
920 |
+
|
921 |
if(!$result){
|
922 |
+
$this->error = self::ERROR_UNKNOWN;
|
923 |
return false;
|
924 |
}
|
925 |
|
989 |
* cleans up image resources when object is destructed
|
990 |
*/
|
991 |
public function clean(){
|
|
|
992 |
if($this->watermarkImage) imagedestroy($this->watermarkImage); $this->watermarkImage = null;
|
993 |
if($this->outputImage) imagedestroy($this->outputImage); $this->outputImage = null;
|
994 |
$this->imageSize = null;
|
995 |
+
$this->inputImage = null;
|
996 |
}
|
997 |
|
998 |
/**
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: szaleq
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=wojtek%40szalkiewicz%2epl&lc=GB&item_name=Easy%20Watermark%20Wordpress%20Plugin¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted
|
4 |
Tags: watermark, image, picture, photo, media, gallery, signature, transparent, upload, admin
|
5 |
-
Requires at least: 3.
|
6 |
-
Tested up to: 3.
|
7 |
-
Stable tag: 0.5.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -83,6 +83,13 @@ All available placeholders are listed in a box titled 'Placeholders' on the text
|
|
83 |
|
84 |
== Changelog ==
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
= 0.5.1 =
|
87 |
* fixed cooperation with front-end upload plugins (like BuddyPress Media)
|
88 |
* added possibility to define which post type attachments should be watermarked on upload
|
2 |
Contributors: szaleq
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=wojtek%40szalkiewicz%2epl&lc=GB&item_name=Easy%20Watermark%20Wordpress%20Plugin¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted
|
4 |
Tags: watermark, image, picture, photo, media, gallery, signature, transparent, upload, admin
|
5 |
+
Requires at least: 3.5
|
6 |
+
Tested up to: 3.9.0
|
7 |
+
Stable tag: 0.5.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
83 |
|
84 |
== Changelog ==
|
85 |
|
86 |
+
= 0.5.2 =
|
87 |
+
* Fix: watermarking class optimised to avoid out-of-memory errors
|
88 |
+
* Fix: settings are now kept after deactivation
|
89 |
+
* Fix: many small bugs in a code
|
90 |
+
* Added: bunch of new text placeholders
|
91 |
+
* small changes in UI
|
92 |
+
|
93 |
= 0.5.1 =
|
94 |
* fixed cooperation with front-end upload plugins (like BuddyPress Media)
|
95 |
* added possibility to define which post type attachments should be watermarked on upload
|
views/easy-watermark-page.php
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
<div class="wrap easy-watermark">
|
3 |
<div id="icon-easy-watermark" class="icon32"><br /></div>
|
4 |
<h2><?php _e('Easy Watermark', 'easy-watermark'); ?></h2>
|
5 |
-
|
6 |
if(isset($_GET['_wpnonce'])) :
|
7 |
if(wp_verify_nonce($_GET['_wpnonce'], 'watermark_all_confirmed') && isset($_GET['watermark_all']) && ($output = $this->watermark_all())) :
|
8 |
?>
|
9 |
<div id="message" class="updated below-h2">
|
10 |
<p><?php _e('Watermark successfully added.', 'easy-watermark'); ?> <a href="<?php echo admin_url('upload.php') ?>"><?php _e('Go to Media Library', 'easy-watermark'); ?></a></p>
|
11 |
</div>
|
12 |
-
<?
|
13 |
echo $output;
|
14 |
else: ?>
|
15 |
<div id="message" class="updated below-h2">
|
2 |
<div class="wrap easy-watermark">
|
3 |
<div id="icon-easy-watermark" class="icon32"><br /></div>
|
4 |
<h2><?php _e('Easy Watermark', 'easy-watermark'); ?></h2>
|
5 |
+
<?php
|
6 |
if(isset($_GET['_wpnonce'])) :
|
7 |
if(wp_verify_nonce($_GET['_wpnonce'], 'watermark_all_confirmed') && isset($_GET['watermark_all']) && ($output = $this->watermark_all())) :
|
8 |
?>
|
9 |
<div id="message" class="updated below-h2">
|
10 |
<p><?php _e('Watermark successfully added.', 'easy-watermark'); ?> <a href="<?php echo admin_url('upload.php') ?>"><?php _e('Go to Media Library', 'easy-watermark'); ?></a></p>
|
11 |
</div>
|
12 |
+
<?php
|
13 |
echo $output;
|
14 |
else: ?>
|
15 |
<div id="message" class="updated below-h2">
|
views/help_tab_placeholders_author.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h3><?php _e('Placeholders', 'easy-watermark'); ?></h3>
|
2 |
+
<p class="description"><?php _e('You can use this placeholders in your text watermark, it will be replaced with proper value just befor applying watermark.', 'easy-watermark'); ?></p>
|
3 |
+
<table class="widefat"><tbody>
|
4 |
+
<tr><td>%author%</td><td><?php _e('image author login', 'easy-watermark'); ?></td></tr>
|
5 |
+
<tr><td>%author_name%</td><td><?php _e('image author display name', 'easy-watermark'); ?></td></tr>
|
6 |
+
<tr><td>%author_email%</td><td><?php _e('image author email address', 'easy-watermark'); ?></td></tr>
|
7 |
+
<tr><td>%author_url%</td><td><?php _e('image author url', 'easy-watermark'); ?></td></tr>
|
8 |
+
</tbody></table>
|
views/help_tab_placeholders_general.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h3><?php _e('Placeholders', 'easy-watermark'); ?></h3>
|
2 |
+
<p class="description"><?php _e('You can use this placeholders in your text watermark, it will be replaced with proper value just befor applying watermark.', 'easy-watermark'); ?></p>
|
3 |
+
<table class="widefat"><tbody>
|
4 |
+
<tr><td>%admin_email%</td><td><?php _e('site admin email', 'easy-watermark'); ?></td></tr>
|
5 |
+
<tr><td>%blog_name%</td><td><?php _e('blog title', 'easy-watermark'); ?></td></tr>
|
6 |
+
<tr><td>%blog_url%</td><td><?php _e('blog url', 'easy-watermark'); ?></td></tr>
|
7 |
+
<tr><td>%date%</td><td><?php _e('current date (see general settings for date format)', 'easy-watermark'); ?></td></tr>
|
8 |
+
<tr><td>%time%</td><td><?php _e('current time', 'easy-watermark'); ?></td></tr>
|
9 |
+
</tbody></table>
|
views/help_tab_placeholders_image.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h3><?php _e('Placeholders', 'easy-watermark'); ?></h3>
|
2 |
+
<p class="description"><?php _e('You can use this placeholders in your text watermark, it will be replaced with proper value just befor applying watermark.', 'easy-watermark'); ?></p>
|
3 |
+
<table class="widefat"><tbody>
|
4 |
+
<tr><td>%image_title%</td><td><?php _e('image title', 'easy-watermark'); ?></td></tr>
|
5 |
+
<tr><td>%image_alt%</td><td><?php _e('alternative text for the image', 'easy-watermark'); ?></td></tr>
|
6 |
+
</tbody></table>
|
views/help_tab_placeholders_user.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<h3><?php _e('Placeholders', 'easy-watermark'); ?></h3>
|
2 |
+
<p class="description"><?php _e('You can use this placeholders in your text watermark, it will be replaced with proper value just befor applying watermark.', 'easy-watermark'); ?></p>
|
3 |
+
<table class="widefat"><tbody>
|
4 |
+
<tr><td>%user%</td><td><?php _e('current user login', 'easy-watermark'); ?></td></tr>
|
5 |
+
<tr><td>%user_name%</td><td><?php _e('current user display name', 'easy-watermark'); ?></td></tr>
|
6 |
+
<tr><td>%user_email%</td><td><?php _e('current user email address', 'easy-watermark'); ?></td></tr>
|
7 |
+
<tr><td>%user_url%</td><td><?php _e('current user url', 'easy-watermark'); ?></td></tr>
|
8 |
+
</tbody></table>
|
views/placeholders.php
CHANGED
@@ -3,14 +3,21 @@
|
|
3 |
<div class="inside">
|
4 |
<p class="description"><?php _e('You can use this placeholders in your text watermark, it will be replaced with proper value just befor applying watermark.', 'easy-watermark'); ?></p>
|
5 |
<table class="widefat"><tbody>
|
|
|
|
|
|
|
|
|
6 |
<tr><td>%user%</td><td><?php _e('current user login', 'easy-watermark'); ?></td></tr>
|
7 |
<tr><td>%user_name%</td><td><?php _e('current user display name', 'easy-watermark'); ?></td></tr>
|
8 |
<tr><td>%user_email%</td><td><?php _e('current user email address', 'easy-watermark'); ?></td></tr>
|
|
|
9 |
<tr><td>%admin_email%</td><td><?php _e('site admin email', 'easy-watermark'); ?></td></tr>
|
10 |
<tr><td>%blog_name%</td><td><?php _e('blog title', 'easy-watermark'); ?></td></tr>
|
11 |
<tr><td>%blog_url%</td><td><?php _e('blog url', 'easy-watermark'); ?></td></tr>
|
12 |
<tr><td>%date%</td><td><?php _e('current date (see general settings for date format)', 'easy-watermark'); ?></td></tr>
|
13 |
<tr><td>%time%</td><td><?php _e('current time', 'easy-watermark'); ?></td></tr>
|
|
|
|
|
14 |
</tbody></table>
|
15 |
</div><!-- .inside -->
|
16 |
</div>
|
3 |
<div class="inside">
|
4 |
<p class="description"><?php _e('You can use this placeholders in your text watermark, it will be replaced with proper value just befor applying watermark.', 'easy-watermark'); ?></p>
|
5 |
<table class="widefat"><tbody>
|
6 |
+
<tr><td>%author%</td><td><?php _e('image author login', 'easy-watermark'); ?></td></tr>
|
7 |
+
<tr><td>%author_name%</td><td><?php _e('image author display name', 'easy-watermark'); ?></td></tr>
|
8 |
+
<tr><td>%author_email%</td><td><?php _e('image author email address', 'easy-watermark'); ?></td></tr>
|
9 |
+
<tr><td>%author_url%</td><td><?php _e('image author url', 'easy-watermark'); ?></td></tr>
|
10 |
<tr><td>%user%</td><td><?php _e('current user login', 'easy-watermark'); ?></td></tr>
|
11 |
<tr><td>%user_name%</td><td><?php _e('current user display name', 'easy-watermark'); ?></td></tr>
|
12 |
<tr><td>%user_email%</td><td><?php _e('current user email address', 'easy-watermark'); ?></td></tr>
|
13 |
+
<tr><td>%user_url%</td><td><?php _e('current user url', 'easy-watermark'); ?></td></tr>
|
14 |
<tr><td>%admin_email%</td><td><?php _e('site admin email', 'easy-watermark'); ?></td></tr>
|
15 |
<tr><td>%blog_name%</td><td><?php _e('blog title', 'easy-watermark'); ?></td></tr>
|
16 |
<tr><td>%blog_url%</td><td><?php _e('blog url', 'easy-watermark'); ?></td></tr>
|
17 |
<tr><td>%date%</td><td><?php _e('current date (see general settings for date format)', 'easy-watermark'); ?></td></tr>
|
18 |
<tr><td>%time%</td><td><?php _e('current time', 'easy-watermark'); ?></td></tr>
|
19 |
+
<tr><td>%image_title%</td><td><?php _e('image title', 'easy-watermark'); ?></td></tr>
|
20 |
+
<tr><td>%image_alt%</td><td><?php _e('alternative text for the image', 'easy-watermark'); ?></td></tr>
|
21 |
</tbody></table>
|
22 |
</div><!-- .inside -->
|
23 |
</div>
|
views/settings-form-general.php
CHANGED
@@ -45,6 +45,7 @@ foreach($_wp_additional_image_sizes as $sizeName => $size) : ?>
|
|
45 |
</table>
|
46 |
<h3><?php _e('User Roles', 'easy-watermark'); ?></h3>
|
47 |
<p class="description"><?php _e('Select, which user roles can have a permission to apply watermarks (only roles with permission to upload files are listed here)', 'easy-watermark'); ?></p>
|
|
|
48 |
<?php
|
49 |
$roles = $this->plugin->getRoles();
|
50 |
|
@@ -53,7 +54,6 @@ foreach($_wp_additional_image_sizes as $sizeName => $size) : ?>
|
|
53 |
|
54 |
$allowed = isset($allowed_roles[$role]) ? (int) $allowed_roles[$role] : 0;
|
55 |
?>
|
56 |
-
<table class="form-table">
|
57 |
<tr valign="top"><th scope="row"><label for="easy-watermark-role-<?php echo $role ?>"><?php echo $name ?></label></th>
|
58 |
<td><select id="easy-watermark-role-<?php echo $role ?>" name="easy-watermark-settings-general[allowed_roles][<?php echo $role; ?>]">
|
59 |
<option <?php selected(1, $allowed); ?> value="1"><?php _e("allow", 'easy-watermark'); ?></option>
|
45 |
</table>
|
46 |
<h3><?php _e('User Roles', 'easy-watermark'); ?></h3>
|
47 |
<p class="description"><?php _e('Select, which user roles can have a permission to apply watermarks (only roles with permission to upload files are listed here)', 'easy-watermark'); ?></p>
|
48 |
+
<table class="form-table">
|
49 |
<?php
|
50 |
$roles = $this->plugin->getRoles();
|
51 |
|
54 |
|
55 |
$allowed = isset($allowed_roles[$role]) ? (int) $allowed_roles[$role] : 0;
|
56 |
?>
|
|
|
57 |
<tr valign="top"><th scope="row"><label for="easy-watermark-role-<?php echo $role ?>"><?php echo $name ?></label></th>
|
58 |
<td><select id="easy-watermark-role-<?php echo $role ?>" name="easy-watermark-settings-general[allowed_roles][<?php echo $role; ?>]">
|
59 |
<option <?php selected(1, $allowed); ?> value="1"><?php _e("allow", 'easy-watermark'); ?></option>
|
views/settings-form-text.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<div id="titlediv">
|
2 |
<input type="text" value="<?php echo $text; ?>" id="title" placeholder="<?php _e('Watermark Text', 'easy-watermark'); ?>" name="easy-watermark-settings-text[text]" />
|
3 |
-
<p class="description"><?php _e('You can use placeholders
|
4 |
</div>
|
5 |
<?php $class = empty($text) ? ' class="hidden"' : ''; ?>
|
6 |
<?php if(EW_Plugin::isGDEnabled()) : ?>
|
@@ -9,9 +9,9 @@
|
|
9 |
<img id="ew-text-preview" src="<?php echo admin_url('options-general.php?page=easy-watermark-settings&tp=1'); ?>">
|
10 |
</div>
|
11 |
</div>
|
|
|
12 |
|
13 |
<table class="form-table">
|
14 |
-
<?php endif; ?>
|
15 |
<tr valign="top" class="watermark-options"><th scope="row"><?php _e('Text Alignment', 'easy-watermark'); ?></th><td>
|
16 |
<div id="alignmentbox">
|
17 |
<label for="alignment-1" id="alignment-1-label"><input type="radio" name="easy-watermark-settings-text[alignment]" value="1" id="alignment-1" <?php checked('1', $alignment); ?> /></label>
|
@@ -33,13 +33,9 @@
|
|
33 |
</td></tr>
|
34 |
<tr><th scope="row"><?php _e('Font', 'easy-watermark'); ?></th><td>
|
35 |
<select name="easy-watermark-settings-text[font]" id="ew-font">
|
36 |
-
<?php
|
37 |
-
foreach($fonts as $val => $name){
|
38 |
-
?>
|
39 |
<option value="<?php echo $val; ?>" style="font-family:<?php echo $name; ?>!important;font-size:1.2em;" <?php selected($val, $font); ?>><?php echo $name; ?></option>
|
40 |
-
<?
|
41 |
-
}
|
42 |
-
?>
|
43 |
</select>
|
44 |
</td></tr>
|
45 |
<tr><th scope="row"><?php _e('Text Color', 'easy-watermark'); ?></th><td>
|
@@ -81,7 +77,7 @@
|
|
81 |
$g /= 255;
|
82 |
$b /= 255;
|
83 |
|
84 |
-
|
85 |
$min = min( $r, $g, $b );
|
86 |
|
87 |
$h;
|
@@ -106,9 +102,9 @@
|
|
106 |
case $b:
|
107 |
$h = 60 * ( ( $r - $g ) / $d + 4 );
|
108 |
break;
|
109 |
-
}
|
110 |
}
|
111 |
|
112 |
-
return array(
|
113 |
}
|
114 |
?>
|
1 |
<div id="titlediv">
|
2 |
<input type="text" value="<?php echo $text; ?>" id="title" placeholder="<?php _e('Watermark Text', 'easy-watermark'); ?>" name="easy-watermark-settings-text[text]" />
|
3 |
+
<p class="description"><?php _e('You can use placeholders. See help.', 'easy-watermark'); ?></p>
|
4 |
</div>
|
5 |
<?php $class = empty($text) ? ' class="hidden"' : ''; ?>
|
6 |
<?php if(EW_Plugin::isGDEnabled()) : ?>
|
9 |
<img id="ew-text-preview" src="<?php echo admin_url('options-general.php?page=easy-watermark-settings&tp=1'); ?>">
|
10 |
</div>
|
11 |
</div>
|
12 |
+
<?php endif; ?>
|
13 |
|
14 |
<table class="form-table">
|
|
|
15 |
<tr valign="top" class="watermark-options"><th scope="row"><?php _e('Text Alignment', 'easy-watermark'); ?></th><td>
|
16 |
<div id="alignmentbox">
|
17 |
<label for="alignment-1" id="alignment-1-label"><input type="radio" name="easy-watermark-settings-text[alignment]" value="1" id="alignment-1" <?php checked('1', $alignment); ?> /></label>
|
33 |
</td></tr>
|
34 |
<tr><th scope="row"><?php _e('Font', 'easy-watermark'); ?></th><td>
|
35 |
<select name="easy-watermark-settings-text[font]" id="ew-font">
|
36 |
+
<?php foreach($fonts as $val => $name) : ?>
|
|
|
|
|
37 |
<option value="<?php echo $val; ?>" style="font-family:<?php echo $name; ?>!important;font-size:1.2em;" <?php selected($val, $font); ?>><?php echo $name; ?></option>
|
38 |
+
<?php endforeach; ?>
|
|
|
|
|
39 |
</select>
|
40 |
</td></tr>
|
41 |
<tr><th scope="row"><?php _e('Text Color', 'easy-watermark'); ?></th><td>
|
77 |
$g /= 255;
|
78 |
$b /= 255;
|
79 |
|
80 |
+
$max = max( $r, $g, $b );
|
81 |
$min = min( $r, $g, $b );
|
82 |
|
83 |
$h;
|
102 |
case $b:
|
103 |
$h = 60 * ( ( $r - $g ) / $d + 4 );
|
104 |
break;
|
105 |
+
}
|
106 |
}
|
107 |
|
108 |
+
return array($h, $s, $l);
|
109 |
}
|
110 |
?>
|
views/settings-page.php
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<div class="wrap easy-watermark">
|
2 |
<div class="has-right-sidebar">
|
3 |
<?php include dirname(__FILE__) . EWDS . 'settings-sidebar.php'; ?>
|
1 |
+
|
2 |
<div class="wrap easy-watermark">
|
3 |
<div class="has-right-sidebar">
|
4 |
<?php include dirname(__FILE__) . EWDS . 'settings-sidebar.php'; ?>
|
views/settings-sidebar.php
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
<div class="metabox-holder inner-sidebar">
|
|
|
|
|
|
|
2 |
<?php include dirname(__FILE__) . EWDS . 'about.php'; ?>
|
3 |
-
<?php if($current_tab == 'text')
|
4 |
-
include dirname(__FILE__) . EWDS . 'placeholders.php'; ?>
|
5 |
</div><!-- .metabox-holder -->
|
1 |
<div class="metabox-holder inner-sidebar">
|
2 |
+
<?php // placeholders are now described in help
|
3 |
+
/*if($current_tab == 'text')
|
4 |
+
include dirname(__FILE__) . EWDS . 'placeholders.php'; */ ?>
|
5 |
<?php include dirname(__FILE__) . EWDS . 'about.php'; ?>
|
|
|
|
|
6 |
</div><!-- .metabox-holder -->
|