PluginProbe
CryptX / 2.6.2
CryptX v2.6.2
4.2.0 4.1.1 trunk 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.9 2.0 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 All 92 releases
cryptx / cryptx.php

cryptx.php in CryptX 2.6.2, at cryptx.php

790 lines 28.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: CryptX
4 Plugin URI: http://weber-nrw.de/wordpress/cryptx/
5 Description: No more SPAM by spiders scanning you site for email adresses. With CryptX you can hide all your email adresses, with and without a mailto-link, by converting them using javascript or UNICODE. Although you can choose to add a mailto-link to all unlinked email adresses with only one klick at the settings. That's great, isn't it?
6 Version: 2.6.2
7 Author: Ralf Weber
8 Author URI: http://weber-nrw.de/
9 Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4026696
10 */
11
12 /////////////////////////////////////////////////////////////////////////////
13
14 /**
15 * @internal prevent from direct calls
16 */
17 if (!defined('ABSPATH')) {
18 return ;
19 }
20
21 /**
22 * @internal prevent from second inclusion
23 */
24 if (!class_exists('cryptX')) {
25
26 /////////////////////////////////////////////////////////////////////////////
27 // plugin definitions
28 define( 'CRYPTX_BASENAME', plugin_basename( __FILE__ ) );
29 define( 'CRYPTX_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
30 define( 'CRYPTX_FILENAME', str_replace( CRYPTX_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) );
31
32 load_plugin_textdomain('cryptx', sprintf('%s/cryptx/languages', PLUGINDIR ));
33
34 $cryptX_var = (array) get_option('cryptX');
35
36 /**
37 * "CryptX" WordPress Plugin
38 *
39 * @author Ralf Weber <ralf@weber-nrw.de>
40 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
41 */
42 Class cryptX {
43
44 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
45
46 /**
47 * Constructor
48 *
49 * This constructor attaches the needer plugin hook callbacks
50 */
51 function cryptX() {
52
53 global $cryptX_var, $wp_version;
54
55 // attach the converstion handlers
56 //
57 if (@$cryptX_var[theContent]) {
58 $this->filter('the_content');
59 }
60 if (@$cryptX_var[theExcerpt]) {
61 $this->filter('the_excerpt');
62 }
63 if (@$cryptX_var[commentText]) {
64 $this->filter('comment_text');
65 }
66 if (@$cryptX_var[widgetText]) {
67 $this->filter('widget_text');
68 }
69
70 // attach to admin menu
71 //
72 if (is_admin()) {
73 add_action('admin_menu',
74 array(&$this, 'menu')
75 );
76 }
77
78 // attach to plugin installation
79 //
80 add_action(
81 'activate_' . str_replace(
82 DIRECTORY_SEPARATOR, '/',
83 str_replace(
84 realpath(ABSPATH . PLUGINDIR) . DIRECTORY_SEPARATOR,
85 '', __FILE__
86 )
87 ),
88 array(&$this, 'install')
89 );
90
91 // attach javascript to Header
92 //
93 if (@$cryptX_var[java]) {
94 if (@$cryptX_var[load_java]) {
95 add_action(
96 'wp_footer',
97 array(&$this, 'header'),
98 9
99 );
100 } else {
101 add_action(
102 'wp_head',
103 array(&$this, 'header'),
104 9
105 );
106 }
107 }
108
109 if (@$cryptX_var[metaBox]) {
110 add_action('admin_menu',
111 array(&$this, 'cryptx_meta_box')
112 );
113
114 add_action('wp_insert_post',
115 array(&$this, 'cryptx_insert_post')
116 );
117 add_action('wp_update_post',
118 array(&$this, 'cryptx_insert_post')
119 );
120 }
121
122 // Add FAQ and support information
123 if ( version_compare( $wp_version, '2.8', '>' ) ) {
124 add_filter( 'plugin_row_meta', array($this, 'init_row_meta'), 10, 2 ); // only 2.8 and higher
125 } else {
126 add_filter( 'plugin_action_links', array($this, 'init_row_meta'), 10, 2 );
127 }
128
129 // Add tinyurl for image action
130 add_filter( 'init', array($this, 'init_tinyurl'));
131 } // End function
132
133 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
134
135 function init_tinyurl() {
136 global $cryptX_var;
137 // check TinyURl
138 $url = $_SERVER["REQUEST_URI"];
139 $params = explode( '/', $url );
140 if ( count( $params ) > 1 ) {
141 $tiny_url = $params[count( $params ) -2];
142 if ( $tiny_url == md5( get_bloginfo('url') ) ) {
143 // define vars
144 $font = $cryptX_var[c2i_font];
145 $msg = $params[count( $params ) -1];
146 $size = $cryptX_var[c2i_fontSize];
147 $pad = 1;
148 $transparent = 1;
149 $red = hexdec(substr($cryptX_var[c2i_fontRGB],0,2));
150 $grn = hexdec(substr($cryptX_var[c2i_fontRGB],2,2));
151 $blu = hexdec(substr($cryptX_var[c2i_fontRGB],4,2));
152 $bg_red = 255 - $red;
153 $bg_grn = 255 - $grn;
154 $bg_blu = 255 - $blu;
155 $width = 0;
156 $height = 0;
157 $offset_x = 0;
158 $offset_y = 0;
159 $bounds = array();
160 $image = "";
161 // get the font height.
162 $bounds = ImageTTFBBox($size, 0, $font, "W");
163 if ($rot < 0)
164 {
165 $font_height = abs($bounds[7]-$bounds[1]);
166 }
167 else if ($rot > 0)
168 {
169 $font_height = abs($bounds[1]-$bounds[7]);
170 }
171 else
172 {
173 $font_height = abs($bounds[7]-$bounds[1]);
174 }
175 // determine bounding box.
176 $bounds = ImageTTFBBox($size, 0, $font, $msg);
177 $width = abs($bounds[4]-$bounds[6]);
178 $height = abs($bounds[7]-$bounds[1]);
179 $offset_y = $font_height+abs(($height - $font_height)/2)-1;
180 $offset_x = 0;
181 $image = imagecreatetruecolor($width+($pad*2),$height+($pad*2));
182 imagesavealpha($image, true);
183 //$background = ImageColorAllocate($image, $bg_red, $bg_grn, $bg_blu);
184 $foreground = ImageColorAllocate($image, $red, $grn, $blu);
185 $background = imagecolorallocatealpha($image, 0, 0, 0, 127);
186 imagefill($image, 0, 0, $background);
187 // render the image
188 ImageTTFText($image, $size, 0, $offset_x+$pad, $offset_y+$pad, $foreground, $font, $msg);
189 // output PNG object.
190 Header("Content-type: image/png");
191 imagePNG($image);
192 die;
193 }
194 }
195 }
196
197 function init_row_meta($links, $file) {
198 if (CRYPTX_BASENAME == $file) {
199 return array_merge(
200 $links,
201 array(
202 sprintf(
203 '<a href="options-general.php?page=%s">%s</a>',
204 CRYPTX_BASENAME,
205 __('Settings')
206 )
207 ),
208 array(
209 sprintf(
210 '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4026696">%s</a>',
211 __('Donate', 'cryptx')
212 )
213 )
214 );
215 }
216 return $links;
217 }
218
219 function filter($apply)
220 {
221 global $cryptX_var, $shortcode_tags;
222
223 if (@$cryptX_var[autolink]) {
224 add_filter($apply, array(&$this, 'autolink'), 5);
225 }
226
227 if (!empty($shortcode_tags) || is_array($shortcode_tags)) {
228 add_filter($apply, array(&$this, 'autolink'), 11);
229 }
230
231 add_filter($apply, array($this, 'encryptx'), 12);
232 add_filter($apply, array($this, 'linktext'), 13);
233 }
234
235 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
236
237 function _excluded($ID) {
238 global $cryptX_var;
239 $return = false;
240 $exIDs = explode(",", $cryptX_var[excludedIDs]);
241 if(array_search($ID, $exIDs) >0 ) $return = true;
242 return $return;
243 }
244
245 function linktext($content)
246 {
247 global $post;
248 $cryptxoff = false;
249 $cryptxoffmeta = get_post_meta($post->ID,'cryptxoff',true);
250 if ($cryptxoffmeta == "true") {
251 $cryptxoff = true;
252 }
253 if (!$this->_excluded($post->ID)) {
254 $content = preg_replace_callback("/([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/i", array(get_class($this), '_Linktext'), $content );
255 }
256 return $content;
257 }
258
259 function _linktext($Match)
260 {
261 global $cryptX_var;
262 switch ($cryptX_var[opt_linktext]) {
263
264 case 1: // alternative text for mail link
265 $linktext = $cryptX_var[alt_linktext];
266 break;
267
268 case 2: // alternative image for mail link
269 $linktext = "<img src=\"" . $cryptX_var[alt_linkimage] . "\" class=\"cryptxImage\" alt=\"" . $cryptX_var[alt_linkimage_title] . "\" title=\"" . $cryptX_var[alt_linkimage_title] . "\">";
270 break;
271
272 case 3: // uploaded image for mail link
273 $imgurl = $cryptX_var[alt_uploadedimage];
274 $linktext = "<img src=\"" . $imgurl . "\" class=\"cryptxImage\" alt=\"" . $cryptX_var[http_linkimage_title] . "\" title=\"" . $cryptX_var[http_linkimage_title] . "\">";
275 break;
276
277 case 4: // text scrambled by antispambot
278 $linktext = antispambot($Match[1]);
279 break;
280
281 case 5: // convert to image
282 $linktext = "<img src=\"" . get_bloginfo('url') . "/" . md5( get_bloginfo('url') ) . "/" . antispambot($Match[1]) . "\" style=\"vertical-align:text-bottom\" alt=\"" . antispambot($Match[1]) . "\" title=\"" . antispambot($Match[1]) . "\">";
283 break;
284
285 default:
286 $linktext = str_replace( "@", $cryptX_var[at], $Match[1]);
287 $linktext = str_replace( ".", $cryptX_var[dot], $linktext);
288
289 }
290 return $linktext;
291 }
292
293 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
294
295 function _dirImages()
296 {
297 $dir = plugin_dir_path( __FILE__ ).'images';
298 $fh = opendir($dir);
299 $verzeichnisinhalt = array();
300 while (true == ($file = readdir($fh)))
301 {
302 if ((substr(strtolower($file), -3)=="jpg") or (substr(strtolower($file), -3)=="gif"))
303 {
304 $verzeichnisinhalt[] = $file;
305 }
306 }
307 return $verzeichnisinhalt;
308 }
309
310 function _dirFonts()
311 {
312 $dir = plugin_dir_path( __FILE__ ).'fonts';
313 $fh = opendir($dir);
314 $verzeichnisinhalt = array();
315 while (true == ($file = readdir($fh)))
316 {
317 if ((substr(strtolower($file), -3)=="ttf") or (substr(strtolower($file), -3)=="ttf"))
318 {
319 $verzeichnisinhalt[] = $file;
320 }
321 }
322 return $verzeichnisinhalt;
323 }
324
325 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
326
327 function encryptx($content)
328 {
329 global $post;
330
331 if (!$this->_excluded($post->ID)) {
332 $content = preg_replace_callback('/<a (.*?)(href=("|\')mailto:(.*?)("|\')(.*?)|)>(.*?)<\/a>/i', array(get_class($this), 'mailtocrypt'), $content );
333 }
334 return $content;
335 }
336
337 function mailtocrypt($Match)
338 {
339 global $cryptX_var;
340 $return = $Match[0];
341 $mailto = "mailto:" . $Match[4];
342 //* If mailto contains no email adress, like a link from "Sociable" do nothing *//
343 if (substr($Match[4], 0, 9) =="?subject=") return $return;
344 if (@$cryptX_var[java]) {
345 $crypt = '';
346 $ascii = 0;
347 for ($i = 0; $i < strlen( $Match[4] ); $i++) {
348 $ascii = ord ( substr ( $Match[4], $i ) );
349 if (8364 <= $char) {
350 $ascii = 128;
351 }
352 $crypt .= chr($ascii + 1);
353 }
354 $javascript="javascript:DeCryptX('" . $crypt . "')";
355 $return = str_replace( "mailto:".$Match[4], $javascript, $return);
356 } else {
357 $return = str_replace( $mailto, antispambot($mailto), $return);
358 }
359 return $return;
360 }
361
362
363 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
364
365 function autolink($content) {
366
367 $src[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
368 $src[]="/(>)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))(<)/si";
369 $src[]="/(\()([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))(\))/si";
370 $src[]="/(>)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))([\s])/si";
371 $src[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))(<)/si";
372 $src[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
373 $src[]="/(<a[^>]*>)<a[^>]*>/";
374 $src[]="/(<\/A>)<\/A>/i";
375
376 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>";
377 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
378 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
379 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
380 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
381 $tar[]="<a href=\"mailto:\\0\">\\0</a>";
382 $tar[]="\\1";
383 $tar[]="\\1";
384
385 $content = preg_replace($src,$tar,$content);
386
387 return $content;
388 }
389
390 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
391
392
393 function install() {
394 global $cryptX_var, $wpdb;
395 $firstImage = $this->_dirImages();
396 $firstFont = $this->_dirFonts();
397 add_option(
398 'cryptX',
399 array(
400 'at' => ' [at] ',
401 'dot' => ' [dot] ',
402 'theContent' => 1,
403 'theExcerpt' => 0,
404 'commentText' => 1,
405 'widgetText' => 0,
406 'java' => 1,
407 'opt_linktext' => 0,
408 'autolink' => 1,
409 'excludedIDs' => '',
410 'metaBox' => 1,
411 'alt_uploadedimage' => plugins_url('cryptx/images/').$firstImage[0],
412 'c2i_font' => plugin_dir_path( __FILE__ ).'fonts/'.$firstFont[0],
413 'c2i_fontSize' => 10,
414 'c2i_fontRGB' => '000000',
415 )
416 );
417 $cryptX_var = (array) get_option('cryptX'); // reread Options
418 if ($cryptX_var[excludedIDs] == "") {
419 $tmp = array();
420 $excludes = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'cryptxoff' AND meta_value = 'true'");
421 if(count($excludes) > 0) {
422 foreach ($excludes as $exclude) {
423 $tmp[] = $exclude->post_id;
424 }
425 sort($tmp);
426 $cryptX_var[excludedIDs] = implode(",", $tmp);
427 update_option( 'cryptX', $cryptX_var);
428 $cryptX_var = (array) get_option('cryptX'); // reread Options
429 $wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_key = 'cryptxoff'");
430 }
431 }
432 if (empty($cryptX_var[c2i_font])) {
433 $cryptX_var[c2i_font] = plugin_dir_path( __FILE__ ).'fonts/'.$firstFont[0];
434 }
435 if (empty($cryptX_var[c2i_fontSize])) {
436 $cryptX_var[c2i_fontSize] = 10;
437 }
438 if (empty($cryptX_var[c2i_fontRGB])) {
439 $cryptX_var[c2i_fontRGB] = '000000';
440 }
441 update_option( 'cryptX', $cryptX_var);
442 $cryptX_var = (array) get_option('cryptX'); // reread Options
443 }
444
445 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
446
447 /**
448 * Attach the menu page to the `Options` tab
449 */
450 function header()
451 {
452 $cryptX_script.= "<script type=\"text/javascript\" src=\"" . site_url() . '/' . PLUGINDIR . '/' . dirname(plugin_basename (__FILE__)) . "/js/cryptx.js\"></script>\n";
453 print($cryptX_script);
454 }
455
456 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
457
458
459 function cryptx_meta() {
460 global $post;
461 ?>
462 <input type="checkbox" name="cryptxoff" <?php if ($this->_excluded($post->ID)) { echo 'checked="checked"'; } ?>/> Disable CryptX for this post/page
463 <?php
464 }
465
466 function cryptx_option() {
467 global $post;
468 if ( current_user_can('edit_posts') ) { ?>
469 <fieldset id="cryptxoption" class="dbx-box">
470 <h3 class="dbx-handle">CryptX</h3>
471 <div class="dbx-content">
472 <input type="checkbox" name="cryptxoff" <?php if ($this->_excluded($post->ID)) { echo 'checked="checked"'; } ?>/> Disable CryptX for this post/page
473 </div>
474 </fieldset>
475 <?php
476 }
477 }
478
479 function cryptx_meta_box() {
480 // Check whether the 2.5 function add_meta_box exists, and if it doesn't use 2.3 functions.
481 if ( function_exists('add_meta_box') ) {
482 add_meta_box('cryptx','CryptX', array(&$this, 'cryptx_meta'),'post');
483 add_meta_box('cryptx','CryptX', array(&$this, 'cryptx_meta'),'page');
484 } else {
485 add_action('dbx_post_sidebar', array(&$this, 'cryptx_option'));
486 add_action('dbx_page_sidebar', array(&$this, 'cryptx_option'));
487 }
488 }
489
490 //add_action('admin_menu', 'cryptx_meta_box');
491
492 function cryptx_insert_post($pID) {
493 global $cryptX_var, $post;
494 $b = explode(",", $cryptX_var[excludedIDs]);
495 foreach($b as $x=>$y) {
496 if($y == $pID) {
497 unset($b[$x]);
498 break;
499 }
500 }
501 if (isset($_POST['cryptxoff'])) $b[] = $pID;
502 sort($b);
503 $cryptX_var[excludedIDs] = implode(",", $b);
504 update_option( 'cryptX', $cryptX_var);
505 $cryptX_var = (array) get_option('cryptX'); // reread Options
506 }
507
508 /**
509 * Attach the menu page to the `Options` tab
510 */
511 function menu() {
512 add_options_page(
513 'CryptX',
514 (version_compare($GLOBALS['wp_version'], '2.6.999', '>') ? '<img src="' .@plugins_url('cryptx/icon.png'). '" width="10" height="10" alt="CryptX Icon" />' : ''). 'CryptX',
515 9,
516 __FILE__,
517 array(
518 $this,
519 '_submenu'
520 )
521 );
522 }
523
524
525 /**
526 * Handles and renders the menu page
527 */
528 function _submenu() {
529 global $cryptX_var;
530
531 if (isset($_POST) && !empty($_POST)) {
532 if (function_exists('current_user_can') === true && (current_user_can('manage_options') === false || current_user_can('edit_plugins') === false)) {
533 wp_die("You don't have permission to access!");
534 }
535 check_admin_referer('cryptX');
536 update_option( 'cryptX', $_POST['cryptX_var']);
537 $cryptX_var = (array) get_option('cryptX'); // reread Options
538 ?>
539 <div id="message" class="updated fade">
540 <p><strong><?php _e('Settings saved.') ?></strong></p>
541 </div>
542 <?php } ?>
543
544 <div class="wrap">
545 <?php if (version_compare($GLOBALS['wp_version'], '2.6.999', '>')) { ?>
546 <div class="icon32" style="background: url(<?php echo @plugins_url('cryptx/icon32.png') ?>) no-repeat"><br /></div>
547 <?php } ?>
548 <h2>CryptX</h2>
549
550 <form method="post" action="">
551
552 <?php wp_nonce_field('cryptX') ?>
553
554 <div id="poststuff" class="ui-sortable">
555 <div class="postbox">
556
557 <h3><?php _e("Presentation",'cryptx'); ?></h3>
558
559 <div class="inside">
560 <table class="form-table">
561 <tr valign="top">
562 <td><input name="cryptX_var[opt_linktext]" type="radio" id="opt_linktext" value="0" <?php echo ($cryptX_var[opt_linktext] == 0) ? 'checked="checked"' : ''; ?> /></td>
563 <th scope="row"><label for="cryptX_var[at]"><?php _e("Replacement for '@'",'cryptx'); ?></label></th>
564 <td><input name="cryptX_var[at]" value="<?php echo $cryptX_var[at]; ?>" type="text" class="regular-text" /></td>
565 </tr>
566 <tr valign="top">
567 <td>&nbsp;</td>
568 <th scope="row"><label for="cryptX_var[dot]"><?php _e("Replacement for '.'",'cryptx'); ?></label></th>
569 <td><input name="cryptX_var[dot]" value="<?php echo $cryptX_var[dot]; ?>" type="text" class="regular-text" /></td>
570 </tr>
571 <tr valign="top">
572 <td scope="row"><input type="radio" name="cryptX_var[opt_linktext]" id="opt_linktext2" value="1" <?php echo ($cryptX_var[opt_linktext] == 1) ? 'checked="checked"' : ''; ?>/></td>
573 <th><label for="cryptX_var[alt_linktext]"><?php _e("Text for link",'cryptx'); ?></label></th>
574 <td><input name="cryptX_var[alt_linktext]" value="<?php echo $cryptX_var[alt_linktext]; ?>" type="text" class="regular-text" /></td>
575 </tr>
576 <tr valign="top">
577 <td scope="row"><input type="radio" name="cryptX_var[opt_linktext]" id="opt_linktext3" value="2" <?php echo ($cryptX_var[opt_linktext] == 2) ? 'checked="checked"' : ''; ?>/></td>
578 <th><label for="cryptX_var[alt_linkimage]"><?php _e("Image-URL",'cryptx'); ?></label></th>
579 <td><input name="cryptX_var[alt_linkimage]" value="<?php echo $cryptX_var[alt_linkimage]; ?>" type="text" class="regular-text" /></td>
580 </tr>
581 <tr valign="top">
582 <td scope="row">&nbsp;</td>
583 <th><label for="cryptX_var[http_linkimage_title]"><?php _e("Title-Tag for the Image",'cryptx'); ?></label></th>
584 <td><input name="cryptX_var[http_linkimage_title]" value="<?php echo $cryptX_var[http_linkimage_title]; ?>" type="text" class="regular-text" /></td>
585 </tr>
586 <tr valign="top">
587 <td scope="row"><input type="radio" name="cryptX_var[opt_linktext]" id="opt_linktext4" value="3" <?php echo ($cryptX_var[opt_linktext] == 3) ? 'checked="checked"' : ''; ?>/></td>
588 <th><label for="cryptX_var[alt_uploadedimage]"><?php _e("Select image from folder",'cryptx'); ?></label></th>
589 <td> <select name="cryptX_var[alt_uploadedimage]" onchange="cryptX_bild_wechsel(this)">
590 <?php foreach($this->_dirImages() as $image) {
591 ?>
592 <option value="<?php echo plugins_url('cryptx/images/').$image; ?>" <?php echo ($cryptX_var[alt_uploadedimage] == plugins_url('cryptx/images/').$image) ? 'selected' : ''; ?> ><?php echo $image; ?></option>
593 <?php } ?>
594 </select>
595 <br/><?php _e("the selected image: ",'cryptx'); ?><img src="<?php echo $cryptX_var[alt_uploadedimage]; ?>" id="cryptXmailTo" align="top" style="padding: 3px;"><br/>
596 <span class="setting-description"><?php echo sprintf( __("Upload your favorite email-image to '%s'. Only .jpg and .gif Supported!",'cryptx'), plugin_dir_path( __FILE__ ).'images/' ); ?></span></td>
597 </tr>
598 <tr valign="top">
599 <td>&nbsp;</td>
600 <th><label for="cryptX_var[alt_linkimage_title]"><?php _e("Title-Tag for the Image",'cryptx'); ?></label></th>
601 <td><input name="cryptX_var[alt_linkimage_title]" value="<?php echo $cryptX_var[alt_linkimage_title]; ?>" type="text" class="regular-text" /></td>
602 </tr>
603 <tr valign="top">
604 <td scope="row"><input type="radio" name="cryptX_var[opt_linktext]" id="opt_linktext4" value="4" <?php echo ($cryptX_var[opt_linktext] == 4) ? 'checked="checked"' : ''; ?>/></td>
605 <th colspan="2"><?php _e("Text scrambled by AntiSpamBot (<small>Try it and look at your site and check the html source!</small>)",'cryptx'); ?></th>
606 </tr>
607 <tr valign="top">
608 <td scope="row"><input type="radio" name="cryptX_var[opt_linktext]" id="opt_linktext5" value="5" <?php echo ($cryptX_var[opt_linktext] == 5) ? 'checked="checked"' : ''; ?>/></td>
609 <th><?php _e("Convert Email to PNG-image",'cryptx'); ?></th>
610 <td><?php _e("Example with the saved options: ",'cryptx'); ?><img src="<?php echo get_bloginfo('url'); ?>/<?php echo md5( get_bloginfo('url') ); ?>/<?php echo antispambot("test@example.com"); ?>" align="absmiddle" alt="<?php echo antispambot("test@example.com"); ?>" title="<?php echo antispambot("test@example.com"); ?>"></td>
611 </tr>
612 <tr valign="top">
613 <td>&nbsp;</td>
614 <th><label for="cryptX_var[c2i_font]"><?php _e("Choose a Font",'cryptx'); ?></label></th>
615 <td><select name="cryptX_var[c2i_font]">
616 <?php foreach($this->_dirFonts() as $font) { ?>
617 <option value="<?php echo plugin_dir_path( __FILE__ ).'fonts/'.$font; ?>" <?php echo ($cryptX_var[c2i_font] == plugin_dir_path( __FILE__ ).'fonts/'.$font) ? 'selected' : ''; ?> ><?php echo $font; ?></option>
618 <?php } ?>
619 </select><br/>
620 <span class="setting-description"><?php echo sprintf( __("Upload your favorite font to '%s'. Only .ttf is Supported!",'cryptx'), plugin_dir_path( __FILE__ ).'fonts/' ); ?></span>
621 </td>
622 </tr>
623 <tr valign="top">
624 <td>&nbsp;</td>
625 <th><label for="cryptX_var[c2i_fontSize]"><?php _e("Font size (pixel)",'cryptx'); ?></label></th>
626 <td><input name="cryptX_var[c2i_fontSize]" value="<?php echo $cryptX_var[c2i_fontSize]; ?>" type="text" class="regular-text" /></td>
627 </tr>
628 <tr valign="top">
629 <td>&nbsp;</td>
630 <th><label for="cryptX_var[c2i_fontRGB]"><?php _e("Font color (RGB)",'cryptx'); ?></label></th>
631 <td><input name="cryptX_var[c2i_fontRGB]" value="<?php echo $cryptX_var[c2i_fontRGB]; ?>" type="text" class="regular-text" /></td>
632 </tr>
633 </table>
634 </div>
635 </div>
636
637 <p><input type="submit" name="cryptX" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
638
639 <div class="postbox">
640
641 <h3><?php _e("General",'cryptx'); ?></h3>
642
643 <div class="inside">
644 <table class="form-table">
645 <tr valign="top">
646 <th scope="row"><?php _e("Apply CryptX to...",'cryptx'); ?></th>
647 <td><input name="cryptX_var[theContent]" <?php echo ($cryptX_var[theContent]) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Content",'cryptx'); ?> <?php _e("(<i>this can be disabled per Post by an Option</i>)",'cryptx'); ?><br/>
648 <input name="cryptX_var[theExcerpt]" <?php echo ($cryptX_var[theExcerpt]) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Excerpt",'cryptx'); ?><br/>
649 <input name="cryptX_var[commentText]" <?php echo ($cryptX_var[commentText]) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Comments",'cryptx'); ?><br/>
650 <input name="cryptX_var[widgetText]" <?php echo ($cryptX_var[widgetText]) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Widgets",'cryptx'); ?> <?php _e("(<i>works only on all widgets, not on a single widget</i>!)",'cryptx'); ?></td>
651 </tr>
652 <tr valign="top">
653 <th scope="row"><?php _e("Excluded ID's...",'cryptx'); ?></th>
654 <td><input name="cryptX_var[excludedIDs]" value="<?php echo $cryptX_var[excludedIDs]; ?>" type="text" class="regular-text" />
655 <br/><span class="setting-description"><?php _e("Enter all Page/Post ID's to exclude from CryptX as comma seperated list.",'cryptx'); ?></span>
656 <br/><input name="cryptX_var[metaBox]" <?php echo ($cryptX_var[metaBox]) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Enable the CryptX Widget on editing a post or page.",'cryptx'); ?></td>
657 </tr>
658 <tr valign="top">
659 <th scope="row"><?php _e("Type of decryption",'cryptx'); ?></th>
660 <td><input name="cryptX_var[java]" <?php echo ($cryptX_var[java]) ? 'checked="checked"' : ''; ?> type="radio" value="1" />&nbsp;&nbsp;<?php _e("Use javascript to hide the Email-Link.",'cryptx'); ?><br/>
661 <input name="cryptX_var[java]" <?php echo (!$cryptX_var[java]) ? 'checked="checked"' : ''; ?> type="radio" value="0" />&nbsp;&nbsp;<?php _e("Use Unicode to hide the Email-Link.",'cryptx'); ?></td>
662 </tr>
663 <tr valign="top">
664 <th scope="row"><?php _e("Where to load the needed javascript...",'cryptx'); ?></th>
665 <td><input name="cryptX_var[load_java]" <?php echo (!$cryptX_var[load_java]) ? 'checked="checked"' : ''; ?> type="radio" value="0" />&nbsp;&nbsp;<?php _e("Load the javascript in the <b>header</b> of the page.",'cryptx'); ?><br/>
666 <input name="cryptX_var[load_java]" <?php echo ($cryptX_var[load_java]) ? 'checked="checked"' : ''; ?> type="radio" value="1" />&nbsp;&nbsp;<?php _e("Load the javascript in the <b>footer</b> of the page.",'cryptx'); ?></td>
667 </tr>
668 <tr valign="top">
669 <th scope="row" colspan="2"><input name="cryptX_var[autolink]" <?php echo ($cryptX_var[autolink]) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Add mailto to all unlinked email addresses",'cryptx'); ?></th>
670 </tr>
671 </table>
672
673 </div>
674 </div>
675 <p><input type="submit" name="cryptX" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
676
677 <div class="postbox">
678
679 <h3><?php _e("How to use CryptX in your Template",'cryptx'); ?></h3>
680
681 <div class="inside">
682 <table class="form-table">
683 <tr>
684 <td>In your Template you can use the following function to encrypt a email address:
685 <p style="border:1px solid #000; background-color: #e9e9e9;padding: 10px;">
686 <i>
687 &lt;?php <br/>
688 &nbsp;&nbsp;&nbsp;&nbsp; $mail="name@example.com"; <br/>
689 &nbsp;&nbsp;&nbsp;&nbsp; $text="Contact"; <br/>
690 &nbsp;&nbsp;&nbsp;&nbsp; $css ="email"; <br/>
691 &nbsp;&nbsp;&nbsp;&nbsp; if (function_exists('cryptx')) { <br/>
692 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cryptx($mail, $text, $css, 1); <br/>
693 &nbsp;&nbsp;&nbsp;&nbsp; } else { <br/>
694 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo sprintf('&lt;a href="mailto:%s" class="%s"&gt;%s&lt;/a&gt;', $mail, $css, ($text != "" ? $text : $mail)); <br/>
695 &nbsp;&nbsp;&nbsp;&nbsp; } <br/>
696 ?&gt;
697 </i></p>
698 <ol><li>parameter is the email address.</li>
699 <li>parameter is the linktext. If none given the email address is used.</li>
700 <li>parameter is a css class added to the link.</li>
701 <li>parameter is 1 for echo the encrypted email address or 0 to return the redult to a variable.</li></ol></td>
702 </tr>
703 </table>
704
705 </div>
706 </div>
707
708 <div class="postbox">
709
710 <h3><?php _e("Information",'cryptx'); ?></h3>
711
712 <div class="inside">
713 <table class="form-table">
714 <tr>
715 <td><?php
716 $data = get_plugin_data(__FILE__);
717 echo sprintf(
718 '%1$s: %2$s | %3$s: %4$s | %5$s: <a href="http://weber-nrw.de" target="_blank">Ralf Weber</a> | <a href="http://twitter.com/Weber_NRW" target="_blank">%6$s</a> | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4026696">%7$s</a><br />',
719 __('Plugin'),
720 'CryptX',
721 __('Version'),
722 $data['Version'],
723 __('Author'),
724 __('Follow on Twitter', 'cryptx'),
725 __('Donate', 'cryptx')
726 );
727 ?>
728 Please support me by translating CryptX into other languages. You can download the cryptx.pot file from my <a href="http://weber-nrw.de/wordpress/cryptx/downloads/">site</a> and mail me the zipped language files. Thanks for it.
729 </td>
730 </tr>
731 </table>
732
733 </div>
734 </div>
735
736 </div>
737
738 </form>
739
740 <script type="text/javascript">
741 <!--
742 function cryptX_bild_wechsel(select){
743 document.getElementById("cryptXmailTo").src = select.options[select.options.selectedIndex].value;
744 return true;
745 } //-->
746 </script>
747
748 </div>
749 <?php
750 }
751
752 // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
753
754
755 //--end-of-class
756 }
757
758 }
759
760 /////////////////////////////////////////////////////////////////////////////
761
762 /**
763 * Initiating the plugin...
764 * @see cryptX
765 */
766 new cryptX;
767
768 /**
769 * Create Template functions...
770 * $content = string to convert
771 * $text = string to replace linktext
772 * $css = assign a css class to the link
773 * $echo = 0: keep result in a variable, 1: show result
774 */
775 function cryptx( $content, $text="", $css="", $echo=1 )
776 {
777 global $cryptX_var;
778 $cryptX = new cryptX;
779 $content = $cryptX->autolink( $content );
780 $content = $cryptX->encryptx( $content );
781 if("" != $text) {
782 $content = preg_replace( "/(<a[^>]*>)(.*)(<\/a>)/i", '$1'.$text.'$3', $content );
783 }
784 if("" != $css) {
785 $content = preg_replace( "/(<a[^>]*)(>)/i", '$1 class="'.$css.'"$2', $content );
786 }
787 if(1 == $echo) echo $content;
788 return $content;
789 }
790 ?>