PluginProbe
CryptX / 3.1.2
CryptX v3.1.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 3.1.2, at cryptx.php

681 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: 3.1.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 * "CryptX" WordPress Plugin
13 *
14 * @author Ralf Weber <ralf@weber-nrw.de>
15 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
16 */
17
18 if (!defined('ABSPATH')) {
19 return ;
20 }
21
22 define( 'CRYPTX_BASENAME', plugin_basename( __FILE__ ) );
23 define( 'CRYPTX_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
24 define( 'CRYPTX_FILENAME', str_replace( CRYPTX_BASEFOLDER.'/', '', plugin_basename(__FILE__) ) );
25
26 load_plugin_textdomain('cryptx', false, 'cryptx/languages/');
27
28 $cryptX_var = (array) get_option('cryptX');
29
30
31 global $cryptX_var, $wp_version;
32
33 if (@$cryptX_var['theContent']) {
34 rw_cryptx_filter('the_content');
35 }
36 if (@$cryptX_var['the_meta_key']) {
37 rw_cryptx_filter('the_meta_key');
38 }
39 if (@$cryptX_var['theExcerpt']) {
40 rw_cryptx_filter('the_excerpt');
41 }
42 if (@$cryptX_var['commentText']) {
43 rw_cryptx_filter('comment_text');
44 }
45 if (@$cryptX_var['widgetText']) {
46 rw_cryptx_filter('widget_text');
47 }
48
49 if (is_admin()) {
50 add_action('admin_menu', 'rw_cryptx_menu');
51 }
52
53 add_action( 'activate_' . str_replace( DIRECTORY_SEPARATOR, '/', str_replace( realpath(ABSPATH . PLUGINDIR) . DIRECTORY_SEPARATOR, '', __FILE__ ) ), 'rw_cryptx_install' );
54
55 if (@$cryptX_var['java']) {
56 if (@$cryptX_var['load_java']) {
57 add_action( 'wp_footer', 'rw_cryptx_header', 9 );
58 } else {
59 add_action( 'wp_head', 'rw_cryptx_header', 9 );
60 }
61 }
62
63 if (@$cryptX_var[metaBox]) {
64 add_action('admin_menu', 'rw_cryptx_meta_box');
65 add_action('wp_insert_post', 'rw_cryptx_insert_post' );
66 add_action('wp_update_post', 'rw_cryptx_insert_post' );
67 }
68
69 if ( version_compare( $wp_version, '2.8', '>' ) ) {
70 add_filter( 'plugin_row_meta', 'rw_cryptx_init_row_meta', 10, 2 ); // only 2.8 and higher
71 } else {
72 add_filter( 'plugin_action_links', 'rw_cryptx_init_row_meta', 10, 2 );
73 }
74
75 add_filter( 'init', 'rw_cryptx_init_tinyurl');
76 add_action( 'parse_request', 'rw_cryptx_parse_request');
77
78 add_shortcode( 'cryptx', 'rw_cryptx_shortcode');
79
80 function rw_cryptx_shortcode( $atts, $content=null) {
81 global $cryptX_var;
82
83 if (@$cryptX_var[autolink]) $content = rw_cryptx_autolink($content, true);
84 $content = rw_cryptx_encryptx($content, true);
85 $content = rw_cryptx_linktext($content, true);
86
87 return $content;
88 }
89
90 function rw_cryptx_parse_request( $wp ) {
91 if ( isset($_GET['cryptx']) ) {
92 switch( $_GET['cryptx'] ) {
93 case 'news':
94 include( 'ajax/news.php' );
95 break;
96 }
97 exit;
98 }
99 }
100
101 function rw_cryptx_init_tinyurl() {
102 global $cryptX_var;
103 $url = $_SERVER['REQUEST_URI'];
104 $params = explode( '/', $url );
105 if ( count( $params ) > 1 ) {
106 $tiny_url = $params[count( $params ) -2];
107 if ( $tiny_url == md5( get_bloginfo('url') ) ) {
108 $font = $cryptX_var['c2i_font'];
109 $msg = $params[count( $params ) -1];
110 $size = $cryptX_var['c2i_fontSize'];
111 $pad = 1;
112 $transparent = 1;
113 $red = hexdec(substr($cryptX_var['c2i_fontRGB'],0,2));
114 $grn = hexdec(substr($cryptX_var['c2i_fontRGB'],2,2));
115 $blu = hexdec(substr($cryptX_var['c2i_fontRGB'],4,2));
116 $bg_red = 255 - $red;
117 $bg_grn = 255 - $grn;
118 $bg_blu = 255 - $blu;
119 $width = 0;
120 $height = 0;
121 $offset_x = 0;
122 $offset_y = 0;
123 $bounds = array();
124 $image = "";
125 $bounds = ImageTTFBBox($size, 0, $font, "W");
126 $font_height = abs($bounds[7]-$bounds[1]);
127 $bounds = ImageTTFBBox($size, 0, $font, $msg);
128 $width = abs($bounds[4]-$bounds[6]);
129 $height = abs($bounds[7]-$bounds[1]);
130 $offset_y = $font_height+abs(($height - $font_height)/2)-1;
131 $offset_x = 0;
132 $image = imagecreatetruecolor($width+($pad*2),$height+($pad*2));
133 imagesavealpha($image, true);
134 $foreground = ImageColorAllocate($image, $red, $grn, $blu);
135 $background = imagecolorallocatealpha($image, 0, 0, 0, 127);
136 imagefill($image, 0, 0, $background);
137 ImageTTFText($image, $size, 0, $offset_x+$pad, $offset_y+$pad, $foreground, $font, $msg);
138 Header("Content-type: image/png");
139 imagePNG($image);
140 die;
141 }
142 }
143 }
144
145 function rw_cryptx_init_row_meta($links, $file) {
146 if (CRYPTX_BASENAME == $file) {
147 return array_merge(
148 $links,
149 array(
150 sprintf(
151 '<a href="options-general.php?page=%s">%s</a>',
152 CRYPTX_BASENAME,
153 __('Settings')
154 )
155 ),
156 array(
157 sprintf(
158 '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4026696">%s</a>',
159 __('Donate', 'cryptx')
160 )
161 )
162 );
163 }
164 return $links;
165 }
166
167 function rw_cryptx_filter($apply) {
168 global $cryptX_var, $post, $shortcode_tags;
169 if (@$cryptX_var['autolink']) {
170 add_filter($apply, 'rw_cryptx_autolink', 5);
171 if (!empty($shortcode_tags) || is_array($shortcode_tags)) {
172 add_filter($apply, 'rw_cryptx_autolink', 11);
173 }
174 }
175 add_filter($apply, 'rw_cryptx_encryptx', 12);
176 add_filter($apply, 'rw_cryptx_linktext', 13);
177 }
178
179 function rw_cryptx_excluded($ID) {
180 global $cryptX_var;
181 $return = false;
182 $exIDs = explode(",", $cryptX_var['excludedIDs']);
183 if(in_array($ID, $exIDs) > 0 ) $return = true;
184 return $return;
185 }
186
187 function rw_cryptx_linktext($content, $shortcode=false) {
188 global $post;
189 if (!rw_cryptx_excluded($post->ID) OR $shortcode!=false) {
190 $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", 'rw_cryptx_do_Linktext', $content );
191 }
192 return $content;
193 }
194
195 function rw_cryptx_do_linktext($Match) {
196 global $cryptX_var;
197 switch ($cryptX_var['opt_linktext']) {
198
199 case 1: // alternative text for mail link
200 $linktext = $cryptX_var['alt_linktext'];
201 break;
202
203 case 2: // alternative image for mail link
204 $linktext = "<img src=\"" . $cryptX_var['alt_linkimage'] . "\" class=\"cryptxImage\" alt=\"" . $cryptX_var['alt_linkimage_title'] . "\" title=\"" . antispambot($cryptX_var['alt_linkimage_title']) . "\" />";
205 break;
206
207 case 3: // uploaded image for mail link
208 $imgurl = $cryptX_var['alt_uploadedimage'];
209 $linktext = "<img src=\"" . $imgurl . "\" class=\"cryptxImage\" alt=\"" . $cryptX_var['http_linkimage_title'] . "\" title=\"" .antispambot( $cryptX_var['http_linkimage_title']) . "\" />";
210 break;
211
212 case 4: // text scrambled by antispambot
213 $linktext = antispambot($Match[1]);
214 break;
215
216 case 5: // convert to image
217 $linktext = "<img src=\"" . get_bloginfo('url') . "/" . md5( get_bloginfo('url') ) . "/" . antispambot($Match[1]) . "\" class=\"cryptxImage\" alt=\"" . antispambot($Match[1]) . "\" title=\"" . antispambot($Match[1]) . "\" />";
218 break;
219
220 default:
221 $linktext = str_replace( "@", $cryptX_var['at'], $Match[1]);
222 $linktext = str_replace( ".", $cryptX_var['dot'], $linktext);
223
224 }
225 return $linktext;
226 }
227
228 function rw_cryptx_dirImages() {
229 $dir = plugin_dir_path( __FILE__ ).'images';
230 $fh = opendir($dir);
231 $verzeichnisinhalt = array();
232 while (true == ($file = readdir($fh)))
233 {
234 if ((substr(strtolower($file), -3)=="jpg") or (substr(strtolower($file), -3)=="gif"))
235 {
236 $verzeichnisinhalt[] = $file;
237 }
238 }
239 return $verzeichnisinhalt;
240 }
241
242 function rw_cryptx_dirFonts() {
243 $dir = plugin_dir_path( __FILE__ ).'fonts';
244 $fh = opendir($dir);
245 $verzeichnisinhalt = array();
246 while (true == ($file = readdir($fh)))
247 {
248 if ((substr(strtolower($file), -3)=="ttf") or (substr(strtolower($file), -3)=="ttf"))
249 {
250 $verzeichnisinhalt[] = $file;
251 }
252 }
253 return $verzeichnisinhalt;
254 }
255
256 function rw_cryptx_encryptx($content, $shortcode=false) {
257 global $post;
258
259 if (!rw_cryptx_excluded($post->ID) OR $shortcode!=false) {
260 $content = preg_replace_callback('/<a (.*?)(href=("|\')mailto:(.*?)("|\')(.*?)|)>(.*?)<\/a>/i', 'rw_cryptx_mailtocrypt', $content );
261 }
262 return $content;
263 }
264
265 function rw_cryptx_mailtocrypt($Match) {
266 global $cryptX_var;
267 $return = $Match[0];
268 $mailto = "mailto:" . $Match[4];
269 if (substr($Match[4], 0, 9) =="?subject=") return $return;
270 if (@$cryptX_var['java']) {
271 $crypt = '';
272 $ascii = 0;
273 for ($i = 0; $i < strlen( $Match[4] ); $i++) {
274 $ascii = ord ( substr ( $Match[4], $i ) );
275 if (8364 <= $ascii) {
276 $ascii = 128;
277 }
278 $crypt .= chr($ascii + 1);
279 }
280 $javascript="javascript:DeCryptX('" . $crypt . "')";
281 $return = str_replace( "mailto:".$Match[4], $javascript, $return);
282 } else {
283 $return = str_replace( $mailto, antispambot($mailto), $return);
284 }
285 return $return;
286 }
287
288 function rw_cryptx_autolink($content, $shortcode=false) {
289 global $post;
290 if (rw_cryptx_excluded($post->ID) AND $shortcode==false) return $content;
291 $src[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
292 $src[]="/(>)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))(<)/si";
293 $src[]="/(\()([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))(\))/si";
294 $src[]="/(>)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))([\s])/si";
295 $src[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))(<)/si";
296 $src[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
297 $src[]="/(<a[^>]*>)<a[^>]*>/";
298 $src[]="/(<\/A>)<\/A>/i";
299
300 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>";
301 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
302 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
303 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
304 $tar[]="\\1<a href=\"mailto:\\2\">\\2</a>\\6";
305 $tar[]="<a href=\"mailto:\\0\">\\0</a>";
306 $tar[]="\\1";
307 $tar[]="\\1";
308 $content = preg_replace($src,$tar,$content);
309 return $content;
310 }
311
312 function rw_cryptx_install() {
313 global $cryptX_var, $wpdb;
314 $firstImage = rw_cryptx_dirImages();
315 $firstFont = rw_cryptx_dirFonts();
316 $cryptX_var = (array) get_option('cryptX'); // reread Options
317 $defaults = array(
318 'at' => ' [at] ',
319 'dot' => ' [dot] ',
320 'theContent' => 1,
321 'the_meta_key' => 1,
322 'theExcerpt' => 0,
323 'commentText' => 1,
324 'widgetText' => 0,
325 'java' => 1,
326 'load_java' => 0,
327 'opt_linktext' => 0,
328 'autolink' => 1,
329 'alt_linktext' => '',
330 'alt_linkimage' => '',
331 'http_linkimage_title' => '',
332 'alt_linkimage_title' => '',
333 'excludedIDs' => '',
334 'metaBox' => 1,
335 'alt_uploadedimage' => plugins_url('cryptx/images/').$firstImage[0],
336 'c2i_font' => plugin_dir_path( __FILE__ ).'fonts/'.$firstFont[0],
337 'c2i_fontSize' => 10,
338 'c2i_fontRGB' => '000000'
339 );
340 $cryptX_var = $cryptX_var + $defaults;
341 if ($cryptX_var['excludedIDs'] == "") {
342 $tmp = array();
343 $excludes = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'cryptxoff' AND meta_value = 'true'");
344 if(count($excludes) > 0) {
345 foreach ($excludes as $exclude) {
346 $tmp[] = $exclude->post_id;
347 }
348 sort($tmp);
349 $cryptX_var['excludedIDs'] = implode(",", $tmp);
350 update_option( 'cryptX', $cryptX_var);
351 $cryptX_var = (array) get_option('cryptX'); // reread Options
352 $wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_key = 'cryptxoff'");
353 }
354 }
355 if (empty($cryptX_var['c2i_font'])) {
356 $cryptX_var['c2i_font'] = plugin_dir_path( __FILE__ ).'fonts/'.$firstFont[0];
357 }
358 if (empty($cryptX_var['c2i_fontSize'])) {
359 $cryptX_var['c2i_fontSize'] = 10;
360 }
361 if (empty($cryptX_var['c2i_fontRGB'])) {
362 $cryptX_var['c2i_fontRGB'] = '000000';
363 }
364 update_option( 'cryptX', $cryptX_var);
365 $cryptX_var = (array) get_option('cryptX'); // reread Options
366 }
367
368 function rw_cryptx_header() {
369 $cryptX_script = "<script type=\"text/javascript\" src=\"" . site_url() . '/' . PLUGINDIR . '/' . dirname(plugin_basename (__FILE__)) . "/js/cryptx.js\"></script>\n";
370 print($cryptX_script);
371 }
372
373 function rw_cryptx_meta() {
374 global $post;
375 ?>
376 <input type="checkbox" name="cryptxoff" <?php if (rw_cryptx_excluded($post->ID)) { echo 'checked="checked"'; } ?>/> Disable CryptX for this post/page
377 <?php
378 }
379
380 function rw_cryptx_option() {
381 global $post;
382 if ( current_user_can('edit_posts') ) { ?>
383 <fieldset id="cryptxoption" class="dbx-box">
384 <h3 class="dbx-handle">CryptX</h3>
385 <div class="dbx-content">
386 <input type="checkbox" name="cryptxoff" <?php if (rw_cryptx_excluded($post->ID)) { echo 'checked="checked"'; } ?>/> Disable CryptX for this post/page
387 </div>
388 </fieldset>
389 <?php
390 }
391 }
392
393 function rw_cryptx_meta_box() {
394 if ( function_exists('add_meta_box') ) {
395 add_meta_box('cryptx','CryptX', 'rw_cryptx_meta','post');
396 add_meta_box('cryptx','CryptX', 'rw_cryptx_meta','page');
397 } else {
398 add_action('dbx_post_sidebar', 'rw_cryptx_option');
399 add_action('dbx_page_sidebar', 'rw_cryptx_option');
400 }
401 }
402
403 function rw_cryptx_insert_post($pID) {
404 global $cryptX_var, $post;
405 $rev = wp_is_post_revision($pID);
406 if($rev) $pID = $rev;
407 $b = explode(",", $cryptX_var['excludedIDs']);
408 if($b[0] == '') unset($b[0]);
409 foreach($b as $x=>$y) {
410 if($y == $pID) {
411 unset($b[$x]);
412 break;
413 }
414 }
415 if (isset($_POST['cryptxoff'])) $b[] = $pID;
416 $b = array_unique($b);
417 sort($b);
418 $cryptX_var['excludedIDs'] = implode(",", $b);
419 update_option( 'cryptX', $cryptX_var);
420 $cryptX_var = (array) get_option('cryptX'); // reread Options
421 }
422
423 function rw_cryptx_menu() {
424 add_options_page(
425 'CryptX',
426 (version_compare($GLOBALS['wp_version'], '2.6.999', '>') ? '<img src="' .@plugins_url('cryptx/icon.png'). '" width="10" height="10" alt="CryptX Icon" />' : ''). 'CryptX',
427 'manage_options',
428 __FILE__,
429 'rw_cryptx_submenu'
430 );
431 }
432
433 function rw_cryptx_submenu() {
434 global $cryptX_var;
435 if (isset($_POST) && !empty($_POST)) {
436 if (function_exists('current_user_can') === true && (current_user_can('manage_options') === false || current_user_can('edit_plugins') === false)) {
437 wp_die("You don't have permission to access!");
438 }
439 check_admin_referer('cryptX');
440 update_option( 'cryptX', $_POST['cryptX_var']);
441 $cryptX_var = (array) get_option('cryptX'); // reread Options
442 ?>
443 <div id="message" class="updated fade">
444 <p><strong><?php _e('Settings saved.') ?></strong></p>
445 </div>
446 <?php } ?>
447
448 <div class="wrap">
449 <?php if (version_compare($GLOBALS['wp_version'], '2.6.999', '>')) { ?>
450 <div class="icon32" style="background: url(<?php echo @plugins_url('cryptx/icon32.png') ?>) no-repeat"><br /></div>
451 <?php } ?>
452 <h2>CryptX</h2>
453 <br class="clear" />
454 <form method="post" action="">
455 <?php wp_nonce_field('cryptX') ?>
456 <div id="poststuff" class="ui-sortable">
457 <div id="rw_cryptx_information_box" class="postbox">
458 <h3><?php _e("Information",'cryptx'); ?></h3>
459 <div class="inside">
460 <table class="form-table">
461 <tr>
462 <td valign="top" width="1%" nowrap><b><i><u>NEWS:</u></i>&nbsp;</b></td>
463 <td valign="top"><div id="cryptx-news-content" style="display:none;"></div></td>
464 <td valign="top" width="50%" style="border-left: 1px solid #999;"><?php
465 $data = get_plugin_data(__FILE__);
466 echo sprintf(
467 '%1$s: %2$s <br /> %3$s: %4$s <br /> %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 />',
468 __('Plugin'),
469 'CryptX',
470 __('Version'),
471 $data['Version'],
472 __('Author'),
473 __('Follow on Twitter', 'cryptx'),
474 __('Donate', 'cryptx')
475 );
476 ?>
477 </td>
478 </tr>
479 <tr>
480 <td colspan="3" align="center" style="font-weight: bold;"><?php _e("Please support me by translating CryptX into other languages. You can download the cryptx.pot file from my",'cryptx'); ?> <a href="http://weber-nrw.de/wordpress/cryptx/downloads/"><?php _e("site",'cryptx'); ?></a> <?php _e("and mail me the zipped language files. Thanks for it.",'cryptx'); ?>
481 </td>
482 </tr>
483 </table>
484 </div>
485 </div>
486 <div id="rw_cryptx_presentation_box" class="postbox">
487 <h3><?php _e("Presentation",'cryptx'); ?></h3>
488 <div class="inside">
489 <table class="form-table">
490 <tr valign="top">
491 <td><input name="cryptX_var[opt_linktext]" type="radio" id="opt_linktext" value="0" <?php echo ($cryptX_var['opt_linktext'] == 0) ? 'checked="checked"' : ''; ?> /></td>
492 <th scope="row"><label for="cryptX_var[at]"><?php _e("Replacement for '@'",'cryptx'); ?></label></th>
493 <td><input name="cryptX_var[at]" value="<?php echo $cryptX_var['at']; ?>" type="text" class="regular-text" /></td>
494 </tr>
495 <tr valign="top">
496 <td>&nbsp;</td>
497 <th scope="row"><label for="cryptX_var[dot]"><?php _e("Replacement for '.'",'cryptx'); ?></label></th>
498 <td><input name="cryptX_var[dot]" value="<?php echo $cryptX_var['dot']; ?>" type="text" class="regular-text" /></td>
499 </tr>
500 <tr valign="top">
501 <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>
502 <th><label for="cryptX_var[alt_linktext]"><?php _e("Text for link",'cryptx'); ?></label></th>
503 <td><input name="cryptX_var[alt_linktext]" value="<?php echo $cryptX_var['alt_linktext']; ?>" type="text" class="regular-text" /></td>
504 </tr>
505 <tr valign="top">
506 <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>
507 <th><label for="cryptX_var[alt_linkimage]"><?php _e("Image-URL",'cryptx'); ?></label></th>
508 <td><input name="cryptX_var[alt_linkimage]" value="<?php echo $cryptX_var['alt_linkimage']; ?>" type="text" class="regular-text" /></td>
509 </tr>
510 <tr valign="top">
511 <td scope="row">&nbsp;</td>
512 <th><label for="cryptX_var[http_linkimage_title]"><?php _e("Title-Tag for the Image",'cryptx'); ?></label></th>
513 <td><input name="cryptX_var[http_linkimage_title]" value="<?php echo $cryptX_var['http_linkimage_title']; ?>" type="text" class="regular-text" /></td>
514 </tr>
515 <tr valign="top">
516 <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>
517 <th><label for="cryptX_var[alt_uploadedimage]"><?php _e("Select image from folder",'cryptx'); ?></label></th>
518 <td> <select name="cryptX_var[alt_uploadedimage]" onchange="cryptX_bild_wechsel(this)">
519 <?php foreach(rw_cryptx_dirImages() as $image) {
520 ?>
521 <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>
522 <?php } ?>
523 </select>
524 <br/><?php _e("the selected image: ",'cryptx'); ?><img src="<?php echo $cryptX_var['alt_uploadedimage']; ?>" id="cryptXmailTo" align="top" style="padding: 3px;"><br/>
525 <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>
526 </tr>
527 <tr valign="top">
528 <td>&nbsp;</td>
529 <th><label for="cryptX_var[alt_linkimage_title]"><?php _e("Title-Tag for the Image",'cryptx'); ?></label></th>
530 <td><input name="cryptX_var[alt_linkimage_title]" value="<?php echo $cryptX_var['alt_linkimage_title']; ?>" type="text" class="regular-text" /></td>
531 </tr>
532 <tr valign="top">
533 <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>
534 <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>
535 </tr>
536 <tr valign="top">
537 <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>
538 <th><?php _e("Convert Email to PNG-image",'cryptx'); ?></th>
539 <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>
540 </tr>
541 <tr valign="top">
542 <td>&nbsp;</td>
543 <th><label for="cryptX_var[c2i_font]"><?php _e("Choose a Font",'cryptx'); ?></label></th>
544 <td><select name="cryptX_var[c2i_font]">
545 <?php foreach(rw_cryptx_dirFonts() as $font) { ?>
546 <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>
547 <?php } ?>
548 </select><br/>
549 <span class="setting-description"><?php echo sprintf( __("Upload your favorite font to '%s'. Only .ttf is Supported!",'cryptx'), plugin_dir_path( __FILE__ ).'fonts/' ); ?></span>
550 </td>
551 </tr>
552 <tr valign="top">
553 <td>&nbsp;</td>
554 <th><label for="cryptX_var[c2i_fontSize]"><?php _e("Font size (pixel)",'cryptx'); ?></label></th>
555 <td><input name="cryptX_var[c2i_fontSize]" value="<?php echo $cryptX_var['c2i_fontSize']; ?>" type="text" class="regular-text" /></td>
556 </tr>
557 <tr valign="top">
558 <td>&nbsp;</td>
559 <th><label for="cryptX_var[c2i_fontRGB]"><?php _e("Font color (RGB)",'cryptx'); ?></label></th>
560 <td><input name="cryptX_var[c2i_fontRGB]" value="<?php echo $cryptX_var['c2i_fontRGB']; ?>" type="text" class="regular-text" /></td>
561 </tr>
562 </table>
563 <p><input type="submit" name="cryptX" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
564 </div>
565 </div>
566 <div id="rw_cryptx_general_box" class="postbox">
567 <h3><?php _e("General",'cryptx'); ?></h3>
568 <div class="inside">
569 <table class="form-table">
570 <tr valign="top">
571 <th scope="row"><?php _e("Apply CryptX to...",'cryptx'); ?></th>
572 <td><input name="cryptX_var[theContent]" type="checkbox" <?php echo (isset($cryptX_var['theContent']) == true) ? 'checked="checked"' : ''; ?> />&nbsp;&nbsp;<?php _e("Content",'cryptx'); ?> <?php _e("(<i>this can be disabled per Post by an Option</i>)",'cryptx'); ?><br/>
573 <input name="cryptX_var[the_meta_key]" type="checkbox" <?php echo (isset($cryptX_var['the_meta_key']) == true) ? 'checked="checked"' : ''; ?> />&nbsp;&nbsp;<?php _e("Custom fields",'cryptx'); ?><br/>
574 <input name="cryptX_var[theExcerpt]" type="checkbox" <?php echo (isset($cryptX_var['theExcerpt']) == true) ? 'checked="checked"' : ''; ?> />&nbsp;&nbsp;<?php _e("Excerpt",'cryptx'); ?><br/>
575 <input name="cryptX_var[commentText]" type="checkbox" <?php echo (isset($cryptX_var['commentText']) == true) ? 'checked="checked"' : ''; ?> />&nbsp;&nbsp;<?php _e("Comments",'cryptx'); ?><br/>
576 <input name="cryptX_var[widgetText]" type="checkbox" <?php echo (isset($cryptX_var['widgetText']) == true) ? 'checked="checked"' : ''; ?> />&nbsp;&nbsp;<?php _e("Widgets",'cryptx'); ?> <?php _e("(<i>works only on all widgets, not on a single widget</i>!)",'cryptx'); ?></td>
577 </tr>
578 <tr valign="top">
579 <th scope="row"><?php _e("Excluded ID's...",'cryptx'); ?></th>
580 <td><input name="cryptX_var[excludedIDs]" value="<?php echo $cryptX_var['excludedIDs']; ?>" type="text" class="regular-text" />
581 <br/><span class="setting-description"><?php _e("Enter all Page/Post ID's to exclude from CryptX as comma seperated list.",'cryptx'); ?></span>
582 <br/><input name="cryptX_var[metaBox]" <?php echo (isset($cryptX_var['metaBox']) == true) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Enable the CryptX Widget on editing a post or page.",'cryptx'); ?></td>
583 </tr>
584 <tr valign="top">
585 <th scope="row"><?php _e("Type of decryption",'cryptx'); ?></th>
586 <td><input name="cryptX_var[java]" <?php echo (isset($cryptX_var['java']) == true) ? 'checked="checked"' : ''; ?> type="radio" value="1" />&nbsp;&nbsp;<?php _e("Use javascript to hide the Email-Link.",'cryptx'); ?><br/>
587 <input name="cryptX_var[java]" <?php echo (isset($cryptX_var['java']) != true) ? 'checked="checked"' : ''; ?> type="radio" value="0" />&nbsp;&nbsp;<?php _e("Use Unicode to hide the Email-Link.",'cryptx'); ?></td>
588 </tr>
589 <tr valign="top">
590 <th scope="row"><?php _e("Where to load the needed javascript...",'cryptx'); ?></th>
591 <td><input name="cryptX_var[load_java]" <?php echo (isset($cryptX_var['load_java']) != true) ? 'checked="checked"' : ''; ?> type="radio" value="0" />&nbsp;&nbsp;<?php _e("Load the javascript in the <b>header</b> of the page.",'cryptx'); ?><br/>
592 <input name="cryptX_var[load_java]" <?php echo (isset($cryptX_var['load_java']) == true) ? 'checked="checked"' : ''; ?> type="radio" value="1" />&nbsp;&nbsp;<?php _e("Load the javascript in the <b>footer</b> of the page.",'cryptx'); ?></td>
593 </tr>
594 <tr valign="top">
595 <th scope="row" colspan="2"><input name="cryptX_var[autolink]" <?php echo (isset($cryptX_var['autolink']) == true) ? 'checked="checked"' : ''; ?> type="checkbox" />&nbsp;&nbsp;<?php _e("Add mailto to all unlinked email addresses",'cryptx'); ?></th>
596 </tr>
597 </table>
598 <p><input type="submit" name="cryptX" class="button-primary" value="<?php _e('Save Changes') ?>" /></p>
599 </div>
600 </div>
601 <div id="rw_cryptx_howto_box" class="postbox">
602 <h3><?php _e("How to use CryptX in your Template",'cryptx'); ?></h3>
603 <div class="inside">
604 <table class="form-table">
605 <tr>
606 <td><?php _e("In your Template you can use the following function to encrypt a email address:",'cryptx'); ?>
607 <p style="border:1px solid #000; background-color: #e9e9e9;padding: 10px;">
608 <i>
609 &lt;?php <br/>
610 &nbsp;&nbsp;&nbsp;&nbsp; $mail="name@example.com"; <br/>
611 &nbsp;&nbsp;&nbsp;&nbsp; $text="Contact"; <br/>
612 &nbsp;&nbsp;&nbsp;&nbsp; $css ="email"; <br/>
613 &nbsp;&nbsp;&nbsp;&nbsp; if (function_exists('cryptx')) { <br/>
614 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cryptx($mail, $text, $css, 1); <br/>
615 &nbsp;&nbsp;&nbsp;&nbsp; } else { <br/>
616 &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/>
617 &nbsp;&nbsp;&nbsp;&nbsp; } <br/>
618 ?&gt;
619 </i></p>
620 <ol>
621 <li><?php _e("parameter is the email address.",'cryptx'); ?></li>
622 <li><?php _e("parameter is the linktext. If none given the email address is used.",'cryptx'); ?></li>
623 <li><?php _e("parameter is a css class added to the link.",'cryptx'); ?></li>
624 <li><?php _e("parameter is 1 for echo the encrypted email address or 0 to return the result to a variable.",'cryptx'); ?></li>
625 </ol>
626 </td>
627 </tr>
628 </table>
629 </div>
630 </div>
631 </form>
632 <script type="text/javascript">
633 function cryptX_bild_wechsel(select){
634 document.getElementById("cryptXmailTo").src = select.options[select.options.selectedIndex].value;
635 return true;
636 }
637 </script>
638 <script type="text/javascript">
639 jQuery.ajax({
640 url: "<?php bloginfo('wpurl'); ?>?cryptx=news",
641 success: function(data) {
642 jQuery("#cryptx-news-content").html(data).fadeIn();
643 },
644 error: function() {
645 jQuery("#cryptx-news-content").html('An error ocured while loading News.').fadeIn();
646 }
647 });
648 </script>
649 </div>
650 </div>
651 <?php
652 }
653
654 /**
655 * Create Template functions...
656 * $content = string to convert
657 * $text = string to replace linktext
658 * $css = assign a css class to the link
659 * $echo = 0: keep result in a variable, 1: show result
660 */
661 function cryptx( $content, $text="", $css="", $echo=1 ) {
662 global $cryptX_var;
663 $tmp = explode("?", $content);
664 $content = $tmp[0];
665 $params = $tmp[1];
666 $content = rw_cryptx_autolink( $content, true );
667 if (!empty($params)) {
668 $content = preg_replace( '/(.*\")(.*)(\".*>)(.*)(<\/a>)/i', '$1$2?'.$params.'$3$4$5', $content );
669 }
670 $content = rw_cryptx_encryptx( $content, true );
671 $content = rw_cryptx_linktext( $content, true );
672 if("" != $text) {
673 $content = preg_replace( '/(.*">)(.*)(<.*)/i', '$1'.$text.'$3', $content );
674 }
675 if("" != $css) {
676 $content = preg_replace( '/(.*)(">)/i', '$1" class="'.$css.'">', $content );
677 }
678 if(1 == $echo) echo $content;
679 return $content;
680 }
681 ?>