PluginProbe
CryptX / 2.6.1
CryptX v2.6.1
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.1, at cryptx.php

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