Version Description
Download this release
Release Info
Developer | Cimmo |
Plugin | Cimy User Extra Fields |
Version | 2.7.0 |
Comparing to | |
See all releases |
Code changes from version 2.6.5 to 2.7.0
- README_OFFICIAL.txt +13 -4
- cimy_uef_admin.php +3 -3
- cimy_uef_email_handler.php +48 -14
- cimy_uef_init_mce.php +0 -155
- cimy_uef_register.php +2 -11
- cimy_user_extra_fields.php +3 -3
- langs/cimy_uef-da_DK.mo +0 -0
- langs/cimy_uef-da_DK.po +3 -5
- langs/cimy_uef-fr_FR.mo +0 -0
- langs/cimy_uef-fr_FR.po +1409 -1255
- readme.txt +3 -3
- securimage/README.md +239 -0
- securimage/README.txt +16 -2
- securimage/WavFile.php +30 -16
- securimage/captcha.html +135 -13
- securimage/database/securimage.sq3 +0 -0
- securimage/example_form.php +22 -15
- securimage/images/ajax-loader.gif +0 -0
- securimage/images/loading.png +0 -0
- securimage/securimage.css +41 -0
- securimage/securimage.js +251 -0
- securimage/securimage.php +446 -63
- securimage/securimage_play.php +6 -1
README_OFFICIAL.txt
CHANGED
@@ -108,10 +108,10 @@ BEFORE writing to me read carefully ALL the documentation AND the FAQ. Missing t
|
|
108 |
Bugs or suggestions can be mailed at: cimmino.marco@gmail.com
|
109 |
|
110 |
REQUIREMENTS:
|
111 |
-
* PHP >= 5.
|
112 |
-
* WORDPRESS >= 3.1
|
113 |
-
* WORDPRESS MultiSite >= 3.1
|
114 |
-
* MYSQL >=
|
115 |
|
116 |
INSTALLATION:
|
117 |
- WordPress: just copy whole cimy-user-extra-fields subdir into your plug-in directory and activate it
|
@@ -631,6 +631,15 @@ A lot of times I cannot reproduce the problem and I need more details, so if you
|
|
631 |
|
632 |
|
633 |
CHANGELOG:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
634 |
v2.6.5 - 11/05/2015
|
635 |
- Fixed PHP error on Extended Users on WordPress 4.2 (thanks to Ryan Marshall and Josie Stauffer)
|
636 |
- Fixed PHP notice on cimy_uef_functions.php at line 673 when using avatar Extra Field (thanks to rossini7777)
|
108 |
Bugs or suggestions can be mailed at: cimmino.marco@gmail.com
|
109 |
|
110 |
REQUIREMENTS:
|
111 |
+
* PHP >= 5.2.4
|
112 |
+
* WORDPRESS >= 4.3.1
|
113 |
+
* WORDPRESS MultiSite >= 4.3.1
|
114 |
+
* MYSQL >= 5.0
|
115 |
|
116 |
INSTALLATION:
|
117 |
- WordPress: just copy whole cimy-user-extra-fields subdir into your plug-in directory and activate it
|
631 |
|
632 |
|
633 |
CHANGELOG:
|
634 |
+
v2.7.0 - 19/01/2016
|
635 |
+
- Fixed welcome email for new users, broken since WordPress 4.3 (thanks to Paul Yuen, Chris Norton and more)
|
636 |
+
- Fixed password change email is no longer sent if user chose its own password during registration
|
637 |
+
- Fixed 'Strict Standards' warnings on Users Extended and plug-in's options
|
638 |
+
- Dropped support for WordPress 4.2 or below
|
639 |
+
- Updated Danish (Michael Ugilt)
|
640 |
+
- Updated French (Damien Cottet)
|
641 |
+
- Updated Securimage Captcha to v3.6.2
|
642 |
+
|
643 |
v2.6.5 - 11/05/2015
|
644 |
- Fixed PHP error on Extended Users on WordPress 4.2 (thanks to Ryan Marshall and Josie Stauffer)
|
645 |
- Fixed PHP notice on cimy_uef_functions.php at line 673 when using avatar Extra Field (thanks to rossini7777)
|
cimy_uef_admin.php
CHANGED
@@ -8,7 +8,7 @@ function cimy_admin_define_extra_fields() {
|
|
8 |
// if (!empty($_POST))
|
9 |
// print_r($_POST);
|
10 |
|
11 |
-
$role =
|
12 |
$role->add_cap('view_cimy_extra_fields');
|
13 |
|
14 |
$errors = Array();
|
@@ -1273,7 +1273,7 @@ function cimy_admin_users_list_page() {
|
|
1273 |
'per_page' => $users_per_page,
|
1274 |
));
|
1275 |
}
|
1276 |
-
function bulk_actions() {}
|
1277 |
function extra_tablenav($which) {
|
1278 |
if ('top' != $which)
|
1279 |
return;
|
@@ -1366,7 +1366,7 @@ function cimy_admin_users_list_page() {
|
|
1366 |
'per_page' => $users_per_page,
|
1367 |
));
|
1368 |
}
|
1369 |
-
function bulk_actions() {}
|
1370 |
function extra_tablenav($which) {
|
1371 |
if ('top' != $which)
|
1372 |
return;
|
8 |
// if (!empty($_POST))
|
9 |
// print_r($_POST);
|
10 |
|
11 |
+
$role = get_role('administrator');
|
12 |
$role->add_cap('view_cimy_extra_fields');
|
13 |
|
14 |
$errors = Array();
|
1273 |
'per_page' => $users_per_page,
|
1274 |
));
|
1275 |
}
|
1276 |
+
function bulk_actions( $which = '' ) {}
|
1277 |
function extra_tablenav($which) {
|
1278 |
if ('top' != $which)
|
1279 |
return;
|
1366 |
'per_page' => $users_per_page,
|
1367 |
));
|
1368 |
}
|
1369 |
+
function bulk_actions( $which = '' ) {}
|
1370 |
function extra_tablenav($which) {
|
1371 |
if ('top' != $which)
|
1372 |
return;
|
cimy_uef_email_handler.php
CHANGED
@@ -7,24 +7,36 @@ if ( !function_exists('wp_new_user_notification') ) :
|
|
7 |
* @param int $user_id User ID
|
8 |
* @param string $plaintext_pass Optional. The user's plaintext password
|
9 |
*/
|
10 |
-
function wp_new_user_notification($user_id, $plaintext_pass = '') {
|
11 |
-
if (isset($_POST["cimy_uef_wp_PASSWORD"]))
|
12 |
delete_user_meta($user_id, 'default_password_nag');
|
|
|
|
|
|
|
|
|
13 |
|
14 |
$options = cimy_get_options();
|
15 |
if (!is_multisite()) {
|
16 |
if (!$options["confirm_email"])
|
17 |
-
wp_new_user_notification_original($user_id, $plaintext_pass, $options["mail_include_fields"], false, cimy_wpml_translate_string("a_opt_welcome_email", $options["welcome_email"]));
|
18 |
// if confirmation email is enabled delete the default_password_nag but checks first if has not been done on top of this function!
|
19 |
else if (!isset($_POST["cimy_uef_wp_PASSWORD"]))
|
20 |
delete_user_meta($user_id, 'default_password_nag');
|
21 |
}
|
22 |
-
else
|
23 |
-
wp_new_user_notification_original($user_id, $plaintext_pass, $options["mail_include_fields"]);
|
|
|
24 |
}
|
25 |
endif;
|
26 |
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
$user = new WP_User($user_id);
|
29 |
|
30 |
$user_login = stripslashes($user->user_login);
|
@@ -51,17 +63,39 @@ function wp_new_user_notification_original($user_id, $plaintext_pass = '', $incl
|
|
51 |
|
52 |
@wp_mail($admin_email, sprintf(__('[%s] New User Registration'), $blogname), $message, $headers);
|
53 |
|
54 |
-
if ( empty($
|
55 |
return;
|
|
|
56 |
|
57 |
-
$
|
58 |
-
|
|
|
|
|
59 |
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
|
64 |
-
wp_mail($user_email, sprintf(__('[%s] Your username and password'), $blogname), $
|
65 |
}
|
66 |
|
67 |
function cimy_uef_mail_fields($user = false, $activation_data = false) {
|
@@ -295,7 +329,7 @@ function cimy_uef_activate_signup($key) {
|
|
295 |
return new WP_Error( 'user_already_exists', __( 'That username is already activated.', $cimy_uef_domain), $signup);
|
296 |
|
297 |
$options = cimy_get_options();
|
298 |
-
wp_new_user_notification_original($user_id, $password, $options["mail_include_fields"], $meta, cimy_wpml_translate_string("a_opt_welcome_email", $options["welcome_email"]));
|
299 |
return array('user_id' => $user_id, 'password' => $password, 'meta' => $meta);
|
300 |
}
|
301 |
|
7 |
* @param int $user_id User ID
|
8 |
* @param string $plaintext_pass Optional. The user's plaintext password
|
9 |
*/
|
10 |
+
function wp_new_user_notification($user_id, $plaintext_pass = null, $notify = '') {
|
11 |
+
if (isset($_POST["cimy_uef_wp_PASSWORD"])) {
|
12 |
delete_user_meta($user_id, 'default_password_nag');
|
13 |
+
if (!isset($plaintext_pass)) {
|
14 |
+
$plaintext_pass = $_POST["cimy_uef_wp_PASSWORD"];
|
15 |
+
}
|
16 |
+
}
|
17 |
|
18 |
$options = cimy_get_options();
|
19 |
if (!is_multisite()) {
|
20 |
if (!$options["confirm_email"])
|
21 |
+
wp_new_user_notification_original($user_id, $plaintext_pass, $options["mail_include_fields"], false, cimy_wpml_translate_string("a_opt_welcome_email", $options["welcome_email"]), $notify);
|
22 |
// if confirmation email is enabled delete the default_password_nag but checks first if has not been done on top of this function!
|
23 |
else if (!isset($_POST["cimy_uef_wp_PASSWORD"]))
|
24 |
delete_user_meta($user_id, 'default_password_nag');
|
25 |
}
|
26 |
+
else {
|
27 |
+
wp_new_user_notification_original($user_id, $plaintext_pass, $options["mail_include_fields"], $notify);
|
28 |
+
}
|
29 |
}
|
30 |
endif;
|
31 |
|
32 |
+
add_filter('send_password_change_email', 'cimy_uef_send_password_change_email', 10, 3);
|
33 |
+
|
34 |
+
function cimy_uef_send_password_change_email($send, $user, $userdata) {
|
35 |
+
return empty($_POST["cimy_uef_wp_PASSWORD"]) ? true : false;
|
36 |
+
}
|
37 |
+
|
38 |
+
function wp_new_user_notification_original($user_id, $plaintext_pass = null, $include_fields = false, $activation_data = false, $welcome_email = '', $notify = '') {
|
39 |
+
global $wpdb, $wp_hasher;
|
40 |
$user = new WP_User($user_id);
|
41 |
|
42 |
$user_login = stripslashes($user->user_login);
|
63 |
|
64 |
@wp_mail($admin_email, sprintf(__('[%s] New User Registration'), $blogname), $message, $headers);
|
65 |
|
66 |
+
if ( 'admin' === $notify || empty( $notify ) ) {
|
67 |
return;
|
68 |
+
}
|
69 |
|
70 |
+
$message = str_replace("USERNAME", $user_login, $welcome_email);
|
71 |
+
if ( empty($plaintext_pass) ) {
|
72 |
+
// Generate something random for a password reset key.
|
73 |
+
$key = wp_generate_password( 20, false );
|
74 |
|
75 |
+
/** This action is documented in wp-login.php */
|
76 |
+
do_action( 'retrieve_password_key', $user->user_login, $key );
|
77 |
+
|
78 |
+
// Now insert the key, hashed, into the DB.
|
79 |
+
if ( empty( $wp_hasher ) ) {
|
80 |
+
require_once ABSPATH . WPINC . '/class-phpass.php';
|
81 |
+
$wp_hasher = new PasswordHash( 8, true );
|
82 |
+
}
|
83 |
+
$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
|
84 |
+
$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );
|
85 |
+
|
86 |
+
$pass_link = __('To set your password, visit the following address:') . "\r\n\r\n";
|
87 |
+
$pass_link .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";
|
88 |
+
$message = str_replace("PASSWORD", $pass_link, $message);
|
89 |
+
} else {
|
90 |
+
$message = str_replace("PASSWORD", $plaintext_pass, $message);
|
91 |
+
}
|
92 |
+
|
93 |
+
if ($include_fields) {
|
94 |
+
$message .= cimy_uef_mail_fields($user, $activation_data);
|
95 |
+
}
|
96 |
+
$message = str_replace("LOGINLINK", wp_login_url(), $message);
|
97 |
|
98 |
+
wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message);
|
99 |
}
|
100 |
|
101 |
function cimy_uef_mail_fields($user = false, $activation_data = false) {
|
329 |
return new WP_Error( 'user_already_exists', __( 'That username is already activated.', $cimy_uef_domain), $signup);
|
330 |
|
331 |
$options = cimy_get_options();
|
332 |
+
wp_new_user_notification_original($user_id, $password, $options["mail_include_fields"], $meta, cimy_wpml_translate_string("a_opt_welcome_email", $options["welcome_email"]), 'both');
|
333 |
return array('user_id' => $user_id, 'password' => $password, 'meta' => $meta);
|
334 |
}
|
335 |
|
cimy_uef_init_mce.php
DELETED
@@ -1,155 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// needed only in the registration page
|
3 |
-
if (!empty($cimy_uef_register_page)) {
|
4 |
-
$userid = isset($current_user) ? $current_user->ID : 0;
|
5 |
-
?>
|
6 |
-
<script type='text/javascript'>
|
7 |
-
var login_div = document.getElementById("login");
|
8 |
-
login_div.style.width = "475px";
|
9 |
-
login_div.style.margin = "7em auto";
|
10 |
-
</script>
|
11 |
-
|
12 |
-
<script type='text/javascript'>
|
13 |
-
/* <![CDATA[ */
|
14 |
-
userSettings = {
|
15 |
-
url: "<?php echo esc_url(SITECOOKIEPATH); ?>",
|
16 |
-
uid: "<?php echo $userid; ?>",
|
17 |
-
time: "<?php echo time(); ?>",
|
18 |
-
}
|
19 |
-
try{convertEntities(userSettings);}catch(e){};
|
20 |
-
/* ]]> */
|
21 |
-
</script>
|
22 |
-
<?php
|
23 |
-
} else
|
24 |
-
$userid = $get_user_id;
|
25 |
-
|
26 |
-
// Set up init variables
|
27 |
-
$mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) ); // only ISO 639-1
|
28 |
-
$theme = "advanced";
|
29 |
-
$language = isset($mce_locale) ? substr( $mce_locale, 0, 2 ) : 'en';
|
30 |
-
|
31 |
-
$baseurl = get_option('siteurl') . '/wp-includes/js/tinymce';
|
32 |
-
|
33 |
-
$https = ( isset($_SERVER['HTTPS']) && 'on' == strtolower($_SERVER['HTTPS']) ) ? true : false;
|
34 |
-
|
35 |
-
if ( $https ) $baseurl = str_replace('http://', 'https://', $baseurl);
|
36 |
-
|
37 |
-
$language . '", debug : false }, base : "' . $baseurl . '", suffix : "" };';
|
38 |
-
|
39 |
-
$mce_spellchecker_languages = apply_filters('mce_spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');
|
40 |
-
|
41 |
-
$mce_css = $baseurl . '/wordpress.css';
|
42 |
-
$mce_css = apply_filters('mce_css', $mce_css);
|
43 |
-
|
44 |
-
if ( $https ) $mce_css = str_replace('http://', 'https://', $mce_css);
|
45 |
-
|
46 |
-
$mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', '|', 'bullist', 'numlist', 'blockquote', '|', 'justifyleft', 'justifycenter', 'justifyright', '|', 'link', 'unlink', 'image', 'wp_more', '|', 'spellchecker', 'fullscreen', 'wp_adv' ));
|
47 |
-
$mce_buttons = implode($mce_buttons, ',');
|
48 |
-
|
49 |
-
$mce_buttons_2 = apply_filters('mce_buttons_2', array('formatselect', 'underline', 'justifyfull', 'forecolor', '|', 'pastetext', 'pasteword', 'removeformat', '|', 'media', 'charmap', '|', 'outdent', 'indent', '|', 'undo', 'redo', 'wp_help' ));
|
50 |
-
$mce_buttons_2 = implode($mce_buttons_2, ',');
|
51 |
-
|
52 |
-
$mce_buttons_3 = apply_filters('mce_buttons_3', array());
|
53 |
-
$mce_buttons_3 = implode($mce_buttons_3, ',');
|
54 |
-
|
55 |
-
$mce_buttons_4 = apply_filters('mce_buttons_4', array());
|
56 |
-
$mce_buttons_4 = implode($mce_buttons_4, ',');
|
57 |
-
|
58 |
-
// $plugins = array( 'safari', 'inlinepopups', 'autosave', 'spellchecker', 'paste', 'media', 'fullscreen' );
|
59 |
-
$plugins = array( 'inlinepopups', 'spellchecker', 'paste', 'fullscreen', 'wpeditimage', 'wpgallery', 'tabfocus' );
|
60 |
-
|
61 |
-
// add 'wordpress' plug-in only if there is an user logged in, otherwise will produce issues on registration page
|
62 |
-
if ($userid != 0)
|
63 |
-
$plugins[] = 'wordpress';
|
64 |
-
|
65 |
-
echo "\n\t";
|
66 |
-
$initArray = array(
|
67 |
-
'mode' => "exact",
|
68 |
-
'theme' => $theme,
|
69 |
-
'elements' => esc_attr($tiny_mce_objects),
|
70 |
-
'theme_advanced_toolbar_location' => "top",
|
71 |
-
'theme_advanced_toolbar_align' => "left",
|
72 |
-
'theme_advanced_statusbar_location' => "bottom",
|
73 |
-
'extended_valid_elements' => "article[*],aside[*],audio[*],canvas[*],command[*],datalist[*],details[*],embed[*],figcaption[*],figure[*],footer[*],header[*],hgroup[*],keygen[*],mark[*],meter[*],nav[*],output[*],progress[*],section[*],source[*],summary,time[*],video[*],wbr",
|
74 |
-
'theme_advanced_buttons1' => $mce_buttons,
|
75 |
-
'theme_advanced_buttons2' => $mce_buttons_2,
|
76 |
-
'theme_advanced_buttons3' => $mce_buttons_3,
|
77 |
-
'theme_advanced_buttons4' => $mce_buttons_4,
|
78 |
-
'content_css' => $mce_css,
|
79 |
-
'language' => $mce_locale,
|
80 |
-
'spellchecker_languages' => $mce_spellchecker_languages,
|
81 |
-
'theme_advanced_resizin' => true,
|
82 |
-
'theme_advanced_resize_horizontal' => false,
|
83 |
-
'dialog_type' => "modal",
|
84 |
-
'relative_urls' => false,
|
85 |
-
'convert_urls' => false,
|
86 |
-
'remove_script_host' => false,
|
87 |
-
'plugins' => implode( ',', $plugins ),
|
88 |
-
);
|
89 |
-
|
90 |
-
if ($userid != 0)
|
91 |
-
$initArray['skin'] = "wp_theme";
|
92 |
-
|
93 |
-
if ( 'en' != $language )
|
94 |
-
include_once(ABSPATH . WPINC . '/js/tinymce/langs/wp-langs.php');
|
95 |
-
|
96 |
-
$mce_options = '';
|
97 |
-
foreach ( $initArray as $k => $v ) {
|
98 |
-
if ( is_bool($v) ) {
|
99 |
-
$val = $v ? 'true' : 'false';
|
100 |
-
$mce_options .= $k . ':' . $val . ', ';
|
101 |
-
continue;
|
102 |
-
} elseif ( !empty($v) && is_string($v) && ( '{' == $v{0} || '[' == $v{0} ) ) {
|
103 |
-
$mce_options .= $k . ':' . $v . ', ';
|
104 |
-
continue;
|
105 |
-
}
|
106 |
-
|
107 |
-
$mce_options .= $k . ':"' . $v . '", ';
|
108 |
-
}
|
109 |
-
|
110 |
-
global $concatenate_scripts, $compress_scripts, $tinymce_version;
|
111 |
-
$mce_options = rtrim( trim($mce_options), '\n\r,' );
|
112 |
-
$ext_plugins = '';
|
113 |
-
$compressed = $compress_scripts && $concatenate_scripts && isset($_SERVER['HTTP_ACCEPT_ENCODING'])
|
114 |
-
&& false !== strpos( strtolower($_SERVER['HTTP_ACCEPT_ENCODING']), 'gzip');
|
115 |
-
|
116 |
-
$version = apply_filters('tiny_mce_version', '');
|
117 |
-
$version = 'ver=' . $tinymce_version . $version;
|
118 |
-
?>
|
119 |
-
<script type="text/javascript">
|
120 |
-
/* <![CDATA[ */
|
121 |
-
tinyMCEPreInit = {
|
122 |
-
base : "<?php echo $baseurl; ?>",
|
123 |
-
suffix : "",
|
124 |
-
query : "<?php echo $version; ?>",
|
125 |
-
mceInit : {<?php echo $mce_options; ?>},
|
126 |
-
load_ext : function(url,lang){var sl=tinymce.ScriptLoader;sl.markDone(url+'/langs/'+lang+'.js');sl.markDone(url+'/langs/'+lang+'_dlg.js');}
|
127 |
-
};
|
128 |
-
/* ]]> */
|
129 |
-
</script>
|
130 |
-
|
131 |
-
<?php
|
132 |
-
if ( $compressed )
|
133 |
-
echo "<script type='text/javascript' src='$baseurl/wp-tinymce.php?c=1&$version'></script>\n";
|
134 |
-
else
|
135 |
-
echo "<script type='text/javascript' src='$baseurl/tiny_mce.js?$version'></script>\n";
|
136 |
-
|
137 |
-
if ( 'en' != $language && isset($lang) )
|
138 |
-
echo "<script type='text/javascript'>\n$lang\n</script>\n";
|
139 |
-
else
|
140 |
-
echo "<script type='text/javascript' src='$baseurl/langs/wp-langs-en.js?$version'></script>\n";
|
141 |
-
?>
|
142 |
-
|
143 |
-
<script type="text/javascript">
|
144 |
-
/* <![CDATA[ */
|
145 |
-
<?php
|
146 |
-
if ( $ext_plugins )
|
147 |
-
echo "$ext_plugins\n";
|
148 |
-
|
149 |
-
if ( ! $compressed ) {
|
150 |
-
?>
|
151 |
-
(function(){var t=tinyMCEPreInit,sl=tinymce.ScriptLoader,ln=t.mceInit.language,th=t.mceInit.theme,pl=t.mceInit.plugins;sl.markDone(t.base+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'.js');sl.markDone(t.base+'/themes/'+th+'/langs/'+ln+'_dlg.js');tinymce.each(pl.split(','),function(n){if(n&&n.charAt(0)!='-'){sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'.js');sl.markDone(t.base+'/plugins/'+n+'/langs/'+ln+'_dlg.js');}});})();
|
152 |
-
<?php } ?>
|
153 |
-
tinyMCE.init(tinyMCEPreInit.mceInit);
|
154 |
-
/* ]]> */
|
155 |
-
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cimy_uef_register.php
CHANGED
@@ -687,8 +687,6 @@ function cimy_registration_form($errors=null, $show_type=0) {
|
|
687 |
if (!is_user_logged_in())
|
688 |
$my_user_level = -1;
|
689 |
|
690 |
-
// needed by cimy_uef_init_mce.php
|
691 |
-
$cimy_uef_register_page = true;
|
692 |
$extra_fields = get_cimyFields(false, true);
|
693 |
$wp_fields = get_cimyFields(true);
|
694 |
|
@@ -1190,7 +1188,7 @@ function cimy_registration_form($errors=null, $show_type=0) {
|
|
1190 |
$pass1_id = $unique_id;
|
1191 |
|
1192 |
if ($input_name == ($prefix."PASSWORD2")) {
|
1193 |
-
echo "\n\t\t<div id=\"pass-strength-result\">".__('Strength indicator')."</div>";
|
1194 |
echo "\n\t\t<p class=\"description indicator-hint\">".__('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ & ).')."</p><br />";
|
1195 |
$pass2_id = $unique_id;
|
1196 |
}
|
@@ -1209,13 +1207,6 @@ function cimy_registration_form($errors=null, $show_type=0) {
|
|
1209 |
}
|
1210 |
echo "\t<br />";
|
1211 |
|
1212 |
-
if ($show_type == 0) {
|
1213 |
-
// WP 3.2 or lower (N)
|
1214 |
-
if (!empty($tiny_mce_objects) && !function_exists("wp_editor")) {
|
1215 |
-
require_once($cuef_plugin_dir.'/cimy_uef_init_mce.php');
|
1216 |
-
}
|
1217 |
-
}
|
1218 |
-
|
1219 |
if (($show_type != 2) && ($options['captcha'] == "securimage")) {
|
1220 |
global $cuef_securimage_webpath;
|
1221 |
if (is_multisite()) {
|
@@ -1333,7 +1324,7 @@ function cimy_uef_registration_redirect($redirect_to) {
|
|
1333 |
if (empty($redirect_to)) {
|
1334 |
$options = cimy_get_options();
|
1335 |
|
1336 |
-
if ($options["redirect_to"] == "source")
|
1337 |
$redirect_to = esc_attr($_SERVER["HTTP_REFERER"]);
|
1338 |
}
|
1339 |
|
687 |
if (!is_user_logged_in())
|
688 |
$my_user_level = -1;
|
689 |
|
|
|
|
|
690 |
$extra_fields = get_cimyFields(false, true);
|
691 |
$wp_fields = get_cimyFields(true);
|
692 |
|
1188 |
$pass1_id = $unique_id;
|
1189 |
|
1190 |
if ($input_name == ($prefix."PASSWORD2")) {
|
1191 |
+
echo "\n\t\t<div id=\"pass-strength-result\" class=\"hide-if-no-js\" aria-live=\"polite\">".__('Strength indicator')."</div>";
|
1192 |
echo "\n\t\t<p class=\"description indicator-hint\">".__('Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ & ).')."</p><br />";
|
1193 |
$pass2_id = $unique_id;
|
1194 |
}
|
1207 |
}
|
1208 |
echo "\t<br />";
|
1209 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1210 |
if (($show_type != 2) && ($options['captcha'] == "securimage")) {
|
1211 |
global $cuef_securimage_webpath;
|
1212 |
if (is_multisite()) {
|
1324 |
if (empty($redirect_to)) {
|
1325 |
$options = cimy_get_options();
|
1326 |
|
1327 |
+
if ($options["redirect_to"] == "source" && isset($_SERVER["HTTP_REFERER"]))
|
1328 |
$redirect_to = esc_attr($_SERVER["HTTP_REFERER"]);
|
1329 |
}
|
1330 |
|
cimy_user_extra_fields.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
Plugin Name: Cimy User Extra Fields
|
4 |
Plugin URI: http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/
|
5 |
Description: Add some useful fields to registration and user's info
|
6 |
-
Version: 2.
|
7 |
Author: Marco Cimmino
|
8 |
Author URI: mailto:cimmino.marco@gmail.com
|
9 |
License: GPL2
|
10 |
|
11 |
Cimy User Extra Fields - Allows adding mySQL Data fields to store/add more user info
|
12 |
-
Copyright (c) 2006-
|
13 |
|
14 |
Code for drop-down support is in part from Raymond Elferink raymond@raycom.com
|
15 |
Code for regular expression under equalTo rule is in part from Shane Hartman shane@shanehartman.com
|
@@ -162,7 +162,7 @@ add_action('admin_init', 'cimy_uef_admin_init');
|
|
162 |
add_action('init', 'cimy_uef_init');
|
163 |
|
164 |
$cimy_uef_name = "Cimy User Extra Fields";
|
165 |
-
$cimy_uef_version = "2.
|
166 |
$cimy_uef_url = "http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/";
|
167 |
$cimy_project_url = "http://www.marcocimmino.net/cimy-wordpress-plugins/support-the-cimy-project-paypal/";
|
168 |
|
3 |
Plugin Name: Cimy User Extra Fields
|
4 |
Plugin URI: http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/
|
5 |
Description: Add some useful fields to registration and user's info
|
6 |
+
Version: 2.7.0
|
7 |
Author: Marco Cimmino
|
8 |
Author URI: mailto:cimmino.marco@gmail.com
|
9 |
License: GPL2
|
10 |
|
11 |
Cimy User Extra Fields - Allows adding mySQL Data fields to store/add more user info
|
12 |
+
Copyright (c) 2006-2016 Marco Cimmino
|
13 |
|
14 |
Code for drop-down support is in part from Raymond Elferink raymond@raycom.com
|
15 |
Code for regular expression under equalTo rule is in part from Shane Hartman shane@shanehartman.com
|
162 |
add_action('init', 'cimy_uef_init');
|
163 |
|
164 |
$cimy_uef_name = "Cimy User Extra Fields";
|
165 |
+
$cimy_uef_version = "2.7.0";
|
166 |
$cimy_uef_url = "http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/";
|
167 |
$cimy_project_url = "http://www.marcocimmino.net/cimy-wordpress-plugins/support-the-cimy-project-paypal/";
|
168 |
|
langs/cimy_uef-da_DK.mo
CHANGED
Binary file
|
langs/cimy_uef-da_DK.po
CHANGED
@@ -3,16 +3,14 @@ msgstr ""
|
|
3 |
"Project-Id-Version: Cimy User Extra Fields\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2013-09-28 06:19-0800\n"
|
6 |
-
"PO-Revision-Date:
|
7 |
"Last-Translator: Marco Cimmino <cimmino.marco@gmail.com>\n"
|
8 |
"Language-Team: \n"
|
9 |
-
"Language: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"X-Poedit-KeywordsList: __;_e\n"
|
14 |
-
"X-Poedit-Language: German\n"
|
15 |
-
"X-Poedit-Country: GERMANY\n"
|
16 |
"X-Poedit-SourceCharset: utf-8\n"
|
17 |
"X-Poedit-Basepath: .\n"
|
18 |
"X-Poedit-SearchPath-0: /var/www/wp-content/plugins/cimy-user-extra-fields\n"
|
@@ -137,7 +135,7 @@ msgstr ""
|
|
137 |
|
138 |
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1186
|
139 |
msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )."
|
140 |
-
msgstr ""
|
141 |
|
142 |
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1225
|
143 |
#, fuzzy
|
3 |
"Project-Id-Version: Cimy User Extra Fields\n"
|
4 |
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: 2013-09-28 06:19-0800\n"
|
6 |
+
"PO-Revision-Date: 2015-10-25 17:46+0100\n"
|
7 |
"Last-Translator: Marco Cimmino <cimmino.marco@gmail.com>\n"
|
8 |
"Language-Team: \n"
|
9 |
+
"Language: da_DK\n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"X-Poedit-KeywordsList: __;_e\n"
|
|
|
|
|
14 |
"X-Poedit-SourceCharset: utf-8\n"
|
15 |
"X-Poedit-Basepath: .\n"
|
16 |
"X-Poedit-SearchPath-0: /var/www/wp-content/plugins/cimy-user-extra-fields\n"
|
135 |
|
136 |
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1186
|
137 |
msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )."
|
138 |
+
msgstr "Tip: Din adgangskode skal være mindst på midst 7 tegn. For at gare den mere sikker kann du bruge store OG små bogstaver, tal og symboler."
|
139 |
|
140 |
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1225
|
141 |
#, fuzzy
|
langs/cimy_uef-fr_FR.mo
CHANGED
Binary file
|
langs/cimy_uef-fr_FR.po
CHANGED
@@ -1,1255 +1,1409 @@
|
|
1 |
-
msgid ""
|
2 |
-
msgstr ""
|
3 |
-
"Project-Id-Version: Cimy User Extra Fields\n"
|
4 |
-
"Report-Msgid-Bugs-To: \n"
|
5 |
-
"POT-Creation-Date: 2013-09-28 06:20-0800\n"
|
6 |
-
"PO-Revision-Date:
|
7 |
-
"Last-Translator: Marco Cimmino <cimmino.marco@gmail.com>\n"
|
8 |
-
"Language-Team: <cimmino.marco@gmail.com>\n"
|
9 |
-
"Language: \n"
|
10 |
-
"MIME-Version: 1.0\n"
|
11 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
-
"Content-Transfer-Encoding: 8bit\n"
|
13 |
-
"X-Poedit-KeywordsList: __;_e\n"
|
14 |
-
"X-Poedit-Language: French\n"
|
15 |
-
"X-Poedit-Country: FRANCE\n"
|
16 |
-
"X-Poedit-SourceCharset: utf-8\n"
|
17 |
-
"X-Poedit-Basepath: .\n"
|
18 |
-
"X-Poedit-SearchPath-0: /var/www/wp-content/plugins/cimy-user-extra-fields\n"
|
19 |
-
|
20 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:479
|
21 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:483
|
22 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:497
|
23 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:517
|
24 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:529
|
25 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:542
|
26 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:553
|
27 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:563
|
28 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:568
|
29 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:579
|
30 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:584
|
31 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:595
|
32 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:600
|
33 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:641
|
34 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:649
|
35 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1112
|
36 |
-
msgid "ERROR"
|
37 |
-
msgstr "ERREUR"
|
38 |
-
|
39 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:479
|
40 |
-
msgid "does not match."
|
41 |
-
msgstr "ne
|
42 |
-
|
43 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:483
|
44 |
-
msgid "hasn’t a correct email syntax."
|
45 |
-
msgstr "n'a pas une syntaxe
|
46 |
-
|
47 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:497
|
48 |
-
msgid "couldn’t be empty."
|
49 |
-
msgstr "ne peut pas
|
50 |
-
|
51 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:516
|
52 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:525
|
53 |
-
msgid "isn’t correct"
|
54 |
-
msgstr "n'est pas correct"
|
55 |
-
|
56 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:522
|
57 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1026
|
58 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1029
|
59 |
-
msgid "YES"
|
60 |
-
msgstr "
|
61 |
-
|
62 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:522
|
63 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1026
|
64 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1029
|
65 |
-
msgid "NO"
|
66 |
-
msgstr "
|
67 |
-
|
68 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:527
|
69 |
-
msgid "should be"
|
70 |
-
msgstr "devrait
|
71 |
-
|
72 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:542
|
73 |
-
msgid "should be an image."
|
74 |
-
msgstr "devrait
|
75 |
-
|
76 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:553
|
77 |
-
msgid "does not accept this file type."
|
78 |
-
msgstr ""
|
79 |
-
|
80 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:563
|
81 |
-
msgid "couldn’t have size less than"
|
82 |
-
msgstr "ne pouvait pas avoir une taille
|
83 |
-
|
84 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:568
|
85 |
-
msgid "couldn’t have length less than"
|
86 |
-
msgstr "ne pouvait pas avoir une longueur
|
87 |
-
|
88 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:579
|
89 |
-
msgid "couldn’t have size different than"
|
90 |
-
msgstr "ne pouvais pas avoir une taille
|
91 |
-
|
92 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:584
|
93 |
-
msgid "couldn’t have length different than"
|
94 |
-
msgstr "ne pouvait pas avoir une longueur
|
95 |
-
|
96 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:595
|
97 |
-
msgid "couldn’t have size more than"
|
98 |
-
msgstr "ne pouvait pas avoir une taille
|
99 |
-
|
100 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:600
|
101 |
-
msgid "couldn’t have length more than"
|
102 |
-
msgstr "ne pouvait pas avoir une longueur
|
103 |
-
|
104 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:641
|
105 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:649
|
106 |
-
#, fuzzy
|
107 |
-
msgid "Typed code is not correct."
|
108 |
-
msgstr "Le code saisi est incorrect."
|
109 |
-
|
110 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:719
|
111 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1534
|
112 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1535
|
113 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:196
|
114 |
-
msgid "Username"
|
115 |
-
msgstr "Identifiant"
|
116 |
-
|
117 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:746
|
118 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1544
|
119 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1545
|
120 |
-
msgid "E-mail"
|
121 |
-
msgstr "Courriel"
|
122 |
-
|
123 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1000
|
124 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:310
|
125 |
-
msgid "Please upload a file with one of the following extensions"
|
126 |
-
msgstr "Veuillez
|
127 |
-
|
128 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1006
|
129 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:316
|
130 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:282
|
131 |
-
msgid "Please upload an image with one of the following extensions"
|
132 |
-
msgstr "
|
133 |
-
|
134 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1185
|
135 |
-
msgid "Strength indicator"
|
136 |
-
msgstr "Indicateur de
|
137 |
-
|
138 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1186
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:
|
153 |
-
msgid "
|
154 |
-
msgstr ""
|
155 |
-
|
156 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
186 |
-
msgid "
|
187 |
-
msgstr "
|
188 |
-
|
189 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
190 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
191 |
-
msgid "
|
192 |
-
msgstr "Longueur
|
193 |
-
|
194 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
195 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
196 |
-
msgid "
|
197 |
-
msgstr "Longueur
|
198 |
-
|
199 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
205 |
-
msgid "
|
206 |
-
msgstr "
|
207 |
-
|
208 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:133
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
218 |
-
msgid "
|
219 |
-
msgstr "
|
220 |
-
|
221 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
231 |
-
msgid "
|
232 |
-
msgstr "
|
233 |
-
|
234 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
235 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
236 |
-
msgid "
|
237 |
-
msgstr "Taille
|
238 |
-
|
239 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
240 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
241 |
-
msgid "
|
242 |
-
msgstr "Taille
|
243 |
-
|
244 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
334 |
-
msgid "
|
335 |
-
msgstr "
|
336 |
-
|
337 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
362 |
-
msgid "
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
370 |
-
msgid "
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
435 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
445 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
460 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
461 |
-
msgid "
|
462 |
-
msgstr "
|
463 |
-
|
464 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
465 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
540 |
-
msgid "
|
541 |
-
msgstr "
|
542 |
-
|
543 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
549 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
586 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
587 |
-
msgid "
|
588 |
-
msgstr "
|
589 |
-
|
590 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
msgid "
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
612 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
619 |
-
msgid "
|
620 |
-
msgstr "
|
621 |
-
|
622 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
623 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
624 |
-
msgid "
|
625 |
-
msgstr "
|
626 |
-
|
627 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
628 |
-
msgid "
|
629 |
-
msgstr "
|
630 |
-
|
631 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
"
|
704 |
-
"
|
705 |
-
|
706 |
-
|
707 |
-
"
|
708 |
-
"
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
msgid "
|
716 |
-
msgstr ""
|
717 |
-
|
718 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
msgid "
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
msgstr "
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
805 |
-
msgid "
|
806 |
-
msgstr "
|
807 |
-
|
808 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
msgstr "
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
853 |
-
msgid "
|
854 |
-
msgstr "
|
855 |
-
|
856 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
msgid "
|
885 |
-
msgstr "
|
886 |
-
|
887 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
msgstr "
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
msgid "
|
967 |
-
msgstr "
|
968 |
-
|
969 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1007 |
-
msgid "
|
1008 |
-
msgstr "
|
1009 |
-
|
1010 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1017 |
-
msgid "
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
msgstr "
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
msgstr "
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
msgstr "
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
msgstr "
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
msgid "
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1114 |
-
msgid "
|
1115 |
-
msgstr "
|
1116 |
-
|
1117 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
msgid "
|
1144 |
-
msgstr "
|
1145 |
-
|
1146 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
1204 |
-
msgid "
|
1205 |
-
msgstr ""
|
1206 |
-
|
1207 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
1208 |
-
msgid "
|
1209 |
-
msgstr ""
|
1210 |
-
|
1211 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
1212 |
-
msgid "
|
1213 |
-
msgstr ""
|
1214 |
-
|
1215 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
1216 |
-
msgid "
|
1217 |
-
msgstr ""
|
1218 |
-
|
1219 |
-
#: /var/www/wp-content/plugins/cimy-user-extra-fields/
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Cimy User Extra Fields\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2013-09-28 06:20-0800\n"
|
6 |
+
"PO-Revision-Date: 2015-10-07 17:13+0100\n"
|
7 |
+
"Last-Translator: Marco Cimmino <cimmino.marco@gmail.com>\n"
|
8 |
+
"Language-Team: <cimmino.marco@gmail.com>\n"
|
9 |
+
"Language: fr_FR\n"
|
10 |
+
"MIME-Version: 1.0\n"
|
11 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
+
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
14 |
+
"X-Poedit-Language: French\n"
|
15 |
+
"X-Poedit-Country: FRANCE\n"
|
16 |
+
"X-Poedit-SourceCharset: utf-8\n"
|
17 |
+
"X-Poedit-Basepath: .\n"
|
18 |
+
"X-Poedit-SearchPath-0: /var/www/wp-content/plugins/cimy-user-extra-fields\n"
|
19 |
+
|
20 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:479
|
21 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:483
|
22 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:497
|
23 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:517
|
24 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:529
|
25 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:542
|
26 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:553
|
27 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:563
|
28 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:568
|
29 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:579
|
30 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:584
|
31 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:595
|
32 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:600
|
33 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:641
|
34 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:649
|
35 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1112
|
36 |
+
msgid "ERROR"
|
37 |
+
msgstr "ERREUR"
|
38 |
+
|
39 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:479
|
40 |
+
msgid "does not match."
|
41 |
+
msgstr "ne correspond pas."
|
42 |
+
|
43 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:483
|
44 |
+
msgid "hasn’t a correct email syntax."
|
45 |
+
msgstr "n'a pas une syntaxe d'email correcte."
|
46 |
+
|
47 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:497
|
48 |
+
msgid "couldn’t be empty."
|
49 |
+
msgstr "ne peut pas être vide."
|
50 |
+
|
51 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:516
|
52 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:525
|
53 |
+
msgid "isn’t correct"
|
54 |
+
msgstr "n'est pas correct"
|
55 |
+
|
56 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:522
|
57 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1026
|
58 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1029
|
59 |
+
msgid "YES"
|
60 |
+
msgstr "YES"
|
61 |
+
|
62 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:522
|
63 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1026
|
64 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1029
|
65 |
+
msgid "NO"
|
66 |
+
msgstr "NO"
|
67 |
+
|
68 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:527
|
69 |
+
msgid "should be"
|
70 |
+
msgstr "devrait être"
|
71 |
+
|
72 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:542
|
73 |
+
msgid "should be an image."
|
74 |
+
msgstr "devrait être une image."
|
75 |
+
|
76 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:553
|
77 |
+
msgid "does not accept this file type."
|
78 |
+
msgstr "n'accepte pas ce type de fichier."
|
79 |
+
|
80 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:563
|
81 |
+
msgid "couldn’t have size less than"
|
82 |
+
msgstr "ne pouvait pas avoir une taille inférieure à"
|
83 |
+
|
84 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:568
|
85 |
+
msgid "couldn’t have length less than"
|
86 |
+
msgstr "ne pouvait pas avoir une longueur inférieure à"
|
87 |
+
|
88 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:579
|
89 |
+
msgid "couldn’t have size different than"
|
90 |
+
msgstr "ne pouvais pas avoir une taille différente de"
|
91 |
+
|
92 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:584
|
93 |
+
msgid "couldn’t have length different than"
|
94 |
+
msgstr "ne pouvait pas avoir une longueur différente de"
|
95 |
+
|
96 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:595
|
97 |
+
msgid "couldn’t have size more than"
|
98 |
+
msgstr "ne pouvait pas avoir une taille supérieure à"
|
99 |
+
|
100 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:600
|
101 |
+
msgid "couldn’t have length more than"
|
102 |
+
msgstr "ne pouvait pas avoir une longueur supérieure à"
|
103 |
+
|
104 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:641
|
105 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:649
|
106 |
+
#, fuzzy
|
107 |
+
msgid "Typed code is not correct."
|
108 |
+
msgstr "Le code saisi est incorrect."
|
109 |
+
|
110 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:719
|
111 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1534
|
112 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1535
|
113 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:196
|
114 |
+
msgid "Username"
|
115 |
+
msgstr "Identifiant"
|
116 |
+
|
117 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:746
|
118 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1544
|
119 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1545
|
120 |
+
msgid "E-mail"
|
121 |
+
msgstr "Courriel"
|
122 |
+
|
123 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1000
|
124 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:310
|
125 |
+
msgid "Please upload a file with one of the following extensions"
|
126 |
+
msgstr "Veuillez télécharger un fichier avec l'une des extensions suivantes"
|
127 |
+
|
128 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1006
|
129 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:316
|
130 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:282
|
131 |
+
msgid "Please upload an image with one of the following extensions"
|
132 |
+
msgstr "Veuillez téléchargez une image avec l'une des extensions suivantes"
|
133 |
+
|
134 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1185
|
135 |
+
msgid "Strength indicator"
|
136 |
+
msgstr "Indicateur de sûreté"
|
137 |
+
|
138 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1186
|
139 |
+
msgid ""
|
140 |
+
"Hint: The password should be at least seven characters long. To make it "
|
141 |
+
"stronger, use upper and lower case letters, numbers and symbols like ! \" ? "
|
142 |
+
"$ % ^ & )."
|
143 |
+
msgstr ""
|
144 |
+
"Suggestion: le mot de passe devrait contenir au moins sept caractères. Pour "
|
145 |
+
"le sécuriser encore plus, utilisez une combinaison de minuscules, de "
|
146 |
+
"majuscules, de chiffres et de symboles tels que ! \\\" ? $ % ^ & )."
|
147 |
+
|
148 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1225
|
149 |
+
msgid "Change image"
|
150 |
+
msgstr "Changer l'image"
|
151 |
+
|
152 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1228
|
153 |
+
msgid "Insert the code:"
|
154 |
+
msgstr "Insérer le code:"
|
155 |
+
|
156 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1300
|
157 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1302
|
158 |
+
msgid "Confirm your registration"
|
159 |
+
msgstr "Confirmez votre inscription"
|
160 |
+
|
161 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1308
|
162 |
+
msgid "A password will be e-mailed to you."
|
163 |
+
msgstr "Un courriel contenant votre mot de passe va vous être envoyé."
|
164 |
+
|
165 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_register.php:1316
|
166 |
+
msgid "← Back"
|
167 |
+
msgstr "← Retour"
|
168 |
+
|
169 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:17
|
170 |
+
msgid "Add field"
|
171 |
+
msgstr "Ajouter un champ"
|
172 |
+
|
173 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:18
|
174 |
+
msgid "Update field"
|
175 |
+
msgstr "Mettre à jour le champ"
|
176 |
+
|
177 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:19
|
178 |
+
msgid "Delete field"
|
179 |
+
msgstr "Supprimer le champ"
|
180 |
+
|
181 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:20
|
182 |
+
msgid "Delete selected fields"
|
183 |
+
msgstr "Supprimer les champs sélectionnés"
|
184 |
+
|
185 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:21
|
186 |
+
msgid "Change order"
|
187 |
+
msgstr "Changer l'ordre"
|
188 |
+
|
189 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:30
|
190 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:916
|
191 |
+
msgid "Min length"
|
192 |
+
msgstr "Longueur min"
|
193 |
+
|
194 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:31
|
195 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:917
|
196 |
+
msgid "Exact length"
|
197 |
+
msgstr "Longueur exacte"
|
198 |
+
|
199 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:32
|
200 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:918
|
201 |
+
msgid "Max length"
|
202 |
+
msgstr "Longueur max"
|
203 |
+
|
204 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:33
|
205 |
+
msgid "Exact or Max length"
|
206 |
+
msgstr "Longueur exacte ou max"
|
207 |
+
|
208 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:133
|
209 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_init.php:22
|
210 |
+
msgid "Fields"
|
211 |
+
msgstr "Champs"
|
212 |
+
|
213 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:133
|
214 |
+
msgid "changed to"
|
215 |
+
msgstr "changé en"
|
216 |
+
|
217 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:136
|
218 |
+
msgid "You cannot give an order that misses some numbers"
|
219 |
+
msgstr "Vous ne pouvez pas donner un ordre où il manque des nombres"
|
220 |
+
|
221 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:139
|
222 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:214
|
223 |
+
msgid "Nothing selected"
|
224 |
+
msgstr "Rien n'est sélectionné"
|
225 |
+
|
226 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:211
|
227 |
+
msgid "Field(s)"
|
228 |
+
msgstr "Champ(s)"
|
229 |
+
|
230 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:211
|
231 |
+
msgid "deleted correctly"
|
232 |
+
msgstr "correctement supprimé(e)"
|
233 |
+
|
234 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:245
|
235 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:898
|
236 |
+
msgid "Min size"
|
237 |
+
msgstr "Taille min"
|
238 |
+
|
239 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:246
|
240 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:899
|
241 |
+
msgid "Exact size"
|
242 |
+
msgstr "Taille exacte"
|
243 |
+
|
244 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:247
|
245 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:900
|
246 |
+
msgid "Max size"
|
247 |
+
msgstr "Taille max"
|
248 |
+
|
249 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:249
|
250 |
+
msgid "Exact or Max size"
|
251 |
+
msgstr "Taille exacte ou Max"
|
252 |
+
|
253 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:252
|
254 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:907
|
255 |
+
#, fuzzy
|
256 |
+
msgid "Min date"
|
257 |
+
msgstr "Taille min"
|
258 |
+
|
259 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:253
|
260 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:908
|
261 |
+
#, fuzzy
|
262 |
+
msgid "Exact date"
|
263 |
+
msgstr "Taille exacte"
|
264 |
+
|
265 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:254
|
266 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:909
|
267 |
+
#, fuzzy
|
268 |
+
msgid "Max date"
|
269 |
+
msgstr "Taille max"
|
270 |
+
|
271 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:315
|
272 |
+
msgid "Name not specified"
|
273 |
+
msgstr "Nom non spécifié"
|
274 |
+
|
275 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:317
|
276 |
+
msgid "Name cannot contains spaces"
|
277 |
+
msgstr "Le nom ne peut pas contenir d'espace"
|
278 |
+
|
279 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:320
|
280 |
+
msgid "Label not specified"
|
281 |
+
msgstr "étiquette non spécifiée"
|
282 |
+
|
283 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:325
|
284 |
+
msgid "not selected (with this type is necessary)"
|
285 |
+
msgstr "non sélectionné (nécessaire avec ce type)"
|
286 |
+
|
287 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:331
|
288 |
+
msgid "If you select"
|
289 |
+
msgstr "Si vous sélectionnez"
|
290 |
+
|
291 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:331
|
292 |
+
msgid "you cannot select Min or Max"
|
293 |
+
msgstr "vous ne pouvez pas sélectionner Min ou Max"
|
294 |
+
|
295 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:337
|
296 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:342
|
297 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:347
|
298 |
+
msgid "should be in the range of"
|
299 |
+
msgstr "devrait être dans l'intervalle de"
|
300 |
+
|
301 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:358
|
302 |
+
msgid "Equal TO not specified"
|
303 |
+
msgstr "Égal à non spécifié"
|
304 |
+
|
305 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:361
|
306 |
+
msgid "With checkbox type Equal TO can only be"
|
307 |
+
msgstr "Avec le type checkbox, Égal à ne peut être que"
|
308 |
+
|
309 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:364
|
310 |
+
msgid "With radio type Equal TO can only be"
|
311 |
+
msgstr "Avec le type radio, Égal à ne peut être que"
|
312 |
+
|
313 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:380
|
314 |
+
msgid "With checkbox type Value can only be"
|
315 |
+
msgstr "Avec le type case à cocher, la valeur ne peut être que"
|
316 |
+
|
317 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:383
|
318 |
+
msgid "With radio type Value can only be"
|
319 |
+
msgstr "Avec le type radio, la valeur ne peut être que"
|
320 |
+
|
321 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:439
|
322 |
+
msgid "Field inserted correctly"
|
323 |
+
msgstr "Champ inséré correctement"
|
324 |
+
|
325 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:441
|
326 |
+
msgid "Field #"
|
327 |
+
msgstr "Champ #"
|
328 |
+
|
329 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:441
|
330 |
+
msgid "updated correctly"
|
331 |
+
msgstr "correctement mis à jour"
|
332 |
+
|
333 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:453
|
334 |
+
msgid "Name inserted is just in the database, change to another one"
|
335 |
+
msgstr "Le nom est déjà dans la base de données; veuillez le changer"
|
336 |
+
|
337 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:468
|
338 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:367
|
339 |
+
msgid "Add a new Field"
|
340 |
+
msgstr "Ajouter un nouveau champ"
|
341 |
+
|
342 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:586
|
343 |
+
msgid ""
|
344 |
+
"To add a new field you have to choose a name, type and label; optional are "
|
345 |
+
"value and description. Rules are applied during user registration."
|
346 |
+
msgstr ""
|
347 |
+
"Pour ajouter un nouveau champ, vous devez choisir un nom, un type et une "
|
348 |
+
"étiquette; la valeur et la description sont optionnelles. Les règles sont "
|
349 |
+
"appliquées lors de l'inscription d'un utilisateur."
|
350 |
+
|
351 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:588
|
352 |
+
msgid ""
|
353 |
+
"With <strong>radio</strong> and <strong>checkbox</strong>: <em>Value</em> "
|
354 |
+
"and <em>equal TO</em> can only be 'Yes' or 'No' that means 'selected' or "
|
355 |
+
"'not selected'"
|
356 |
+
msgstr ""
|
357 |
+
"Avec les types <strong>radio</strong> et <strong>checkbox</strong>: "
|
358 |
+
"<em>Valeur</em> et <em>Égal à</em> peuvent seulement être 'Yes' ou 'No' ce "
|
359 |
+
"qui signifie 'sélectionné' ou 'non sélectionné'"
|
360 |
+
|
361 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:589
|
362 |
+
msgid ""
|
363 |
+
"With <strong>drop-down</strong>: you have to add all options into label for "
|
364 |
+
"example: label/item1,item2,item3"
|
365 |
+
msgstr ""
|
366 |
+
"Avec le type <strong>drop-down</strong>: vous devez ajouter toutes les "
|
367 |
+
"options dans l'étiquette, par exemple: étiquette/item1,item2,item3"
|
368 |
+
|
369 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:590
|
370 |
+
msgid ""
|
371 |
+
"With <strong>picture</strong>: you can preload a default image putting url "
|
372 |
+
"in <em>Value</em>; 'min,exact,max size' are in KB; <em>equal TO</em> means "
|
373 |
+
"max pixel size (width or height) for thumbnail"
|
374 |
+
msgstr ""
|
375 |
+
"Avec le type <strong>picture</strong>: vous pouvez précharger une image par "
|
376 |
+
"défaut en indiquant son URL dans <em>Valeur</em>; 'taille min,exacte,max' "
|
377 |
+
"sont en kB; <em>Égal à</em> indique la taille max en pixels (largeur ou "
|
378 |
+
"hauteur) pour les vignettes"
|
379 |
+
|
380 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:591
|
381 |
+
msgid ""
|
382 |
+
"With <strong>picture-url</strong>: you can preload a default image putting "
|
383 |
+
"url in <em>Value</em>; <em>equal TO</em> means max width pixel size (height "
|
384 |
+
"will be proportional)"
|
385 |
+
msgstr ""
|
386 |
+
"Avec le type <strong>picture-url</strong>: vous pouvez précharger une image "
|
387 |
+
"par défaut en indiquant son URL dans <em>Valeur</em>; <em>Égal à</em> "
|
388 |
+
"indique la taille de la largeur max en pixels (la hauteur sera "
|
389 |
+
"proportionnelle)"
|
390 |
+
|
391 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:592
|
392 |
+
msgid ""
|
393 |
+
"With <strong>registration-date</strong>: <em>equal TO</em> means date and "
|
394 |
+
"time format"
|
395 |
+
msgstr ""
|
396 |
+
"Avec le type <strong>registration-date</strong>: <em>Égal à</em> indique un "
|
397 |
+
"format date et heure"
|
398 |
+
|
399 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:593
|
400 |
+
msgid ""
|
401 |
+
"With <strong>avatar</strong>: you can preload a default image putting url in "
|
402 |
+
"<em>Value</em>; 'min,exact,max size' are in KB; <em>equal TO</em> is "
|
403 |
+
"automatically set to 512 pixels"
|
404 |
+
msgstr ""
|
405 |
+
"Avec le type <strong>picture</strong>: vous pouvez précharger une image par "
|
406 |
+
"défaut en indiquant son URL dans <em>Valeur</em>; 'taille min,exacte,max' "
|
407 |
+
"sont en kB; <em>Égal à</em> est automatiquement mis à 512 pixels"
|
408 |
+
|
409 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:594
|
410 |
+
msgid ""
|
411 |
+
"With <strong>file</strong>: you can preload a default file putting url in "
|
412 |
+
"<em>Value</em>; 'min,exact,max size' are in KB; under <em>equal TO</em> can "
|
413 |
+
"be specified allowed extensions separated by comma, example: zip,pdf,doc"
|
414 |
+
msgstr ""
|
415 |
+
"Avec le type <strong>picture</strong>: vous pouvez précharger un fichier par "
|
416 |
+
"défaut en indiquant son URL dans <em>Valeur</em>; 'taille min,exacte,max' "
|
417 |
+
"sont en KB; <em>Égal à</em> indique les extensions de fichiers acceptées "
|
418 |
+
"séparées par une virgule, exemple: zip,pdf,doc"
|
419 |
+
|
420 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:595
|
421 |
+
msgid ""
|
422 |
+
"With <strong>date</strong>: you can preload a default date in <em>Value</"
|
423 |
+
"em>; 'min date' can be relative: -1d, -1m, -1y or a specific date; 'max "
|
424 |
+
"date' can be relative: +1d, +1m, +1y or a specific date; <em>equal TO</em> "
|
425 |
+
"can be a specific date"
|
426 |
+
msgstr ""
|
427 |
+
"Avec <strong>date</strong>: vous pouvez précharger une date par défaut dans "
|
428 |
+
"<em>Value</em>; 'min date' peut être relative: -1d, -1m, -1y ou une date "
|
429 |
+
"spécifique; 'max date' peut être relative: +1d, +1m, +1y ou une date "
|
430 |
+
"spécifique; <em>égal à</em> peut être une date spécifique"
|
431 |
+
|
432 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:602
|
433 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:612
|
434 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:834
|
435 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:942
|
436 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1539
|
437 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1540
|
438 |
+
msgid "Name"
|
439 |
+
msgstr "Nom"
|
440 |
+
|
441 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:602
|
442 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:613
|
443 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:834
|
444 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:945
|
445 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1850
|
446 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1855
|
447 |
+
msgid "Value"
|
448 |
+
msgstr "Valeur"
|
449 |
+
|
450 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:603
|
451 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:616
|
452 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:834
|
453 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:948
|
454 |
+
msgid "Type"
|
455 |
+
msgstr "Type"
|
456 |
+
|
457 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:604
|
458 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:632
|
459 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:835
|
460 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:965
|
461 |
+
msgid "Label"
|
462 |
+
msgstr "Étiquette"
|
463 |
+
|
464 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:604
|
465 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:633
|
466 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:835
|
467 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:968
|
468 |
+
msgid "Description"
|
469 |
+
msgstr "Description"
|
470 |
+
|
471 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:605
|
472 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:836
|
473 |
+
msgid "Rules"
|
474 |
+
msgstr "Règles"
|
475 |
+
|
476 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:606
|
477 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:837
|
478 |
+
msgid "Actions"
|
479 |
+
msgstr "Actions"
|
480 |
+
|
481 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:627
|
482 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:959
|
483 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1285
|
484 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1376
|
485 |
+
msgid "Fieldset"
|
486 |
+
msgstr "Regroupements"
|
487 |
+
|
488 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:649
|
489 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:986
|
490 |
+
msgid "Can be empty"
|
491 |
+
msgstr "Peut être vide"
|
492 |
+
|
493 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:651
|
494 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:988
|
495 |
+
msgid "Check for E-mail syntax"
|
496 |
+
msgstr "Vérifier la syntaxe du courriel"
|
497 |
+
|
498 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:654
|
499 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:991
|
500 |
+
msgid "Can be modified"
|
501 |
+
msgstr "Peut être modifié"
|
502 |
+
|
503 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:655
|
504 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:992
|
505 |
+
msgid "Can be modified only if empty"
|
506 |
+
msgstr "Ne peut être modifié que s'il est vide"
|
507 |
+
|
508 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:656
|
509 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:993
|
510 |
+
msgid "Can be modified only by admin"
|
511 |
+
msgstr "Ne peut être modifié que par un admin"
|
512 |
+
|
513 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:657
|
514 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:994
|
515 |
+
msgid "Can be modified only by admin or if empty"
|
516 |
+
msgstr "Ne peut être modifié que par un admin ou s'il est vide"
|
517 |
+
|
518 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:658
|
519 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:995
|
520 |
+
msgid "Cannot be modified"
|
521 |
+
msgstr "Ne peut pas être modifié"
|
522 |
+
|
523 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:663
|
524 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1001
|
525 |
+
msgid "Should be equal TO"
|
526 |
+
msgstr "Devrait être égal à"
|
527 |
+
|
528 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:666
|
529 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1004
|
530 |
+
msgid "Case sensitive"
|
531 |
+
msgstr "Tenir compte de la casse (majuscule/minuscule)"
|
532 |
+
|
533 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:670
|
534 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1007
|
535 |
+
msgid "Regular Expression"
|
536 |
+
msgstr "Expression régulière"
|
537 |
+
|
538 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:674
|
539 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1013
|
540 |
+
msgid "Show the field in the registration"
|
541 |
+
msgstr "Montrer le champ lors de l'inscription"
|
542 |
+
|
543 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:678
|
544 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1017
|
545 |
+
msgid "Show the field in User's profile"
|
546 |
+
msgstr "Montrer le champ dans le profil de l'utilisateur"
|
547 |
+
|
548 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:682
|
549 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1027
|
550 |
+
msgid "Show the field in Users Extended section"
|
551 |
+
msgstr "Montrer le champ dans le menu Utilisateurs / Liste étendue"
|
552 |
+
|
553 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:686
|
554 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1031
|
555 |
+
msgid "Show the field in the search engine"
|
556 |
+
msgstr "Montrer le champ dans les moteurs de recherche"
|
557 |
+
|
558 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:690
|
559 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1035
|
560 |
+
msgid "Show the field in the blog"
|
561 |
+
msgstr "Montrer le champ dans le blog"
|
562 |
+
|
563 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:693
|
564 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1038
|
565 |
+
msgid "Show the field if the role is at least:"
|
566 |
+
msgstr "Montrer le champ si le rôle est au moins:"
|
567 |
+
|
568 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:695
|
569 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1040
|
570 |
+
msgid "Anonymous"
|
571 |
+
msgstr "Anonyme"
|
572 |
+
|
573 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:701
|
574 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1046
|
575 |
+
msgid "User has 'view_cimy_extra_fields' capability"
|
576 |
+
msgstr "L'utilisateur a les droits 'view_cimy_extra_fields'"
|
577 |
+
|
578 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:707
|
579 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1055
|
580 |
+
msgid "Send an email to the admin if the user changes its value"
|
581 |
+
msgstr ""
|
582 |
+
"Envoyer un courriel à l'administrateur si l'utilisateur modifie la valeur de "
|
583 |
+
"ce champ"
|
584 |
+
|
585 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:709
|
586 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1060
|
587 |
+
msgid "Advanced options"
|
588 |
+
msgstr "Options avancées"
|
589 |
+
|
590 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:714
|
591 |
+
msgid "Clear"
|
592 |
+
msgstr "Effacer"
|
593 |
+
|
594 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:798
|
595 |
+
msgid "Invert selection"
|
596 |
+
msgstr "Inverser la sélection"
|
597 |
+
|
598 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:799
|
599 |
+
msgid ""
|
600 |
+
"Are you sure you want to delete field(s) and all data inserted into by users?"
|
601 |
+
msgstr ""
|
602 |
+
"Ètes-vous certain de vouloir supprimer ce(s) champ(s) et toutes les données "
|
603 |
+
"insérées par vos utilisateurs?"
|
604 |
+
|
605 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:805
|
606 |
+
msgid "WordPress Fields"
|
607 |
+
msgstr "Champs WordPress"
|
608 |
+
|
609 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:807
|
610 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1850
|
611 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1855
|
612 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:367
|
613 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:115
|
614 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:369
|
615 |
+
msgid "Extra Fields"
|
616 |
+
msgstr "Champs Supplémentaires"
|
617 |
+
|
618 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:818
|
619 |
+
msgid "None!"
|
620 |
+
msgstr "Aucun!"
|
621 |
+
|
622 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:833
|
623 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:930
|
624 |
+
msgid "Order"
|
625 |
+
msgstr "Ordre"
|
626 |
+
|
627 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1064
|
628 |
+
msgid "Reset"
|
629 |
+
msgstr "Réinitialiser"
|
630 |
+
|
631 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1130
|
632 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:391
|
633 |
+
msgid "SUCCESSFUL"
|
634 |
+
msgstr "RÉUSSI"
|
635 |
+
|
636 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1149
|
637 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1877
|
638 |
+
msgid "select"
|
639 |
+
msgstr "sélectionnez"
|
640 |
+
|
641 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1289
|
642 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1380
|
643 |
+
msgid "Users per page"
|
644 |
+
msgstr "Utilisateurs par page"
|
645 |
+
|
646 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1291
|
647 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1382
|
648 |
+
msgid "Apply"
|
649 |
+
msgstr "Appliquer"
|
650 |
+
|
651 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1456
|
652 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_init.php:23
|
653 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_init.php:31
|
654 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_init.php:36
|
655 |
+
msgid "Users Extended"
|
656 |
+
msgstr "Liste étendue"
|
657 |
+
|
658 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1464
|
659 |
+
#, php-format
|
660 |
+
msgid "Search results for “%s”"
|
661 |
+
msgstr "Résultats de la recherche pour “%s”"
|
662 |
+
|
663 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1502
|
664 |
+
#, php-format
|
665 |
+
msgid "%1$s <span class=\"count\">(%2$s)</span>"
|
666 |
+
msgstr "%1$s <span class=\"count\">(%2$s)</span>"
|
667 |
+
|
668 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1511
|
669 |
+
msgid "Search Users"
|
670 |
+
msgstr "Chercher des utilisateurs"
|
671 |
+
|
672 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1549
|
673 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1550
|
674 |
+
msgid "Role"
|
675 |
+
msgstr "Rôle"
|
676 |
+
|
677 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1554
|
678 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1555
|
679 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:328
|
680 |
+
msgid "Website"
|
681 |
+
msgstr "Site web"
|
682 |
+
|
683 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1559
|
684 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1560
|
685 |
+
msgid "Posts"
|
686 |
+
msgstr "Articles"
|
687 |
+
|
688 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1683
|
689 |
+
msgid "View posts by this author"
|
690 |
+
msgstr "Voir les articles de cet auteur"
|
691 |
+
|
692 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1708
|
693 |
+
msgid "Super Admin"
|
694 |
+
msgstr "Super Admin"
|
695 |
+
|
696 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1719
|
697 |
+
#, php-format
|
698 |
+
msgid "e-mail: %s"
|
699 |
+
msgstr "courriel: %s"
|
700 |
+
|
701 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1830
|
702 |
+
#, fuzzy
|
703 |
+
msgid "Change"
|
704 |
+
msgstr "Changer l'image"
|
705 |
+
|
706 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1846
|
707 |
+
msgid "Update selected users"
|
708 |
+
msgstr "Mettre à jour les utilisateurs sélectionnés"
|
709 |
+
|
710 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1867
|
711 |
+
msgid "Update"
|
712 |
+
msgstr "Mettre à jour"
|
713 |
+
|
714 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1882
|
715 |
+
msgid "OK"
|
716 |
+
msgstr "OK"
|
717 |
+
|
718 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_admin.php:1883
|
719 |
+
msgid "Cancel"
|
720 |
+
msgstr "Annuler"
|
721 |
+
|
722 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:45
|
723 |
+
#, php-format
|
724 |
+
msgid "New user registration on your site %s:"
|
725 |
+
msgstr "Inscription d'un nouvel utilisateur sur votre site %s:"
|
726 |
+
|
727 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:46
|
728 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:243
|
729 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:214
|
730 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:364
|
731 |
+
#, php-format
|
732 |
+
msgid "Username: %s"
|
733 |
+
msgstr "Identifiant: %s"
|
734 |
+
|
735 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:47
|
736 |
+
#, php-format
|
737 |
+
msgid "E-mail: %s"
|
738 |
+
msgstr "Courriel: %s"
|
739 |
+
|
740 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:52
|
741 |
+
#, php-format
|
742 |
+
msgid "[%s] New User Registration"
|
743 |
+
msgstr "[%s] Inscription d'un nouvel utilisateur"
|
744 |
+
|
745 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:64
|
746 |
+
#, php-format
|
747 |
+
msgid "[%s] Your username and password"
|
748 |
+
msgstr "[%s] Votre identifiant et mot de passe"
|
749 |
+
|
750 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:105
|
751 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:118
|
752 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:131
|
753 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:137
|
754 |
+
#, php-format
|
755 |
+
msgid "%s: %s"
|
756 |
+
msgstr "%s: %s"
|
757 |
+
|
758 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:211
|
759 |
+
#, php-format
|
760 |
+
msgid ""
|
761 |
+
"To activate your user, please click the following link:\n"
|
762 |
+
"\n"
|
763 |
+
"%s\n"
|
764 |
+
"\n"
|
765 |
+
"After you activate, you will receive *another email* with your login.\n"
|
766 |
+
"\n"
|
767 |
+
msgstr ""
|
768 |
+
"Pour activer votre compte d'utilisateur, veuillez cliquer sur le lien "
|
769 |
+
"suivant:\n"
|
770 |
+
"\n"
|
771 |
+
"%s\n"
|
772 |
+
"\n"
|
773 |
+
"Après l'activation, vous recevrez un *autre courriel* avec votre "
|
774 |
+
"identifiant.\n"
|
775 |
+
|
776 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:215
|
777 |
+
#, php-format
|
778 |
+
msgid "[%1$s] Activate %2$s"
|
779 |
+
msgstr "[%1$s] Activer %2$s"
|
780 |
+
|
781 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:234
|
782 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:243
|
783 |
+
msgid "Your account is now active!"
|
784 |
+
msgstr "Votre compte est maintenant actif!"
|
785 |
+
|
786 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:235
|
787 |
+
#, php-format
|
788 |
+
msgid ""
|
789 |
+
"Your site at <a href=\"%1$s\">%2$s</a> is active. You may now log in to your "
|
790 |
+
"site using your chosen username of “%3$s”. Please check your "
|
791 |
+
"email inbox at %4$s for your password and login instructions. If you do not "
|
792 |
+
"receive an email, please check your junk or spam folder. If you still do "
|
793 |
+
"not receive an email within an hour, you can <a href=\"%5$s\">reset your "
|
794 |
+
"password</a></p>."
|
795 |
+
msgstr ""
|
796 |
+
"Votre compte sur <a href=\"%1$s\">%2$s</a> est actif. Vous pouvez vous "
|
797 |
+
"connecter à votre compte en utilisant l'identifiant \"%3$s\". Veuillez "
|
798 |
+
"vérifier la boite de réception de votre messagerie %4$s pour connaître votre "
|
799 |
+
"mot de passe et les instructions de connexion. Si vous ne recevez pas ce "
|
800 |
+
"courriel, vérifiez dans votre dossier de pourriel (spam). Si après une heure "
|
801 |
+
"vous n'avez toujours pas reçu de courriel, vous pouvez <a href=\"%5$s"
|
802 |
+
"\">réinitialiser votre mot de passe</a></p>."
|
803 |
+
|
804 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:237
|
805 |
+
msgid "An error occurred during the activation"
|
806 |
+
msgstr "Une erreur est survenue durant l'activation"
|
807 |
+
|
808 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:243
|
809 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:215
|
810 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:365
|
811 |
+
#, php-format
|
812 |
+
msgid "Password: %s"
|
813 |
+
msgstr "Mot de passe: %s"
|
814 |
+
|
815 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:257
|
816 |
+
msgid "Invalid activation key."
|
817 |
+
msgstr "Clef d'activation invalide."
|
818 |
+
|
819 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:260
|
820 |
+
msgid "The site is already active."
|
821 |
+
msgstr "Le compte est déjà actif."
|
822 |
+
|
823 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:280
|
824 |
+
msgid "Could not create user"
|
825 |
+
msgstr "Création de l'utilisateur impossible"
|
826 |
+
|
827 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:292
|
828 |
+
msgid "That username is already activated."
|
829 |
+
msgstr "Cet identifiant est déjà actif."
|
830 |
+
|
831 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:312
|
832 |
+
msgid ""
|
833 |
+
"That username is currently reserved but may be available in a couple of days."
|
834 |
+
msgstr ""
|
835 |
+
"Cet identifiant est actuellement réservé, mais peut être disponible d'ici "
|
836 |
+
"quelques jours."
|
837 |
+
|
838 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:315
|
839 |
+
msgid "username and email used"
|
840 |
+
msgstr "identifiant et courriel utilisés"
|
841 |
+
|
842 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_email_handler.php:325
|
843 |
+
msgid ""
|
844 |
+
"That email address has already been used. Please check your inbox for an "
|
845 |
+
"activation email. It will become available in a couple of days if you do "
|
846 |
+
"nothing."
|
847 |
+
msgstr ""
|
848 |
+
"Cette adresse courriel est déjà utilisée. Veuillez vérifier votre messagerie "
|
849 |
+
"pour le courriel d'activation. Si vous ne faites rien, ce courriel sera de "
|
850 |
+
"nouveau disponible pour l'inscription."
|
851 |
+
|
852 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:144
|
853 |
+
msgid "(required)"
|
854 |
+
msgstr "(requis)"
|
855 |
+
|
856 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:454
|
857 |
+
msgid "Delete the file"
|
858 |
+
msgstr "Supprimer le fichier"
|
859 |
+
|
860 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:455
|
861 |
+
msgid "Update the file"
|
862 |
+
msgstr "Mettre à jour le fichier"
|
863 |
+
|
864 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:458
|
865 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:545
|
866 |
+
msgid "Delete the picture"
|
867 |
+
msgstr "Supprimer l'image"
|
868 |
+
|
869 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:459
|
870 |
+
msgid "Update the picture"
|
871 |
+
msgstr "Mettre à jour la photo"
|
872 |
+
|
873 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:479
|
874 |
+
msgid "Picture URL:"
|
875 |
+
msgstr "URL de la photo:"
|
876 |
+
|
877 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:735
|
878 |
+
#, php-format
|
879 |
+
msgid "%s previous value: %s new value: %s"
|
880 |
+
msgstr "ancienne valeur de %s: %s; nouvelle valeur: %s"
|
881 |
+
|
882 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_profile.php:750
|
883 |
+
#, php-format
|
884 |
+
msgid "%s (%s) has changed one or more fields"
|
885 |
+
msgstr "%s (%s) a modifié un ou plusieurs champs"
|
886 |
+
|
887 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_init.php:21
|
888 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:364
|
889 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:559
|
890 |
+
msgid "Options"
|
891 |
+
msgstr "Options"
|
892 |
+
|
893 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:52
|
894 |
+
msgid "WordPress Fields table emptied"
|
895 |
+
msgstr "Table des champs WordPress vidée"
|
896 |
+
|
897 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:57
|
898 |
+
msgid "WordPress Fields table deleted"
|
899 |
+
msgstr "Table des champs WordPress supprimée"
|
900 |
+
|
901 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:66
|
902 |
+
msgid "Extra Fields table emptied"
|
903 |
+
msgstr "Table des champs supplémentaires vidée"
|
904 |
+
|
905 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:71
|
906 |
+
msgid "Extra Fields table deleted"
|
907 |
+
msgstr "Table des champs supplémentaires supprimée"
|
908 |
+
|
909 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:80
|
910 |
+
msgid "Users Data table emptied"
|
911 |
+
msgstr "Table des données utilisateurs vidée"
|
912 |
+
|
913 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:85
|
914 |
+
msgid "Users Data table deleted"
|
915 |
+
msgstr "Table des données utilisateurs supprimée"
|
916 |
+
|
917 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:96
|
918 |
+
msgid "Options set to default values"
|
919 |
+
msgstr "Options réinitialisées à leur valeur par défaut"
|
920 |
+
|
921 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:102
|
922 |
+
msgid "Options deleted"
|
923 |
+
msgstr "Options supprimées"
|
924 |
+
|
925 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:256
|
926 |
+
msgid "Options changed"
|
927 |
+
msgstr "Options changées"
|
928 |
+
|
929 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:355
|
930 |
+
msgid ""
|
931 |
+
"This operation will create/update all missing tables/options, do you want to "
|
932 |
+
"proceed?"
|
933 |
+
msgstr ""
|
934 |
+
"Cette opération créera ou mettra à jour toutes les tables et options "
|
935 |
+
"manquantes. Voulez-vous continuer?"
|
936 |
+
|
937 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:373
|
938 |
+
msgid "Support the Cimy Project"
|
939 |
+
msgstr "Supportez le <em>Cimy Project</em>"
|
940 |
+
|
941 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:381
|
942 |
+
msgid ""
|
943 |
+
"This plug-in is the results of hours of development to add new features, "
|
944 |
+
"support new WordPress versions and fix bugs, please donate money if saved "
|
945 |
+
"you from spending all these hours!"
|
946 |
+
msgstr ""
|
947 |
+
"Ce plug-in est le résultat de plusieurs heures de conception pour ajouter de "
|
948 |
+
"nouvelles fonctionnalités, supporter les nouvelles versions de WordPress et "
|
949 |
+
"résoudre les bogues. Merci de faire un don s'il vous a épargné toutes ces "
|
950 |
+
"heures!"
|
951 |
+
|
952 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:405
|
953 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:799
|
954 |
+
msgid "Save Changes"
|
955 |
+
msgstr "Enregistrer les changements"
|
956 |
+
|
957 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:406
|
958 |
+
msgid "General"
|
959 |
+
msgstr "Général"
|
960 |
+
|
961 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:414
|
962 |
+
msgid "installed is"
|
963 |
+
msgstr "installé"
|
964 |
+
|
965 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:418
|
966 |
+
msgid "OPTIONS DELETED!"
|
967 |
+
msgstr "OPTIONS SUPPRIMÉES!"
|
968 |
+
|
969 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:421
|
970 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:426
|
971 |
+
msgid "Fix the problem"
|
972 |
+
msgstr "Corriger le problème"
|
973 |
+
|
974 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:424
|
975 |
+
msgid ""
|
976 |
+
"VERSIONS MISMATCH! This because you haven't de-activated and re-activated "
|
977 |
+
"the plug-in after the update! This could give problems..."
|
978 |
+
msgstr ""
|
979 |
+
"LES VERSIONS NE CORRESPONDENT PAS! Ceci parce que vous n'avez pas désactivé "
|
980 |
+
"et réactivé le plug-in après sa mise à jour! Cela peut poser problème..."
|
981 |
+
|
982 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:432
|
983 |
+
msgid "Picture/Avatar upload"
|
984 |
+
msgstr "Téléchargement de photo ou d'avatar"
|
985 |
+
|
986 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:436
|
987 |
+
msgid "is created and writable"
|
988 |
+
msgstr "est créé et en écriture"
|
989 |
+
|
990 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:438
|
991 |
+
msgid "is NOT created or webserver does NOT have permission to write on it"
|
992 |
+
msgstr "n'est PAS créé ou le serveur web n'a PAS les permissions pour l'écrire"
|
993 |
+
|
994 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:445
|
995 |
+
msgid "Show all fields in the welcome email"
|
996 |
+
msgstr "Montrer tous les champs dans le courriel de bienvenue"
|
997 |
+
|
998 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:449
|
999 |
+
msgid ""
|
1000 |
+
"the email sent to the admin and to the user upon registration will have all "
|
1001 |
+
"fields"
|
1002 |
+
msgstr ""
|
1003 |
+
"le courriel envoyé aux administrateurs et à l'utilisateur lors de "
|
1004 |
+
"l'inscription contiendra tous les champs"
|
1005 |
+
|
1006 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:457
|
1007 |
+
msgid "Enable email confirmation"
|
1008 |
+
msgstr "Activer la confirmation par courriel"
|
1009 |
+
|
1010 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:461
|
1011 |
+
msgid "user that registers should confirm its email address via a link click"
|
1012 |
+
msgstr ""
|
1013 |
+
"les utilisateurs qui s'inscrivent doivent confirmer leur adresse courriel "
|
1014 |
+
"grâce à un lien à cliquer"
|
1015 |
+
|
1016 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:463
|
1017 |
+
msgid ""
|
1018 |
+
"<strong>note:</strong> this option turned on will automatically disable "
|
1019 |
+
"(only during the registration) all upload fields: file, picture, avatar"
|
1020 |
+
msgstr ""
|
1021 |
+
"<strong>note:</strong> avec cette option activée, tous les champs de "
|
1022 |
+
"téléchargement (fichiers, images, avatar) seront désactivés lors de "
|
1023 |
+
"l'inscription seulement"
|
1024 |
+
|
1025 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:470
|
1026 |
+
#, fuzzy
|
1027 |
+
msgid "Enable form confirmation"
|
1028 |
+
msgstr "Activer la confirmation par courriel"
|
1029 |
+
|
1030 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:474
|
1031 |
+
msgid "a summary of the registration form will be presented to the user"
|
1032 |
+
msgstr "un résumé du formulaire d'inscription sera présenté à l'utilisateur"
|
1033 |
+
|
1034 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:480
|
1035 |
+
msgid "Customize welcome email sent to the new user"
|
1036 |
+
msgstr "Personnaliser le courriel de bienvenue envoyé au nouvel utilisateur"
|
1037 |
+
|
1038 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:484
|
1039 |
+
msgid ""
|
1040 |
+
"if you change or remove the placeholders then the email won't have the "
|
1041 |
+
"correct information"
|
1042 |
+
msgstr ""
|
1043 |
+
"si vous changez ou enlevez les variables alors le courriel n'aura pas "
|
1044 |
+
"l'information correcte"
|
1045 |
+
|
1046 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:490
|
1047 |
+
msgid "Redirect to the source"
|
1048 |
+
msgstr "Rediriger au référant"
|
1049 |
+
|
1050 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:494
|
1051 |
+
msgid ""
|
1052 |
+
"after the registration or confirmation the user will be redirected to the "
|
1053 |
+
"address where was exactly before clicking on the registration link"
|
1054 |
+
msgstr ""
|
1055 |
+
"après l'inscription, ou la confirmation, l'utilisateur sera redirigé à la "
|
1056 |
+
"page qu'il visitait avant de cliquer sur le lien d'inscription"
|
1057 |
+
|
1058 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:502
|
1059 |
+
msgid "No captcha"
|
1060 |
+
msgstr "Pas de captcha"
|
1061 |
+
|
1062 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:510
|
1063 |
+
msgid ""
|
1064 |
+
"Enable <a href=\"http://www.google.com/recaptcha\" target=\"_blank"
|
1065 |
+
"\">reCAPTCHA</a>"
|
1066 |
+
msgstr ""
|
1067 |
+
"Activer <a href=\"http://www.google.com/recaptcha\" target=\"_blank"
|
1068 |
+
"\">reCAPTCHA</a>"
|
1069 |
+
|
1070 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:514
|
1071 |
+
msgid "Public KEY"
|
1072 |
+
msgstr "Clé publique"
|
1073 |
+
|
1074 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:518
|
1075 |
+
msgid "Private KEY"
|
1076 |
+
msgstr "Clé privée"
|
1077 |
+
|
1078 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:526
|
1079 |
+
msgid ""
|
1080 |
+
"Enable <a href=\"http://www.phpcaptcha.org/\" target=\"_blank\">Securimage "
|
1081 |
+
"Captcha</a>"
|
1082 |
+
msgstr ""
|
1083 |
+
"Activer <a href=\"http://www.phpcaptcha.org/\" target=\"_blank\">Securimage "
|
1084 |
+
"Captcha</a>"
|
1085 |
+
|
1086 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:529
|
1087 |
+
msgid "This captcha is probably weaker, but is easier for users"
|
1088 |
+
msgstr ""
|
1089 |
+
"Ce captcha est probablement plus faible, mais plus facile pour les "
|
1090 |
+
"utilisateurs"
|
1091 |
+
|
1092 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:533
|
1093 |
+
#, php-format
|
1094 |
+
msgid ""
|
1095 |
+
"<strong>WARNING: to activate this captcha download <a href=\"http://www."
|
1096 |
+
"phpcaptcha.org/latest.zip\" target=\"_blank\">this package</a> and unpack it "
|
1097 |
+
"under %s</strong>"
|
1098 |
+
msgstr ""
|
1099 |
+
"<strong>AVERTISSEMENT: pour activer ce captcha, téléchargez <a href=\"http://"
|
1100 |
+
"www.phpcaptcha.org/latest.zip\" target=\"_blank\">ce paquet</a> et extrayez-"
|
1101 |
+
"le sous %s</strong>"
|
1102 |
+
|
1103 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:540
|
1104 |
+
msgid "Change login/registration page logo"
|
1105 |
+
msgstr "Changer le logo de la page de connexion et d'inscription"
|
1106 |
+
|
1107 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:548
|
1108 |
+
msgid "Maximum recommended logo width is 328px, but any height should work."
|
1109 |
+
msgstr ""
|
1110 |
+
"La largeur maximum recommandée est de 328 px, mais n'importe quelle hauteur "
|
1111 |
+
"devrait fonctionner."
|
1112 |
+
|
1113 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:554
|
1114 |
+
msgid "Database"
|
1115 |
+
msgstr "Base de données"
|
1116 |
+
|
1117 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:566
|
1118 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:586
|
1119 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:606
|
1120 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:626
|
1121 |
+
msgid "select action"
|
1122 |
+
msgstr "sélectionner une action"
|
1123 |
+
|
1124 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:567
|
1125 |
+
msgid "Default values"
|
1126 |
+
msgstr "Valeurs par défaut"
|
1127 |
+
|
1128 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:568
|
1129 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:588
|
1130 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:608
|
1131 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:628
|
1132 |
+
msgid "Delete"
|
1133 |
+
msgstr "Supprimer"
|
1134 |
+
|
1135 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:572
|
1136 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:592
|
1137 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:612
|
1138 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:633
|
1139 |
+
msgid "NOT PRESENT"
|
1140 |
+
msgstr "NON PRÉSENT"
|
1141 |
+
|
1142 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:579
|
1143 |
+
msgid "WordPress Fields table"
|
1144 |
+
msgstr "Table des champs WordPress"
|
1145 |
+
|
1146 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:587
|
1147 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:607
|
1148 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:627
|
1149 |
+
msgid "Empty"
|
1150 |
+
msgstr "Vider"
|
1151 |
+
|
1152 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:599
|
1153 |
+
msgid "Extra Fields table"
|
1154 |
+
msgstr "Table des champs supplémentaires"
|
1155 |
+
|
1156 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:619
|
1157 |
+
msgid "Users Data table"
|
1158 |
+
msgstr "Table des données utilisateurs"
|
1159 |
+
|
1160 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:630
|
1161 |
+
msgid "all data inserted by users in all and only extra fields"
|
1162 |
+
msgstr ""
|
1163 |
+
"toutes les données insérées par les utilisateurs dans les champs "
|
1164 |
+
"supplémentaires seulement"
|
1165 |
+
|
1166 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:640
|
1167 |
+
msgid "Force tables creation"
|
1168 |
+
msgstr "Forcer la création des tables"
|
1169 |
+
|
1170 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:644
|
1171 |
+
msgid ""
|
1172 |
+
"equivalent to de-activate and activate the plug-in; no other operation will "
|
1173 |
+
"be performed"
|
1174 |
+
msgstr ""
|
1175 |
+
"équivalent à désactiver et activer le plug-in; aucune autre opération ne "
|
1176 |
+
"sera effectuée"
|
1177 |
+
|
1178 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:650
|
1179 |
+
msgid "User Profile"
|
1180 |
+
msgstr "Profil utilisateur"
|
1181 |
+
|
1182 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:653
|
1183 |
+
msgid "Extra Fields section title"
|
1184 |
+
msgstr "Titre de la section des champs supplémentaires"
|
1185 |
+
|
1186 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:657
|
1187 |
+
msgid "Fieldset's titles, separates with comma"
|
1188 |
+
msgstr "Titres des regroupements, séparés par des virgules"
|
1189 |
+
|
1190 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:657
|
1191 |
+
msgid "example: title1,title2,title3"
|
1192 |
+
msgstr "exemple: titre1,titre2,titre3"
|
1193 |
+
|
1194 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:658
|
1195 |
+
msgid ""
|
1196 |
+
"<strong>note:</strong> if you change order or remove fieldsets you may need "
|
1197 |
+
"to set all extra fields' fieldset assigment again"
|
1198 |
+
msgstr ""
|
1199 |
+
"<strong>note</strong>: si vous changez l'ordre ou retirez des regroupements, "
|
1200 |
+
"vous pourriez devoir refaire l'affection des champs supplémentaires aux "
|
1201 |
+
"regroupements"
|
1202 |
+
|
1203 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:663
|
1204 |
+
msgid "Authors & Users Extended"
|
1205 |
+
msgstr "Auteurs & Utilisateurs étendus"
|
1206 |
+
|
1207 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:668
|
1208 |
+
msgid "Hide username field"
|
1209 |
+
msgstr "Cacher le champ nom d'utilisateur"
|
1210 |
+
|
1211 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:675
|
1212 |
+
msgid "Hide name field"
|
1213 |
+
msgstr "Cacher le champ nom"
|
1214 |
+
|
1215 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:682
|
1216 |
+
msgid "Hide email field"
|
1217 |
+
msgstr "Cacher le champ courriel"
|
1218 |
+
|
1219 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:689
|
1220 |
+
msgid "Hide role field"
|
1221 |
+
msgstr "Cacher le champ rôle"
|
1222 |
+
|
1223 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:696
|
1224 |
+
msgid "Hide website field"
|
1225 |
+
msgstr "Cacher le champ du site web"
|
1226 |
+
|
1227 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:703
|
1228 |
+
msgid "Hide n. posts field"
|
1229 |
+
msgstr "Cacher le champ nombre d'articles"
|
1230 |
+
|
1231 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:709
|
1232 |
+
msgid "WordPress hidden fields"
|
1233 |
+
msgstr "Champs WordPress cachés"
|
1234 |
+
|
1235 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:715
|
1236 |
+
#, fuzzy
|
1237 |
+
msgid "Show username"
|
1238 |
+
msgstr "Montrer le nom"
|
1239 |
+
|
1240 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:717
|
1241 |
+
msgid "when unchecked the email address will be used as username"
|
1242 |
+
msgstr ""
|
1243 |
+
"si cette case n'est pas cochée, l'adresse courriel sera utilisée comme nom "
|
1244 |
+
"d'utilisateur"
|
1245 |
+
|
1246 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:723
|
1247 |
+
msgid "Show password"
|
1248 |
+
msgstr "Montrer le mot de passe"
|
1249 |
+
|
1250 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:730
|
1251 |
+
msgid "Show confirmation password"
|
1252 |
+
msgstr "Montrer la confirmation du mot de passe"
|
1253 |
+
|
1254 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:737
|
1255 |
+
msgid "Show password strength meter"
|
1256 |
+
msgstr "Montrer l'indicateur de sûreté"
|
1257 |
+
|
1258 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:744
|
1259 |
+
msgid "Show first name"
|
1260 |
+
msgstr "Montrer le prénom"
|
1261 |
+
|
1262 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:751
|
1263 |
+
msgid "Show last name"
|
1264 |
+
msgstr "Montrer le nom"
|
1265 |
+
|
1266 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:758
|
1267 |
+
msgid "Show nickname"
|
1268 |
+
msgstr "Montrer le surnom"
|
1269 |
+
|
1270 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:765
|
1271 |
+
msgid "Show website"
|
1272 |
+
msgstr "Montrer le site web"
|
1273 |
+
|
1274 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:772
|
1275 |
+
msgid "Show AIM"
|
1276 |
+
msgstr "Montrer AIM"
|
1277 |
+
|
1278 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:779
|
1279 |
+
msgid "Show Yahoo IM"
|
1280 |
+
msgstr "Montrer Yahoo IM"
|
1281 |
+
|
1282 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:786
|
1283 |
+
msgid "Show Jabber / Google Talk"
|
1284 |
+
msgstr "Montrer Jabber / Google Talk"
|
1285 |
+
|
1286 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_options.php:793
|
1287 |
+
msgid "Show Biographical Info"
|
1288 |
+
msgstr "Afficher les renseignements biographiques"
|
1289 |
+
|
1290 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_missing_functions.php:16
|
1291 |
+
#, php-format
|
1292 |
+
msgid "File '%s' doesn't exist?"
|
1293 |
+
msgstr "Le fichier '%s' n'existe pas?"
|
1294 |
+
|
1295 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_missing_functions.php:19
|
1296 |
+
msgid "The GD image library is not installed."
|
1297 |
+
msgstr "La bibliothèque GD n'est pas installée."
|
1298 |
+
|
1299 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_missing_functions.php:26
|
1300 |
+
#, php-format
|
1301 |
+
msgid "File '%s' is not an image."
|
1302 |
+
msgstr "Le fichier '%s' n'est pas une image."
|
1303 |
+
|
1304 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_db.php:207
|
1305 |
+
msgid ""
|
1306 |
+
"<strong>Note:</strong> this website let you personalize your password; after "
|
1307 |
+
"the registration you will receive an e-mail with another password, do not "
|
1308 |
+
"care about that!"
|
1309 |
+
msgstr ""
|
1310 |
+
"<strong>Note:</strong> ce site web vous permet de personnaliser votre mot de "
|
1311 |
+
"passe. Après l'inscription, vous recevrez un courriel avec un autre mot de "
|
1312 |
+
"passe, ne vous en préoccupez pas!"
|
1313 |
+
|
1314 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:218
|
1315 |
+
msgid "Password"
|
1316 |
+
msgstr "Mot de passe"
|
1317 |
+
|
1318 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:240
|
1319 |
+
msgid "Password confirmation"
|
1320 |
+
msgstr "Confirmation du mot de passe"
|
1321 |
+
|
1322 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:262
|
1323 |
+
msgid "First name"
|
1324 |
+
msgstr "Prénom"
|
1325 |
+
|
1326 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:284
|
1327 |
+
msgid "Last name"
|
1328 |
+
msgstr "Nom"
|
1329 |
+
|
1330 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:306
|
1331 |
+
msgid "Nickname"
|
1332 |
+
msgstr "Pseudonyme"
|
1333 |
+
|
1334 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:350
|
1335 |
+
msgid "AIM"
|
1336 |
+
msgstr "AIM"
|
1337 |
+
|
1338 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:372
|
1339 |
+
msgid "Yahoo IM"
|
1340 |
+
msgstr "Yahoo IM"
|
1341 |
+
|
1342 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:394
|
1343 |
+
msgid "Jabber / Google Talk"
|
1344 |
+
msgstr "Jabber / Google Talk"
|
1345 |
+
|
1346 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_user_extra_fields.php:416
|
1347 |
+
msgid "Biographical Info"
|
1348 |
+
msgstr "Renseignements biographiques"
|
1349 |
+
|
1350 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:429
|
1351 |
+
msgid "no fieldset"
|
1352 |
+
msgstr "aucun regroupement"
|
1353 |
+
|
1354 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:433
|
1355 |
+
msgid "All"
|
1356 |
+
msgstr "Tous"
|
1357 |
+
|
1358 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:1018
|
1359 |
+
msgid "Done"
|
1360 |
+
msgstr "Fait"
|
1361 |
+
|
1362 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:1019
|
1363 |
+
msgid "« Previous"
|
1364 |
+
msgstr "« Précédent"
|
1365 |
+
|
1366 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:1020
|
1367 |
+
msgid "Next »"
|
1368 |
+
msgstr "Suivant »"
|
1369 |
+
|
1370 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:1021
|
1371 |
+
msgid "Today"
|
1372 |
+
msgstr "Aujourd'hui"
|
1373 |
+
|
1374 |
+
#: /var/www/wp-content/plugins/cimy-user-extra-fields/cimy_uef_functions.php:1024
|
1375 |
+
msgid "Select Month"
|
1376 |
+
msgstr "Sélectionner un mois"
|
1377 |
+
|
1378 |
+
#~ msgid "« Back to All Users"
|
1379 |
+
#~ msgstr "« Retour à tous les utilisateurs"
|
1380 |
+
|
1381 |
+
#~ msgid "A&U Extended"
|
1382 |
+
#~ msgstr "A&U Étendu"
|
1383 |
+
|
1384 |
+
#~ msgid "Users Matching \"%s\""
|
1385 |
+
#~ msgstr "Utilisateurs correspondant à \"%s\""
|
1386 |
+
|
1387 |
+
#~ msgid "Users Extended List"
|
1388 |
+
#~ msgstr "Liste étendue des auteurs & des utilisateurs"
|
1389 |
+
|
1390 |
+
#~ msgid "Authors & Users Extended List"
|
1391 |
+
#~ msgstr "Liste étendue des auteurs & des utilisateurs"
|
1392 |
+
|
1393 |
+
#~ msgid "Disable get_cimyFieldValue function"
|
1394 |
+
#~ msgstr "Désactiver la fonction get_cimyFieldValue"
|
1395 |
+
|
1396 |
+
#~ msgid "leave disabled if you don't know what to do"
|
1397 |
+
#~ msgstr "Laisser désactivé si vous ne savez pas quoi faire"
|
1398 |
+
|
1399 |
+
#~ msgid "Update Options »"
|
1400 |
+
#~ msgstr "Mettre à jour les options »"
|
1401 |
+
|
1402 |
+
#~ msgid "Hide actions button"
|
1403 |
+
#~ msgstr "Cacher le bouton actions"
|
1404 |
+
|
1405 |
+
#~ msgid "User ID"
|
1406 |
+
#~ msgstr "ID Utilisateur"
|
1407 |
+
|
1408 |
+
#~ msgid "label"
|
1409 |
+
#~ msgstr "label"
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@ Contributors: Marco Cimmino
|
|
3 |
Donate link: http://www.marcocimmino.net/cimy-wordpress-plugins/support-the-cimy-project-paypal/
|
4 |
Website link: http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/
|
5 |
Tags: cimy, admin, registration, profile, extra fields, avatar, gravatar, recaptcha, captcha
|
6 |
-
Requires at least: 3.1
|
7 |
-
Tested up to: 4.
|
8 |
-
Stable tag: 2.
|
9 |
|
10 |
Add some useful fields to registration and user's info
|
11 |
|
3 |
Donate link: http://www.marcocimmino.net/cimy-wordpress-plugins/support-the-cimy-project-paypal/
|
4 |
Website link: http://www.marcocimmino.net/cimy-wordpress-plugins/cimy-user-extra-fields/
|
5 |
Tags: cimy, admin, registration, profile, extra fields, avatar, gravatar, recaptcha, captcha
|
6 |
+
Requires at least: 4.3.1
|
7 |
+
Tested up to: 4.4
|
8 |
+
Stable tag: 2.7.0
|
9 |
|
10 |
Add some useful fields to registration and user's info
|
11 |
|
securimage/README.md
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
## Name:
|
2 |
+
|
3 |
+
**Securimage** - A PHP class for creating captcha images and audio with many options.
|
4 |
+
|
5 |
+
## Version:
|
6 |
+
|
7 |
+
**3.6.2**
|
8 |
+
|
9 |
+
## Author:
|
10 |
+
|
11 |
+
Drew Phillips <drew@drew-phillips.com>
|
12 |
+
|
13 |
+
## Download:
|
14 |
+
|
15 |
+
The latest version can always be found at [phpcaptcha.org](https://www.phpcaptcha.org)
|
16 |
+
|
17 |
+
## Documentation:
|
18 |
+
|
19 |
+
Online documentation of the class, methods, and variables can be found
|
20 |
+
at http://www.phpcaptcha.org/Securimage_Docs/
|
21 |
+
|
22 |
+
## Requirements:
|
23 |
+
|
24 |
+
* PHP 5.2 or greater
|
25 |
+
* GD 2.0
|
26 |
+
* FreeType (Required, for TTF fonts)
|
27 |
+
* PDO (if using Sqlite, MySQL, or PostgreSQL)
|
28 |
+
|
29 |
+
## Synopsis:
|
30 |
+
|
31 |
+
**Within your HTML form**
|
32 |
+
|
33 |
+
<form method="post" action="">
|
34 |
+
.. form elements
|
35 |
+
|
36 |
+
<div>
|
37 |
+
<?php
|
38 |
+
require_once 'securimage.php';
|
39 |
+
echo Securimage::getCaptchaHtml();
|
40 |
+
?>
|
41 |
+
</div>
|
42 |
+
</form>
|
43 |
+
|
44 |
+
|
45 |
+
**Within your PHP form processor**
|
46 |
+
|
47 |
+
require_once 'securimage.php';
|
48 |
+
|
49 |
+
// Code Validation
|
50 |
+
|
51 |
+
$image = new Securimage();
|
52 |
+
if ($image->check($_POST['captcha_code']) == true) {
|
53 |
+
echo "Correct!";
|
54 |
+
} else {
|
55 |
+
echo "Sorry, wrong code.";
|
56 |
+
}
|
57 |
+
|
58 |
+
## Description:
|
59 |
+
|
60 |
+
What is **Securimage**?
|
61 |
+
|
62 |
+
Securimage is a PHP class that is used to generate and validate CAPTCHA images.
|
63 |
+
|
64 |
+
The classes uses an existing PHP session or creates its own if none is found to
|
65 |
+
store the CAPTCHA code. In addition, a database can be used instead of
|
66 |
+
session storage.
|
67 |
+
|
68 |
+
Variables within the class are used to control the style and display of the
|
69 |
+
image. The class uses TTF fonts and effects for strengthening the security of
|
70 |
+
the image.
|
71 |
+
|
72 |
+
It also creates audible codes which are played for visually impared users.
|
73 |
+
|
74 |
+
## UPGRADE NOTICE:
|
75 |
+
|
76 |
+
**3.6.2 and above:**
|
77 |
+
|
78 |
+
If you are upgrading to 3.6.2 or greater *AND* are using database storage,
|
79 |
+
the table structure has changed in 3.6.2 adding an audio_data column for
|
80 |
+
storing audio files in the database in order to support HTTP range
|
81 |
+
requests. Delete your tables and have Securimage recreate them or see
|
82 |
+
the function createDatabaseTables() in securimage.php for the new structure
|
83 |
+
depending on which database backend you are using and alter the tables as
|
84 |
+
needed. If using SQLite, just overwrite your existing securimage.sq3 file
|
85 |
+
with the one from this release.
|
86 |
+
|
87 |
+
*If you are not using database tables for storage, ignore this notice.*
|
88 |
+
|
89 |
+
## Copyright:
|
90 |
+
Script
|
91 |
+
Copyright (c) 2015 Drew Phillips
|
92 |
+
All rights reserved.
|
93 |
+
|
94 |
+
Redistribution and use in source and binary forms, with or without
|
95 |
+
modification, are permitted provided that the following conditions are met:
|
96 |
+
|
97 |
+
- Redistributions of source code must retain the above copyright notice,
|
98 |
+
this list of conditions and the following disclaimer.
|
99 |
+
- Redistributions in binary form must reproduce the above copyright notice,
|
100 |
+
this list of conditions and the following disclaimer in the documentation
|
101 |
+
and/or other materials provided with the distribution.
|
102 |
+
|
103 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
104 |
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
105 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
106 |
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
107 |
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
108 |
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
109 |
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
110 |
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
111 |
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
112 |
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
113 |
+
POSSIBILITY OF SUCH DAMAGE.
|
114 |
+
|
115 |
+
## Licenses:
|
116 |
+
|
117 |
+
**WavFile.php**
|
118 |
+
|
119 |
+
The WavFile.php class used in Securimage by Drew Phillips and Paul Voegler
|
120 |
+
is used under the BSD License. See WavFile.php for details.
|
121 |
+
Many thanks to Paul Voegler (http://www.voegler.eu/) for contributing to
|
122 |
+
Securimage.
|
123 |
+
Script
|
124 |
+
---------------------------------------------------------------------------
|
125 |
+
|
126 |
+
**Flash code for Securimage**
|
127 |
+
|
128 |
+
Flash code created by Age Bosma & Mario Romero (animario@hotmail.com)
|
129 |
+
Many thanks for releasing this to the project!
|
130 |
+
|
131 |
+
---------------------------------------------------------------------------
|
132 |
+
|
133 |
+
**HKCaptcha**
|
134 |
+
|
135 |
+
Portions of Securimage contain code from Han-Kwang Nienhuys' PHP captcha
|
136 |
+
|
137 |
+
Han-Kwang Nienhuys' PHP captcha
|
138 |
+
Copyright June 2007
|
139 |
+
|
140 |
+
This copyright message and attribution must be preserved upon
|
141 |
+
modification. Redistribution under other licenses is expressly allowed.
|
142 |
+
Other licenses include GPL 2 or higher, BSD, and non-free licenses.
|
143 |
+
The original, unrestricted version can be obtained from
|
144 |
+
http://www.lagom.nl/linux/hkcaptcha/
|
145 |
+
|
146 |
+
---------------------------------------------------------------------------
|
147 |
+
|
148 |
+
**AHGBold.ttf**
|
149 |
+
|
150 |
+
AHGBold.ttf (AlteHaasGroteskBold.ttf) font was created by Yann Le Coroller
|
151 |
+
and is distributed as freeware.
|
152 |
+
|
153 |
+
Alte Haas Grotesk is a typeface that look like an helvetica printed in an
|
154 |
+
old Muller-Brockmann Book.
|
155 |
+
|
156 |
+
These fonts are freeware and can be distributed as long as they are
|
157 |
+
together with this text file.
|
158 |
+
|
159 |
+
I would appreciate very much to see what you have done with it anyway.
|
160 |
+
|
161 |
+
yann le coroller
|
162 |
+
www.yannlecoroller.com
|
163 |
+
yann@lecoroller.com
|
164 |
+
|
165 |
+
---------------------------------------------------------------------------
|
166 |
+
|
167 |
+
**PopForge Flash Library**
|
168 |
+
|
169 |
+
Portions of securimage_play.swf use the PopForge flash library for playing audio
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Copyright(C) 2007 Andre Michelle and Joa Ebert
|
173 |
+
*
|
174 |
+
* PopForge is an ActionScript3 code sandbox developed by Andre Michelle
|
175 |
+
* and Joa Ebert
|
176 |
+
* http://sandbox.popforge.de
|
177 |
+
*
|
178 |
+
* PopforgeAS3Audio is free software; you can redistribute it and/or modify
|
179 |
+
* it under the terms of the GNU General Public License as published by
|
180 |
+
* the Free Software Foundation; either version 3 of the License, or
|
181 |
+
* (at your option) any later version.
|
182 |
+
*
|
183 |
+
* PopforgeAS3Audio is distributed in the hope that it will be useful,
|
184 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
185 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
186 |
+
* GNU General Public License for more details.
|
187 |
+
*
|
188 |
+
* You should have received a copy of the GNU General Public License
|
189 |
+
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
190 |
+
*/
|
191 |
+
|
192 |
+
--------------------------------------------------------------------------
|
193 |
+
|
194 |
+
**Graphics**
|
195 |
+
|
196 |
+
Some graphics used are from the Humility Icon Pack by WorLord
|
197 |
+
|
198 |
+
License: GNU/GPL (http://findicons.com/pack/1723/humility)
|
199 |
+
http://findicons.com/icon/192558/gnome_volume_control
|
200 |
+
http://findicons.com/icon/192562/gtk_refresh
|
201 |
+
|
202 |
+
--------------------------------------------------------------------------
|
203 |
+
|
204 |
+
|
205 |
+
**Background noise sound files are from SoundJay.com**
|
206 |
+
|
207 |
+
http://www.soundjay.com/tos.html
|
208 |
+
|
209 |
+
All sound effects on this website are created by us and protected under
|
210 |
+
the copyright laws, international treaty provisions and other applicable
|
211 |
+
laws. By downloading sounds, music or any material from this site implies
|
212 |
+
that you have read and accepted these terms and conditions:
|
213 |
+
|
214 |
+
Sound Effects
|
215 |
+
You are allowed to use the sounds free of charge and royalty free in your
|
216 |
+
projects (such as films, videos, games, presentations, animations, stage
|
217 |
+
plays, radio plays, audio books, apps) be it for commercial or
|
218 |
+
non-commercial purposes.
|
219 |
+
|
220 |
+
But you are NOT allowed to
|
221 |
+
- post the sounds (as sound effects or ringtones) on any website for
|
222 |
+
others to download, copy or use
|
223 |
+
- use them as a raw material to create sound effects or ringtones that
|
224 |
+
you will sell, distribute or offer for downloading
|
225 |
+
- sell, re-sell, license or re-license the sounds (as individual sound
|
226 |
+
effects or as a sound effects library) to anyone else
|
227 |
+
- claim the sounds as yours
|
228 |
+
- link directly to individual sound files
|
229 |
+
- distribute the sounds in apps or computer programs that are clearly
|
230 |
+
sound related in nature (such as sound machine, sound effect
|
231 |
+
generator, ringtone maker, funny sounds app, sound therapy app, etc.)
|
232 |
+
or in apps or computer programs that use the sounds as the program's
|
233 |
+
sound resource library for other people's use (such as animation
|
234 |
+
creator, digital book creator, song maker software, etc.). If you are
|
235 |
+
developing such computer programs, contact us for licensing options.
|
236 |
+
|
237 |
+
If you use the sound effects, please consider giving us a credit and
|
238 |
+
linking back to us but it's not required.
|
239 |
+
|
securimage/README.txt
CHANGED
@@ -4,7 +4,7 @@ NAME:
|
|
4 |
|
5 |
VERSION:
|
6 |
|
7 |
-
3.
|
8 |
|
9 |
AUTHOR:
|
10 |
|
@@ -70,9 +70,23 @@ DESCRIPTION:
|
|
70 |
|
71 |
It also creates audible codes which are played for visually impared users.
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
COPYRIGHT:
|
74 |
|
75 |
-
Copyright (c)
|
76 |
All rights reserved.
|
77 |
|
78 |
Redistribution and use in source and binary forms, with or without
|
4 |
|
5 |
VERSION:
|
6 |
|
7 |
+
3.6.2
|
8 |
|
9 |
AUTHOR:
|
10 |
|
70 |
|
71 |
It also creates audible codes which are played for visually impared users.
|
72 |
|
73 |
+
UPGRADE NOTICE:
|
74 |
+
|
75 |
+
3.6.2 and above:
|
76 |
+
If you are upgrading to 3.6.2 or greater AND are using database storage,
|
77 |
+
the table structure has changed in 3.6.2 adding an audio_data column for
|
78 |
+
storing audio files in the database in order to support HTTP range
|
79 |
+
requests. Delete your tables and have Securimage recreate them or see
|
80 |
+
the function createDatabaseTables() in securimage.php for the new structure
|
81 |
+
depending on which database backend you are using and alter the tables as
|
82 |
+
needed. If using SQLite, just overwrite your existing securimage.sq3 file
|
83 |
+
with the one from this release.
|
84 |
+
|
85 |
+
If you are not using database tables for storage, ignore this notice.
|
86 |
+
|
87 |
COPYRIGHT:
|
88 |
|
89 |
+
Copyright (c) 2015 Drew Phillips
|
90 |
All rights reserved.
|
91 |
|
92 |
Redistribution and use in source and binary forms, with or without
|
securimage/WavFile.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* Project: PHPWavUtils: Classes for creating, reading, and manipulating WAV files in PHP<br />
|
7 |
* File: WavFile.php<br />
|
8 |
*
|
9 |
-
* Copyright (c)
|
10 |
* All rights reserved.
|
11 |
*
|
12 |
* Redistribution and use in source and binary forms, with or without modification,
|
@@ -33,14 +33,16 @@
|
|
33 |
* Any modifications to the library should be indicated clearly in the source code
|
34 |
* to inform users that the changes are not a part of the original software.<br /><br />
|
35 |
*
|
36 |
-
* @copyright
|
37 |
* @author Drew Phillips <drew@drew-phillips.com>
|
38 |
* @author Paul Voegler <http://www.voegler.eu/>
|
39 |
-
* @version 1.1 (
|
40 |
* @package PHPWavUtils
|
41 |
* @license BSD License
|
42 |
*
|
43 |
* Changelog:
|
|
|
|
|
44 |
*
|
45 |
* 1.1 (02/8/2014)
|
46 |
* - Add method setIgnoreChunkSizes() to allow reading of wav data with bogus chunk sizes set.
|
@@ -167,7 +169,7 @@ class WavFile
|
|
167 |
/** @var int Size of the data chunk in the opened wav file */
|
168 |
protected $_dataSize_fp;
|
169 |
|
170 |
-
/** @var
|
171 |
protected $_dataSize_valid;
|
172 |
|
173 |
/** @var int Starting offset of data chunk */
|
@@ -176,7 +178,7 @@ class WavFile
|
|
176 |
/** @var int The audio format - WavFile::WAVE_FORMAT_* */
|
177 |
protected $_audioFormat;
|
178 |
|
179 |
-
/** @var int The audio subformat - WavFile::WAVE_SUBFORMAT_* */
|
180 |
protected $_audioSubFormat;
|
181 |
|
182 |
/** @var int Number of channels in the audio file */
|
@@ -209,7 +211,7 @@ class WavFile
|
|
209 |
/** @var string Binary string of samples */
|
210 |
protected $_samples;
|
211 |
|
212 |
-
/** @var resource The file pointer used for reading wavs from file or memory */
|
213 |
protected $_fp;
|
214 |
|
215 |
|
@@ -294,7 +296,7 @@ class WavFile
|
|
294 |
*
|
295 |
* @param string $sampleBinary (Required) The sample to decode.
|
296 |
* @param int $bitDepth (Optional) The bits per sample to decode. If omitted, derives it from the length of $sampleBinary.
|
297 |
-
* @return int|float The numeric sample value. Float for 32-bit samples. Returns null for unsupported bit depths.
|
298 |
*/
|
299 |
public static function unpackSample($sampleBinary, $bitDepth = null)
|
300 |
{
|
@@ -340,7 +342,7 @@ class WavFile
|
|
340 |
*
|
341 |
* @param int|float $sample (Required) The sample to encode. Has to be within valid range for $bitDepth. Float values only for 32 bits.
|
342 |
* @param int $bitDepth (Required) The bits per sample to encode with.
|
343 |
-
* @return string The encoded binary sample. Returns null for unsupported bit depths.
|
344 |
*/
|
345 |
public static function packSample($sample, $bitDepth)
|
346 |
{
|
@@ -467,6 +469,7 @@ class WavFile
|
|
467 |
return $this->_actualSize;
|
468 |
}
|
469 |
|
|
|
470 |
protected function setActualSize($actualSize = null) {
|
471 |
if (is_null($actualSize)) {
|
472 |
$this->_actualSize = 8 + $this->_chunkSize; // + "RIFF" header (ID + size)
|
@@ -481,6 +484,7 @@ class WavFile
|
|
481 |
return $this->_chunkSize;
|
482 |
}
|
483 |
|
|
|
484 |
protected function setChunkSize($chunkSize = null) {
|
485 |
if (is_null($chunkSize)) {
|
486 |
$this->_chunkSize = 4 + // "WAVE" chunk
|
@@ -501,6 +505,7 @@ class WavFile
|
|
501 |
return $this->_fmtChunkSize;
|
502 |
}
|
503 |
|
|
|
504 |
protected function setFmtChunkSize($fmtChunkSize = null) {
|
505 |
if (is_null($fmtChunkSize)) {
|
506 |
$this->_fmtChunkSize = 16 + $this->_fmtExtendedSize;
|
@@ -518,6 +523,7 @@ class WavFile
|
|
518 |
return $this->_fmtExtendedSize;
|
519 |
}
|
520 |
|
|
|
521 |
protected function setFmtExtendedSize($fmtExtendedSize = null) {
|
522 |
if (is_null($fmtExtendedSize)) {
|
523 |
if ($this->_audioFormat == self::WAVE_FORMAT_EXTENSIBLE) {
|
@@ -540,6 +546,7 @@ class WavFile
|
|
540 |
return $this->_factChunkSize;
|
541 |
}
|
542 |
|
|
|
543 |
protected function setFactChunkSize($factChunkSize = null) {
|
544 |
if (is_null($factChunkSize)) {
|
545 |
if ($this->_audioFormat != self::WAVE_FORMAT_PCM) {
|
@@ -561,6 +568,7 @@ class WavFile
|
|
561 |
return $this->_dataSize;
|
562 |
}
|
563 |
|
|
|
564 |
protected function setDataSize($dataSize = null) {
|
565 |
if (is_null($dataSize)) {
|
566 |
$this->_dataSize = strlen($this->_samples);
|
@@ -579,6 +587,7 @@ class WavFile
|
|
579 |
return $this->_dataOffset;
|
580 |
}
|
581 |
|
|
|
582 |
protected function setDataOffset($dataOffset = null) {
|
583 |
if (is_null($dataOffset)) {
|
584 |
$this->_dataOffset = 8 + // "RIFF" header (ID + size)
|
@@ -597,6 +606,7 @@ class WavFile
|
|
597 |
return $this->_audioFormat;
|
598 |
}
|
599 |
|
|
|
600 |
protected function setAudioFormat($audioFormat = null) {
|
601 |
if (is_null($audioFormat)) {
|
602 |
if (($this->_bitsPerSample <= 16 || $this->_bitsPerSample == 32)
|
@@ -626,6 +636,7 @@ class WavFile
|
|
626 |
return $this->_audioSubFormat;
|
627 |
}
|
628 |
|
|
|
629 |
protected function setAudioSubFormat($audioSubFormat = null) {
|
630 |
if (is_null($audioSubFormat)) {
|
631 |
if ($this->_bitsPerSample == 32) {
|
@@ -644,6 +655,7 @@ class WavFile
|
|
644 |
return $this->_numChannels;
|
645 |
}
|
646 |
|
|
|
647 |
public function setNumChannels($numChannels) {
|
648 |
if ($numChannels < 1 || $numChannels > self::MAX_CHANNEL) {
|
649 |
throw new WavFileException('Unsupported number of channels. Only up to ' . self::MAX_CHANNEL . ' channels are supported.');
|
@@ -746,6 +758,7 @@ class WavFile
|
|
746 |
return $this->_blockAlign;
|
747 |
}
|
748 |
|
|
|
749 |
protected function setBlockAlign($blockAlign = null) {
|
750 |
if (is_null($blockAlign)) {
|
751 |
$this->_blockAlign = $this->_numChannels * $this->_bitsPerSample / 8;
|
@@ -763,6 +776,7 @@ class WavFile
|
|
763 |
return $this->_numBlocks;
|
764 |
}
|
765 |
|
|
|
766 |
protected function setNumBlocks($numBlocks = null) {
|
767 |
if (is_null($numBlocks)) {
|
768 |
$this->_numBlocks = (int)($this->_dataSize / $this->_blockAlign); // do not count incomplete sample blocks
|
@@ -777,6 +791,7 @@ class WavFile
|
|
777 |
return $this->_byteRate;
|
778 |
}
|
779 |
|
|
|
780 |
protected function setByteRate($byteRate = null) {
|
781 |
if (is_null($byteRate)) {
|
782 |
$this->_byteRate = $this->_sampleRate * $this->_numChannels * $this->_bitsPerSample / 8;
|
@@ -1014,7 +1029,7 @@ class WavFile
|
|
1014 |
/**
|
1015 |
* Read wav file from a stream.
|
1016 |
*
|
1017 |
-
* @param $readData (Optional) If true, also read the data chunk.
|
1018 |
* @throws WavFormatException
|
1019 |
* @throws WavFileException
|
1020 |
*/
|
@@ -1251,7 +1266,6 @@ class WavFile
|
|
1251 |
throw new WavFormatException('Missing "data" subchunk.', 101);
|
1252 |
}
|
1253 |
|
1254 |
-
|
1255 |
// check "data" subchunk
|
1256 |
$dataOffset = ftell($this->_fp);
|
1257 |
if ($this->getIgnoreChunkSizes()) {
|
@@ -1291,8 +1305,8 @@ class WavFile
|
|
1291 |
/**
|
1292 |
* Read the wav data from the file into the buffer.
|
1293 |
*
|
1294 |
-
* @param $dataOffset (Optional) The byte offset to skip before starting to read. Must be a multiple of BlockAlign.
|
1295 |
-
* @param $dataSize (Optional) The size of the data to read in bytes. Must be a multiple of BlockAlign. Defaults to all data.
|
1296 |
* @throws WavFileException
|
1297 |
*/
|
1298 |
public function readWavData($dataOffset = 0, $dataSize = null)
|
@@ -1334,7 +1348,7 @@ class WavFile
|
|
1334 |
* Return a single sample block from the file.
|
1335 |
*
|
1336 |
* @param int $blockNum (Required) The sample block number. Zero based.
|
1337 |
-
* @return string The binary sample block (all channels). Returns null if the sample block number was out of range.
|
1338 |
*/
|
1339 |
public function getSampleBlock($blockNum)
|
1340 |
{
|
@@ -1403,7 +1417,7 @@ class WavFile
|
|
1403 |
*
|
1404 |
* @param int $blockNum (Required) The sample block number to fetch. Zero based.
|
1405 |
* @param int $channelNum (Required) The channel number within the sample block to fetch. First channel is 1.
|
1406 |
-
* @return float The float sample value. Returns null if the sample block number was out of range.
|
1407 |
* @throws WavFileException
|
1408 |
*/
|
1409 |
public function getSampleValue($blockNum, $channelNum)
|
@@ -1770,8 +1784,8 @@ class WavFile
|
|
1770 |
*/
|
1771 |
public function degrade($quality = 1.0)
|
1772 |
{
|
1773 |
-
return $this->filter(
|
1774 |
-
|
1775 |
));
|
1776 |
}
|
1777 |
|
6 |
* Project: PHPWavUtils: Classes for creating, reading, and manipulating WAV files in PHP<br />
|
7 |
* File: WavFile.php<br />
|
8 |
*
|
9 |
+
* Copyright (c) 2014, Drew Phillips
|
10 |
* All rights reserved.
|
11 |
*
|
12 |
* Redistribution and use in source and binary forms, with or without modification,
|
33 |
* Any modifications to the library should be indicated clearly in the source code
|
34 |
* to inform users that the changes are not a part of the original software.<br /><br />
|
35 |
*
|
36 |
+
* @copyright 2014 Drew Phillips
|
37 |
* @author Drew Phillips <drew@drew-phillips.com>
|
38 |
* @author Paul Voegler <http://www.voegler.eu/>
|
39 |
+
* @version 1.1.1 (Sep 2015)
|
40 |
* @package PHPWavUtils
|
41 |
* @license BSD License
|
42 |
*
|
43 |
* Changelog:
|
44 |
+
* 1.1.1 (09/08/2015)
|
45 |
+
* - Fix degrade() method to call filter correctly (Rasmus Lerdorf)
|
46 |
*
|
47 |
* 1.1 (02/8/2014)
|
48 |
* - Add method setIgnoreChunkSizes() to allow reading of wav data with bogus chunk sizes set.
|
169 |
/** @var int Size of the data chunk in the opened wav file */
|
170 |
protected $_dataSize_fp;
|
171 |
|
172 |
+
/** @var bool Does _dataSize really reflect strlen($_samples)? Case when a wav file is read with readData = false */
|
173 |
protected $_dataSize_valid;
|
174 |
|
175 |
/** @var int Starting offset of data chunk */
|
178 |
/** @var int The audio format - WavFile::WAVE_FORMAT_* */
|
179 |
protected $_audioFormat;
|
180 |
|
181 |
+
/** @var int|string|null The audio subformat - WavFile::WAVE_SUBFORMAT_* */
|
182 |
protected $_audioSubFormat;
|
183 |
|
184 |
/** @var int Number of channels in the audio file */
|
211 |
/** @var string Binary string of samples */
|
212 |
protected $_samples;
|
213 |
|
214 |
+
/** @var resource|null The file pointer used for reading wavs from file or memory */
|
215 |
protected $_fp;
|
216 |
|
217 |
|
296 |
*
|
297 |
* @param string $sampleBinary (Required) The sample to decode.
|
298 |
* @param int $bitDepth (Optional) The bits per sample to decode. If omitted, derives it from the length of $sampleBinary.
|
299 |
+
* @return int|float|null The numeric sample value. Float for 32-bit samples. Returns null for unsupported bit depths.
|
300 |
*/
|
301 |
public static function unpackSample($sampleBinary, $bitDepth = null)
|
302 |
{
|
342 |
*
|
343 |
* @param int|float $sample (Required) The sample to encode. Has to be within valid range for $bitDepth. Float values only for 32 bits.
|
344 |
* @param int $bitDepth (Required) The bits per sample to encode with.
|
345 |
+
* @return string|null The encoded binary sample. Returns null for unsupported bit depths.
|
346 |
*/
|
347 |
public static function packSample($sample, $bitDepth)
|
348 |
{
|
469 |
return $this->_actualSize;
|
470 |
}
|
471 |
|
472 |
+
/** @param int $actualSize */
|
473 |
protected function setActualSize($actualSize = null) {
|
474 |
if (is_null($actualSize)) {
|
475 |
$this->_actualSize = 8 + $this->_chunkSize; // + "RIFF" header (ID + size)
|
484 |
return $this->_chunkSize;
|
485 |
}
|
486 |
|
487 |
+
/** @param int $chunkSize */
|
488 |
protected function setChunkSize($chunkSize = null) {
|
489 |
if (is_null($chunkSize)) {
|
490 |
$this->_chunkSize = 4 + // "WAVE" chunk
|
505 |
return $this->_fmtChunkSize;
|
506 |
}
|
507 |
|
508 |
+
/** @param int $fmtChunkSize */
|
509 |
protected function setFmtChunkSize($fmtChunkSize = null) {
|
510 |
if (is_null($fmtChunkSize)) {
|
511 |
$this->_fmtChunkSize = 16 + $this->_fmtExtendedSize;
|
523 |
return $this->_fmtExtendedSize;
|
524 |
}
|
525 |
|
526 |
+
/** @param int $fmtExtendedSize */
|
527 |
protected function setFmtExtendedSize($fmtExtendedSize = null) {
|
528 |
if (is_null($fmtExtendedSize)) {
|
529 |
if ($this->_audioFormat == self::WAVE_FORMAT_EXTENSIBLE) {
|
546 |
return $this->_factChunkSize;
|
547 |
}
|
548 |
|
549 |
+
/** @param int $factChunkSize */
|
550 |
protected function setFactChunkSize($factChunkSize = null) {
|
551 |
if (is_null($factChunkSize)) {
|
552 |
if ($this->_audioFormat != self::WAVE_FORMAT_PCM) {
|
568 |
return $this->_dataSize;
|
569 |
}
|
570 |
|
571 |
+
/** @param int $dataSize */
|
572 |
protected function setDataSize($dataSize = null) {
|
573 |
if (is_null($dataSize)) {
|
574 |
$this->_dataSize = strlen($this->_samples);
|
587 |
return $this->_dataOffset;
|
588 |
}
|
589 |
|
590 |
+
/** @param int $dataOffset */
|
591 |
protected function setDataOffset($dataOffset = null) {
|
592 |
if (is_null($dataOffset)) {
|
593 |
$this->_dataOffset = 8 + // "RIFF" header (ID + size)
|
606 |
return $this->_audioFormat;
|
607 |
}
|
608 |
|
609 |
+
/** @param int $audioFormat */
|
610 |
protected function setAudioFormat($audioFormat = null) {
|
611 |
if (is_null($audioFormat)) {
|
612 |
if (($this->_bitsPerSample <= 16 || $this->_bitsPerSample == 32)
|
636 |
return $this->_audioSubFormat;
|
637 |
}
|
638 |
|
639 |
+
/** @param int $audioSubFormat */
|
640 |
protected function setAudioSubFormat($audioSubFormat = null) {
|
641 |
if (is_null($audioSubFormat)) {
|
642 |
if ($this->_bitsPerSample == 32) {
|
655 |
return $this->_numChannels;
|
656 |
}
|
657 |
|
658 |
+
/** @param int $numChannels */
|
659 |
public function setNumChannels($numChannels) {
|
660 |
if ($numChannels < 1 || $numChannels > self::MAX_CHANNEL) {
|
661 |
throw new WavFileException('Unsupported number of channels. Only up to ' . self::MAX_CHANNEL . ' channels are supported.');
|
758 |
return $this->_blockAlign;
|
759 |
}
|
760 |
|
761 |
+
/** @param int $blockAlign */
|
762 |
protected function setBlockAlign($blockAlign = null) {
|
763 |
if (is_null($blockAlign)) {
|
764 |
$this->_blockAlign = $this->_numChannels * $this->_bitsPerSample / 8;
|
776 |
return $this->_numBlocks;
|
777 |
}
|
778 |
|
779 |
+
/** @param int $numBlocks */
|
780 |
protected function setNumBlocks($numBlocks = null) {
|
781 |
if (is_null($numBlocks)) {
|
782 |
$this->_numBlocks = (int)($this->_dataSize / $this->_blockAlign); // do not count incomplete sample blocks
|
791 |
return $this->_byteRate;
|
792 |
}
|
793 |
|
794 |
+
/** @param int $byteRate */
|
795 |
protected function setByteRate($byteRate = null) {
|
796 |
if (is_null($byteRate)) {
|
797 |
$this->_byteRate = $this->_sampleRate * $this->_numChannels * $this->_bitsPerSample / 8;
|
1029 |
/**
|
1030 |
* Read wav file from a stream.
|
1031 |
*
|
1032 |
+
* @param bool $readData (Optional) If true, also read the data chunk.
|
1033 |
* @throws WavFormatException
|
1034 |
* @throws WavFileException
|
1035 |
*/
|
1266 |
throw new WavFormatException('Missing "data" subchunk.', 101);
|
1267 |
}
|
1268 |
|
|
|
1269 |
// check "data" subchunk
|
1270 |
$dataOffset = ftell($this->_fp);
|
1271 |
if ($this->getIgnoreChunkSizes()) {
|
1305 |
/**
|
1306 |
* Read the wav data from the file into the buffer.
|
1307 |
*
|
1308 |
+
* @param int $dataOffset (Optional) The byte offset to skip before starting to read. Must be a multiple of BlockAlign.
|
1309 |
+
* @param int $dataSize (Optional) The size of the data to read in bytes. Must be a multiple of BlockAlign. Defaults to all data.
|
1310 |
* @throws WavFileException
|
1311 |
*/
|
1312 |
public function readWavData($dataOffset = 0, $dataSize = null)
|
1348 |
* Return a single sample block from the file.
|
1349 |
*
|
1350 |
* @param int $blockNum (Required) The sample block number. Zero based.
|
1351 |
+
* @return string|null The binary sample block (all channels). Returns null if the sample block number was out of range.
|
1352 |
*/
|
1353 |
public function getSampleBlock($blockNum)
|
1354 |
{
|
1417 |
*
|
1418 |
* @param int $blockNum (Required) The sample block number to fetch. Zero based.
|
1419 |
* @param int $channelNum (Required) The channel number within the sample block to fetch. First channel is 1.
|
1420 |
+
* @return float|null The float sample value. Returns null if the sample block number was out of range.
|
1421 |
* @throws WavFileException
|
1422 |
*/
|
1423 |
public function getSampleValue($blockNum, $channelNum)
|
1784 |
*/
|
1785 |
public function degrade($quality = 1.0)
|
1786 |
{
|
1787 |
+
return $this->filter(array(
|
1788 |
+
self::FILTER_DEGRADE => $quality
|
1789 |
));
|
1790 |
}
|
1791 |
|
securimage/captcha.html
CHANGED
@@ -1,14 +1,136 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
<
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!--
|
4 |
+
The following is a complete HTML snippet that can be used on your form for
|
5 |
+
displaying the captcha image.
|
6 |
+
|
7 |
+
This HTML snippet generates a CAPTCHA image, HTML5 audio controls, a button
|
8 |
+
to refresh the image and audio, as well as an input field for accepting the
|
9 |
+
captcha code input.
|
10 |
+
|
11 |
+
Modify to fit your needs and the website appearance. The audio section can
|
12 |
+
also be removed if desired.
|
13 |
+
|
14 |
+
The same code is given twice, first as a whole and then repeated with
|
15 |
+
inline comments describing the individual elements.
|
16 |
+
|
17 |
+
Most of this code can be generated automatically with many customization
|
18 |
+
options by using the function Securimage::getCaptchaHtml() instead.
|
19 |
+
-->
|
20 |
+
|
21 |
+
<head>
|
22 |
+
<meta charset="utf-8">
|
23 |
+
<title>Sample CAPTCHA HTML</title>
|
24 |
+
<link rel="stylesheet" href="securimage.css" media="screen">
|
25 |
+
</head>
|
26 |
+
<body>
|
27 |
+
|
28 |
+
<h4>Note: Running this on a PHP enabled server will likely work, but you should use example_form.php for testing instead.</h4>
|
29 |
+
|
30 |
+
<div>
|
31 |
+
<img style="float: left; padding-right: 5px" id="captcha_image" src="securimage_show.php?<?php echo md5(uniqid(time)) ?>" alt="CAPTCHA Image">
|
32 |
+
<div id="captcha_image_audio_div">
|
33 |
+
<audio id="captcha_image_audio" preload="none" style="display: none">
|
34 |
+
<!-- <source id="captcha_image_source_mp3" src="securimage_play.php?id=1234&format=mp3" type="audio/mpeg"> -->
|
35 |
+
<source id="captcha_image_source_wav" src="securimage_play.php?id=1234" type="audio/wav">
|
36 |
+
<object type="application/x-shockwave-flash" data="securimage_play.swf?bgcol=%23ffffff&icon_file=images%2Faudio_icon.png&audio_file=securimage_play.php" height="32" width="32">
|
37 |
+
<param name="movie" value="securimage_play.swf?bgcol=%23ffffff&icon_file=images%2Faudio_icon.png&audio_file=securimage_play.php" />
|
38 |
+
</object>
|
39 |
+
</audio>
|
40 |
+
</div>
|
41 |
+
<div id="captcha_image_audio_controls">
|
42 |
+
<a tabindex="-1" class="captcha_play_button" href="securimage_play.php?id=1234 ?>" onclick="return false">
|
43 |
+
<img class="captcha_play_image" height="32" width="32" src="images/audio_icon.png" alt="Play CAPTCHA Audio" style="border: 0px">
|
44 |
+
<img class="captcha_loading_image rotating" height="32" width="32" src="images/loading.png" alt="Loading audio" style="display: none">
|
45 |
+
</a>
|
46 |
+
<noscript>Enable Javascript for audio controls</noscript>
|
47 |
+
</div>
|
48 |
+
|
49 |
+
<a tabindex="-1" style="border: 0" href="#" title="Refresh Image" onclick="document.getElementById('captcha_image').src = 'securimage_show.php?' + Math.random(); captcha_image_audioObj.refresh(); this.blur(); return false">
|
50 |
+
<img height="32" width="32" src="images/refresh.png" alt="Refresh Image" onclick="this.blur()" style="border: 0px; vertical-align: bottom" />
|
51 |
+
</a>
|
52 |
+
<br>
|
53 |
+
|
54 |
+
<script type="text/javascript" src="securimage.js"></script>
|
55 |
+
<script type="text/javascript">
|
56 |
+
captcha_image_audioObj = new SecurimageAudio({ audioElement: 'captcha_image_audio', controlsElement: 'captcha_image_audio_controls' });
|
57 |
+
</script>
|
58 |
+
<div style="clear: both"></div>
|
59 |
+
|
60 |
+
<label for="captcha_code">Type the text:</label>
|
61 |
+
<input type="text" name="captcha_code" id="captcha_code">
|
62 |
+
</div>
|
63 |
+
|
64 |
+
|
65 |
+
<!-- and once again with comments for clarity -->
|
66 |
+
<!-- all IDs have been changed so this *should* work on a PHP enabled server -->
|
67 |
+
<!-- example_form.php should really be used for testing though -->
|
68 |
+
<br><br>
|
69 |
+
|
70 |
+
|
71 |
+
<div>
|
72 |
+
<!-- captcha image element; the <?php echo md5(...) ?> code throughout is to prevent caching issues -->
|
73 |
+
<img style="float: left; padding-right: 5px" id="captcha_image2" src="securimage_show.php?<?php echo md5(uniqid(time)) ?>" alt="CAPTCHA Image">
|
74 |
|
75 |
+
<!-- invisible div containing captcha audio tag, and optional flash fallback code -->
|
76 |
+
<div id="captcha_image_audio_div2">
|
77 |
+
<!-- the audio tag -->
|
78 |
+
<audio id="captcha_image2_audio" preload="none" style="display: none">
|
79 |
+
<!-- mp3 source tag - uncomment if you have LAME installed -->
|
80 |
+
<!-- <source id="captcha_image2_source_mp3" src="securimage_play.php?id=<?php echo uniqid() ?>&format=mp3" type="audio/mpeg"> -->
|
81 |
+
|
82 |
+
<!-- wav source tag -->
|
83 |
+
<source id="captcha_image2_source_wav" src="securimage_play.php?id=<?php echo uniqid() ?>" type="audio/wav">
|
84 |
+
|
85 |
+
<!-- flash player fallback - delete if you don't want flash fallback -->
|
86 |
+
<object type="application/x-shockwave-flash" data="securimage_play.swf?bgcol=%23ffffff&icon_file=images%2Faudio_icon.png&audio_file=securimage_play.php" height="32" width="32">
|
87 |
+
<param name="movie" value="securimage_play.swf?bgcol=%23ffffff&icon_file=images%2Faudio_icon.png&audio_file=securimage_play.php" />
|
88 |
+
</object>
|
89 |
+
</audio>
|
90 |
+
</div>
|
91 |
+
<!-- div containing the HTML audio controls -->
|
92 |
+
<div id="captcha_image2_audio_controls">
|
93 |
+
<!-- play button and loading image that gets toggled when audio is loading -->
|
94 |
+
<a tabindex="-1" class="captcha_play_button" href="securimage_play.php?id=<?php echo uniqid() ?>" onclick="return false">
|
95 |
+
<img class="captcha_play_image" height="32" width="32" src="images/audio_icon.png" alt="Play CAPTCHA Audio" style="border: 0px">
|
96 |
+
<img class="captcha_loading_image rotating" height="32" width="32" src="images/loading.png" alt="Loading audio" style="display: none">
|
97 |
+
</a>
|
98 |
+
<noscript>Enable Javascript for audio controls</noscript>
|
99 |
+
</div>
|
100 |
+
|
101 |
+
<!-- link to refresh the captcha image and audios -->
|
102 |
+
<a tabindex="-1" style="border: 0" href="#" title="Refresh Image" onclick="document.getElementById('captcha_image2').src = 'securimage_show.php?' + Math.random(); captcha_image2_audioObj.refresh(); this.blur(); return false">
|
103 |
+
<img height="32" width="32" src="images/refresh.png" alt="Refresh Image" onclick="this.blur()" style="border: 0px; vertical-align: bottom" />
|
104 |
+
</a>
|
105 |
+
<br>
|
106 |
+
|
107 |
+
<!-- javascript code for refreshing and playing captcha audio -->
|
108 |
+
<script type="text/javascript" src="securimage.js"></script>
|
109 |
+
<script type="text/javascript">
|
110 |
+
captcha_image2_audioObj = new SecurimageAudio({ audioElement: 'captcha_image2_audio', controlsElement: 'captcha_image2_audio_controls' });
|
111 |
+
/*
|
112 |
+
The SecurimageAudio object accepts a single object paramter with two properties:
|
113 |
+
audioElement: the ID of the div containing the <audio> and <source> HTML tags
|
114 |
+
controlsElement: the ID of the div containing the audio playback controls
|
115 |
+
|
116 |
+
Note: securimage.js automatically finds the play and loading images by looking for images with
|
117 |
+
class names of captcha_play_image and captcha_loading_image, respectively.
|
118 |
+
|
119 |
+
The image inside of the controls div including the class name "captcha_play_image" will have
|
120 |
+
click events registered to start/stop audio playback
|
121 |
+
|
122 |
+
The image inside of the controls div including the class name "captcha_loading_image will be
|
123 |
+
displayed with the audio is loading and hidden again once playback starts.
|
124 |
+
|
125 |
+
Clicking the play button starts and stops audio playback.
|
126 |
+
*/
|
127 |
+
</script>
|
128 |
+
<div style="clear: both"></div>
|
129 |
+
|
130 |
+
<!-- captcha input -->
|
131 |
+
<label for="captcha_code2">Type the text:</label>
|
132 |
+
<input type="text" name="captcha_code2" id="captcha_code2">
|
133 |
+
</div>
|
134 |
+
|
135 |
+
</body>
|
136 |
+
</html>
|
securimage/database/securimage.sq3
CHANGED
Binary file
|
securimage/example_form.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
session_start(); // this MUST be called prior to any output including whitespaces and line breaks!
|
3 |
|
4 |
$GLOBALS['DEBUG_MODE'] = 1;
|
@@ -9,11 +13,13 @@ $GLOBALS['ct_recipient'] = 'YOU@EXAMPLE.COM'; // Change to your email address!
|
|
9 |
$GLOBALS['ct_msg_subject'] = 'Securimage Test Contact Form';
|
10 |
|
11 |
?>
|
12 |
-
<!DOCTYPE html
|
13 |
-
<html
|
14 |
<head>
|
15 |
-
<meta
|
|
|
16 |
<title>Securimage Example Form</title>
|
|
|
17 |
<style type="text/css">
|
18 |
<!--
|
19 |
div.error { display: block; color: #f00; font-weight: bold; font-size: 1.2em; }
|
@@ -41,44 +47,45 @@ $GLOBALS['ct_msg_subject'] = 'Securimage Test Contact Form';
|
|
41 |
process_si_contact_form(); // Process the form, if it was submitted
|
42 |
|
43 |
if (isset($_SESSION['ctform']['error']) && $_SESSION['ctform']['error'] == true): /* The last form submission had 1 or more errors */ ?>
|
44 |
-
<div class="error">There was a problem with your submission. Errors are displayed below in red.</div><br
|
45 |
<?php elseif (isset($_SESSION['ctform']['success']) && $_SESSION['ctform']['success'] == true): /* form was processed successfully */ ?>
|
46 |
<div class="success">The captcha was correct and the message has been sent! The captcha was solved in <?php echo $_SESSION['ctform']['timetosolve'] ?> seconds.</div><br />
|
47 |
<?php endif; ?>
|
48 |
|
49 |
<form method="post" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']) ?>" id="contact_form">
|
50 |
-
<input type="hidden" name="do" value="contact"
|
51 |
|
52 |
<p>
|
53 |
<label for="ct_name">Name*:</label>
|
54 |
<?php echo @$_SESSION['ctform']['name_error'] ?>
|
55 |
-
<input type="text" name="ct_name" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_name']) ?>"
|
56 |
</p>
|
57 |
|
58 |
<p>
|
59 |
<label for="ct_email">Email*:</label>
|
60 |
<?php echo @$_SESSION['ctform']['email_error'] ?>
|
61 |
-
<input type="text" name="ct_email" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_email']) ?>"
|
62 |
</p>
|
63 |
|
64 |
<p>
|
65 |
<label for="ct_URL">URL:</label>
|
66 |
<?php echo @$_SESSION['ctform']['URL_error'] ?>
|
67 |
-
<input type="text" name="ct_URL" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_URL']) ?>"
|
68 |
</p>
|
69 |
|
70 |
<p>
|
71 |
<label for="ct_message">Message*:</label>
|
72 |
<?php echo @$_SESSION['ctform']['message_error'] ?>
|
73 |
-
<textarea name="ct_message" rows="12" cols="60"><?php echo htmlspecialchars(@$_SESSION['ctform']['ct_message']) ?></textarea>
|
74 |
</p>
|
75 |
|
76 |
-
<
|
77 |
<?php
|
78 |
// show captcha HTML using Securimage::getCaptchaHtml()
|
79 |
require_once 'securimage.php';
|
80 |
$options = array();
|
81 |
-
$options['input_name']
|
|
|
82 |
|
83 |
if (!empty($_SESSION['ctform']['captcha_error'])) {
|
84 |
// error html to show in captcha output
|
@@ -87,11 +94,11 @@ if (isset($_SESSION['ctform']['error']) && $_SESSION['ctform']['error'] == true
|
|
87 |
|
88 |
echo Securimage::getCaptchaHtml($options);
|
89 |
?>
|
90 |
-
</
|
91 |
|
92 |
<p>
|
93 |
-
<br
|
94 |
-
<input type="submit" value="Submit Message"
|
95 |
</p>
|
96 |
|
97 |
</form>
|
@@ -138,7 +145,7 @@ function process_si_contact_form()
|
|
138 |
if (strlen($email) == 0) {
|
139 |
// no email address given
|
140 |
$errors['email_error'] = 'Email address is required';
|
141 |
-
} else if ( !preg_match('/^(?:[\w\d-]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,
|
142 |
// invalid email format
|
143 |
$errors['email_error'] = 'Email address entered is invalid';
|
144 |
}
|
1 |
<?php
|
2 |
+
|
3 |
+
error_reporting(E_ALL);
|
4 |
+
ini_set('display_errors', 1);
|
5 |
+
|
6 |
session_start(); // this MUST be called prior to any output including whitespaces and line breaks!
|
7 |
|
8 |
$GLOBALS['DEBUG_MODE'] = 1;
|
13 |
$GLOBALS['ct_msg_subject'] = 'Securimage Test Contact Form';
|
14 |
|
15 |
?>
|
16 |
+
<!DOCTYPE html>
|
17 |
+
<html>
|
18 |
<head>
|
19 |
+
<meta charset="utf-8">
|
20 |
+
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
|
21 |
<title>Securimage Example Form</title>
|
22 |
+
<link rel="stylesheet" href="securimage.css" media="screen">
|
23 |
<style type="text/css">
|
24 |
<!--
|
25 |
div.error { display: block; color: #f00; font-weight: bold; font-size: 1.2em; }
|
47 |
process_si_contact_form(); // Process the form, if it was submitted
|
48 |
|
49 |
if (isset($_SESSION['ctform']['error']) && $_SESSION['ctform']['error'] == true): /* The last form submission had 1 or more errors */ ?>
|
50 |
+
<div class="error">There was a problem with your submission. Errors are displayed below in red.</div><br>
|
51 |
<?php elseif (isset($_SESSION['ctform']['success']) && $_SESSION['ctform']['success'] == true): /* form was processed successfully */ ?>
|
52 |
<div class="success">The captcha was correct and the message has been sent! The captcha was solved in <?php echo $_SESSION['ctform']['timetosolve'] ?> seconds.</div><br />
|
53 |
<?php endif; ?>
|
54 |
|
55 |
<form method="post" action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING']) ?>" id="contact_form">
|
56 |
+
<input type="hidden" name="do" value="contact">
|
57 |
|
58 |
<p>
|
59 |
<label for="ct_name">Name*:</label>
|
60 |
<?php echo @$_SESSION['ctform']['name_error'] ?>
|
61 |
+
<input type="text" id="ct_name" name="ct_name" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_name']) ?>">
|
62 |
</p>
|
63 |
|
64 |
<p>
|
65 |
<label for="ct_email">Email*:</label>
|
66 |
<?php echo @$_SESSION['ctform']['email_error'] ?>
|
67 |
+
<input type="text" id="ct_email" name="ct_email" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_email']) ?>">
|
68 |
</p>
|
69 |
|
70 |
<p>
|
71 |
<label for="ct_URL">URL:</label>
|
72 |
<?php echo @$_SESSION['ctform']['URL_error'] ?>
|
73 |
+
<input type="text" id="ct_URL" name="ct_URL" size="35" value="<?php echo htmlspecialchars(@$_SESSION['ctform']['ct_URL']) ?>">
|
74 |
</p>
|
75 |
|
76 |
<p>
|
77 |
<label for="ct_message">Message*:</label>
|
78 |
<?php echo @$_SESSION['ctform']['message_error'] ?>
|
79 |
+
<textarea id="ct_message" name="ct_message" rows="12" cols="60"><?php echo htmlspecialchars(@$_SESSION['ctform']['ct_message']) ?></textarea>
|
80 |
</p>
|
81 |
|
82 |
+
<div>
|
83 |
<?php
|
84 |
// show captcha HTML using Securimage::getCaptchaHtml()
|
85 |
require_once 'securimage.php';
|
86 |
$options = array();
|
87 |
+
$options['input_name'] = 'ct_captcha'; // change name of input element for form post
|
88 |
+
$options['disable_flash_fallback'] = false; // allow flash fallback
|
89 |
|
90 |
if (!empty($_SESSION['ctform']['captcha_error'])) {
|
91 |
// error html to show in captcha output
|
94 |
|
95 |
echo Securimage::getCaptchaHtml($options);
|
96 |
?>
|
97 |
+
</div>
|
98 |
|
99 |
<p>
|
100 |
+
<br>
|
101 |
+
<input type="submit" value="Submit Message">
|
102 |
</p>
|
103 |
|
104 |
</form>
|
145 |
if (strlen($email) == 0) {
|
146 |
// no email address given
|
147 |
$errors['email_error'] = 'Email address is required';
|
148 |
+
} else if ( !preg_match('/^(?:[\w\d-]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,63}$/i', $email)) {
|
149 |
// invalid email format
|
150 |
$errors['email_error'] = 'Email address entered is invalid';
|
151 |
}
|
securimage/images/ajax-loader.gif
DELETED
Binary file
|
securimage/images/loading.png
ADDED
Binary file
|
securimage/securimage.css
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@CHARSET "UTF-8";
|
2 |
+
|
3 |
+
@-webkit-keyframes rotating /* Safari and Chrome */ {
|
4 |
+
from {
|
5 |
+
-ms-transform: rotate(0deg);
|
6 |
+
-moz-transform: rotate(0deg);
|
7 |
+
-webkit-transform: rotate(0deg);
|
8 |
+
-o-transform: rotate(0deg);
|
9 |
+
transform: rotate(0deg);
|
10 |
+
}
|
11 |
+
to {
|
12 |
+
-ms-transform: rotate(360deg);
|
13 |
+
-moz-transform: rotate(360deg);
|
14 |
+
-webkit-transform: rotate(360deg);
|
15 |
+
-o-transform: rotate(360deg);
|
16 |
+
transform: rotate(360deg);
|
17 |
+
}
|
18 |
+
}
|
19 |
+
@keyframes rotating {
|
20 |
+
from {
|
21 |
+
-ms-transform: rotate(0deg);
|
22 |
+
-moz-transform: rotate(0deg);
|
23 |
+
-webkit-transform: rotate(0deg);
|
24 |
+
-o-transform: rotate(0deg);
|
25 |
+
transform: rotate(0deg);
|
26 |
+
}
|
27 |
+
to {
|
28 |
+
-ms-transform: rotate(360deg);
|
29 |
+
-moz-transform: rotate(360deg);
|
30 |
+
-webkit-transform: rotate(360deg);
|
31 |
+
-o-transform: rotate(360deg);
|
32 |
+
transform: rotate(360deg);
|
33 |
+
}
|
34 |
+
}
|
35 |
+
.rotating {
|
36 |
+
-webkit-animation: rotating 1.5s linear infinite;
|
37 |
+
-moz-animation: rotating 1.5s linear infinite;
|
38 |
+
-ms-animation: rotating 1.5s linear infinite;
|
39 |
+
-o-animation: rotating 1.5s linear infinite;
|
40 |
+
animation: rotating 1.5s linear infinite;
|
41 |
+
}
|
securimage/securimage.js
ADDED
@@ -0,0 +1,251 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Securimage CAPTCHA Audio Library
|
3 |
+
* https://www.phpcaptcha.org/
|
4 |
+
*
|
5 |
+
* Copyright 2015 phpcaptcha.org
|
6 |
+
* Released under the BSD-3 license
|
7 |
+
* See https://github.com/dapphp/securimage/blob/master/README.md
|
8 |
+
*/
|
9 |
+
|
10 |
+
var SecurimageAudio = function(options) {
|
11 |
+
this.html5Support = true;
|
12 |
+
this.flashFallback = false;
|
13 |
+
this.captchaId = null;
|
14 |
+
this.playing = false;
|
15 |
+
this.reload = false;
|
16 |
+
this.audioElement = null;
|
17 |
+
this.controlsElement = null;
|
18 |
+
this.playButton = null;
|
19 |
+
this.playButtonImage = null;
|
20 |
+
this.loadingImage = null;
|
21 |
+
|
22 |
+
if (options.audioElement) {
|
23 |
+
this.audioElement = document.getElementById(options.audioElement);
|
24 |
+
}
|
25 |
+
if (options.controlsElement) {
|
26 |
+
this.controlsElement = document.getElementById(options.controlsElement);
|
27 |
+
}
|
28 |
+
|
29 |
+
this.init();
|
30 |
+
}
|
31 |
+
|
32 |
+
SecurimageAudio.prototype.init = function() {
|
33 |
+
var ua = navigator.userAgent.toLowerCase();
|
34 |
+
var ieVer = (ua.indexOf('msie') != -1) ? parseInt(ua.split('msie')[1]) : false;
|
35 |
+
// ie 11+ detection
|
36 |
+
if (!ieVer && null != (ieVer = ua.match(/trident\/.*rv:(\d+\.\d+)/)))
|
37 |
+
ieVer = parseInt(ieVer[1]);
|
38 |
+
|
39 |
+
var objAu = this.audioElement.getElementsByTagName('object');
|
40 |
+
if (objAu.length > 0) {
|
41 |
+
objAu = objAu[0];
|
42 |
+
} else {
|
43 |
+
objAu = null;
|
44 |
+
}
|
45 |
+
|
46 |
+
if (ieVer) {
|
47 |
+
if (ieVer < 9) {
|
48 |
+
// no html5 audio support, hide player controls
|
49 |
+
this.controlsElement.style.display = 'none';
|
50 |
+
this.html5Support = false;
|
51 |
+
return ;
|
52 |
+
} else if ('' == this.audioElement.canPlayType('audio/wav')) {
|
53 |
+
// check for mpeg <source> tag - if not found then fallback to flash
|
54 |
+
var sources = this.audioElement.getElementsByTagName('source');
|
55 |
+
var mp3support = false;
|
56 |
+
var type;
|
57 |
+
|
58 |
+
if (objAu) {
|
59 |
+
this.flashFallback = true;
|
60 |
+
}
|
61 |
+
|
62 |
+
for (var i = 0; i < sources.length; ++i) {
|
63 |
+
type = sources[i].attributes["type"].value;
|
64 |
+
if (type.toLowerCase().indexOf('mpeg') >= 0 || type.toLowerCase().indexOf('mp3') >= 0) {
|
65 |
+
mp3support = true;
|
66 |
+
break;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
if (false == mp3support) {
|
71 |
+
// browser supports <audio> but does not support WAV audio and no flash audio available
|
72 |
+
this.html5Support = false;
|
73 |
+
|
74 |
+
if (this.flashFallback) {
|
75 |
+
// ie9+? bug - flash object does not display when moved from within audio tag to other dom node
|
76 |
+
var newObjAu = document.createElement('object');
|
77 |
+
var newParams = document.createElement('param');
|
78 |
+
var oldParams = objAu.getElementsByTagName('param');
|
79 |
+
this.copyElementAttributes(newObjAu, objAu);
|
80 |
+
if (oldParams.length > 0) {
|
81 |
+
this.copyElementAttributes(newParams, oldParams[0]);
|
82 |
+
newObjAu.appendChild(newParams);
|
83 |
+
}
|
84 |
+
objAu.parentNode.removeChild(objAu);
|
85 |
+
this.audioElement.parentNode.appendChild(newObjAu);
|
86 |
+
}
|
87 |
+
|
88 |
+
this.audioElement.parentNode.removeChild(this.audioElement);
|
89 |
+
this.controlsElement.parentNode.removeChild(this.controlsElement);
|
90 |
+
|
91 |
+
return ;
|
92 |
+
}
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
this.audioElement.addEventListener('playing', this.updateControls.bind(this), false);
|
97 |
+
this.audioElement.addEventListener('ended', this.audioStopped.bind(this), false);
|
98 |
+
|
99 |
+
// find the element used as the play button and register click event to play/stop audio
|
100 |
+
var children = this.controlsElement.getElementsByTagName('*');
|
101 |
+
for (var i = 0; i < children.length; ++i) {
|
102 |
+
var el = children[i];
|
103 |
+
if (undefined != el.className) {
|
104 |
+
if (el.className.indexOf('play_button') >= 0) {
|
105 |
+
this.playButton = el;
|
106 |
+
el.addEventListener('click', this.play.bind(this), false);
|
107 |
+
} else if (el.className.indexOf('play_image') >= 0) {
|
108 |
+
this.playButtonImage = el;
|
109 |
+
} else if (el.className.indexOf('loading_image') >= 0) {
|
110 |
+
this.loadingImage = el;
|
111 |
+
}
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
if (objAu) {
|
116 |
+
// remove flash object from DOM
|
117 |
+
objAu.parentNode.removeChild(objAu);
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
SecurimageAudio.prototype.play = function(evt) {
|
122 |
+
if (null != this.playButton) {
|
123 |
+
this.playButton.blur();
|
124 |
+
}
|
125 |
+
|
126 |
+
if (this.reload) {
|
127 |
+
this.replaceElements();
|
128 |
+
this.reload = false;
|
129 |
+
}
|
130 |
+
|
131 |
+
try {
|
132 |
+
if (!this.playing) {
|
133 |
+
if (this.playButtonImage != null) {
|
134 |
+
this.playButtonImage.style.display = 'none';
|
135 |
+
}
|
136 |
+
if (this.loadingImage != null) {
|
137 |
+
this.loadingImage.style.display = '';
|
138 |
+
}
|
139 |
+
//TODO: FIX, most likely browser doesn't support audio type
|
140 |
+
this.audioElement.onerror = this.audioError;
|
141 |
+
try {
|
142 |
+
this.audioElement.play();
|
143 |
+
} catch(ex) {
|
144 |
+
alert('Audio error: ' + ex);
|
145 |
+
}
|
146 |
+
} else {
|
147 |
+
this.audioElement.pause();
|
148 |
+
if (this.loadingImage != null) {
|
149 |
+
this.loadingImage.style.display = 'none';
|
150 |
+
}
|
151 |
+
if (this.playButtonImage != null) {
|
152 |
+
this.playButtonImage.style.display = '';
|
153 |
+
}
|
154 |
+
this.playing = false;
|
155 |
+
}
|
156 |
+
} catch (ex) {
|
157 |
+
alert('Audio error: ' + ex);
|
158 |
+
}
|
159 |
+
|
160 |
+
if (undefined !== evt) {
|
161 |
+
evt.preventDefault();
|
162 |
+
}
|
163 |
+
return false;
|
164 |
+
}
|
165 |
+
|
166 |
+
SecurimageAudio.prototype.refresh = function(captchaId) {
|
167 |
+
if (!this.html5Support) {
|
168 |
+
return;
|
169 |
+
}
|
170 |
+
|
171 |
+
if (undefined !== captchaId) {
|
172 |
+
this.captchaId = captchaId;
|
173 |
+
}
|
174 |
+
|
175 |
+
this.playing = true;
|
176 |
+
this.reload = false;
|
177 |
+
this.play(); // stops audio if playing
|
178 |
+
this.reload = true;
|
179 |
+
|
180 |
+
return false;
|
181 |
+
}
|
182 |
+
|
183 |
+
SecurimageAudio.prototype.copyElementAttributes = function(newEl, el) {
|
184 |
+
for (var i = 0, atts = el.attributes, n = atts.length; i < n; ++i) {
|
185 |
+
newEl.setAttribute(atts[i].nodeName, atts[i].value);
|
186 |
+
}
|
187 |
+
|
188 |
+
return newEl;
|
189 |
+
}
|
190 |
+
|
191 |
+
SecurimageAudio.prototype.replaceElements = function() {
|
192 |
+
var parent = this.audioElement.parentNode;
|
193 |
+
parent.removeChild(this.audioElement);
|
194 |
+
|
195 |
+
var newAudioEl = document.createElement('audio');
|
196 |
+
newAudioEl.setAttribute('style', 'display: none;');
|
197 |
+
newAudioEl.setAttribute('preload', 'false');
|
198 |
+
|
199 |
+
for (var c = 0; c < this.audioElement.children.length; ++c) {
|
200 |
+
if (this.audioElement.children[c].tagName.toLowerCase() != 'source') continue;
|
201 |
+
var sourceEl = document.createElement('source');
|
202 |
+
this.copyElementAttributes(sourceEl, this.audioElement.children[c]);
|
203 |
+
var cid = (null !== this.captchaId) ? this.captchaId : (Math.random() + '').replace('0.', '');
|
204 |
+
sourceEl.src = sourceEl.src.replace(/id=[a-zA-Z0-9]+/, 'id=' + cid);
|
205 |
+
newAudioEl.appendChild(sourceEl);
|
206 |
+
}
|
207 |
+
|
208 |
+
this.audioElement = null;
|
209 |
+
this.audioElement = newAudioEl;
|
210 |
+
parent.appendChild(this.audioElement);
|
211 |
+
|
212 |
+
this.audioElement.addEventListener('playing', this.updateControls.bind(this), false);
|
213 |
+
this.audioElement.addEventListener('ended', this.audioStopped.bind(this), false);
|
214 |
+
}
|
215 |
+
|
216 |
+
SecurimageAudio.prototype.updateControls = function() {
|
217 |
+
this.playing = true;
|
218 |
+
if (this.loadingImage != null) {
|
219 |
+
this.loadingImage.style.display = 'none';
|
220 |
+
}
|
221 |
+
if (this.playButtonImage != null) {
|
222 |
+
this.playButtonImage.style.display = '';
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
SecurimageAudio.prototype.audioStopped = function() {
|
227 |
+
this.playing = false;
|
228 |
+
}
|
229 |
+
|
230 |
+
SecurimageAudio.prototype.audioError = function(err) {
|
231 |
+
var msg = null;
|
232 |
+
switch(err.target.error.code) {
|
233 |
+
case err.target.error.MEDIA_ERR_ABORTED:
|
234 |
+
break;
|
235 |
+
case err.target.error.MEDIA_ERR_NETWORK:
|
236 |
+
msg = 'A network error caused the audio download to fail.';
|
237 |
+
break;
|
238 |
+
case err.target.error.MEDIA_ERR_DECODE:
|
239 |
+
alert('An error occurred while decoding the audio');
|
240 |
+
break;
|
241 |
+
case err.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
|
242 |
+
alert('The audio format is not supported by your browser.');
|
243 |
+
break;
|
244 |
+
default:
|
245 |
+
alert('An unknown error occurred trying to play the audio.');
|
246 |
+
break;
|
247 |
+
}
|
248 |
+
if (msg) {
|
249 |
+
alert('Audio playback error: ' + msg);
|
250 |
+
}
|
251 |
+
}
|
securimage/securimage.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* Project: Securimage: A PHP class dealing with CAPTCHA images, audio, and validation
|
7 |
* File: securimage.php
|
8 |
*
|
9 |
-
* Copyright (c)
|
10 |
* All rights reserved.
|
11 |
*
|
12 |
* Redistribution and use in source and binary forms, with or without modification,
|
@@ -39,20 +39,29 @@
|
|
39 |
* @link http://www.phpcaptcha.org Securimage PHP CAPTCHA
|
40 |
* @link http://www.phpcaptcha.org/latest.zip Download Latest Version
|
41 |
* @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation
|
42 |
-
* @copyright
|
43 |
* @author Drew Phillips <drew@drew-phillips.com>
|
44 |
-
* @version 3.
|
45 |
* @package Securimage
|
46 |
*
|
47 |
*/
|
48 |
|
49 |
/**
|
50 |
|
51 |
-
TODO:
|
52 |
-
- Implement HTML5 playback of audio using Javascript, DOM, and HTML5 <audio> with Flash fallback
|
53 |
-
|
54 |
ChangeLog
|
55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
3.5.4
|
57 |
- Fix email validation code in example form files
|
58 |
- Fix backslashes in getCaptchaHtml for img attribute on Windows systems
|
@@ -300,25 +309,25 @@ class Securimage
|
|
300 |
|
301 |
/**
|
302 |
* The background color of the captcha
|
303 |
-
* @var Securimage_Color
|
304 |
*/
|
305 |
public $image_bg_color = '#ffffff';
|
306 |
|
307 |
/**
|
308 |
* The color of the captcha text
|
309 |
-
* @var Securimage_Color
|
310 |
*/
|
311 |
public $text_color = '#707070';
|
312 |
|
313 |
/**
|
314 |
* The color of the lines over the captcha
|
315 |
-
* @var Securimage_Color
|
316 |
*/
|
317 |
public $line_color = '#707070';
|
318 |
|
319 |
/**
|
320 |
* The color of the noise that is drawn
|
321 |
-
* @var Securimage_Color
|
322 |
*/
|
323 |
public $noise_color = '#707070';
|
324 |
|
@@ -415,7 +424,7 @@ class Securimage
|
|
415 |
|
416 |
/**
|
417 |
* The color of the signature text
|
418 |
-
* @var Securimage_Color
|
419 |
*/
|
420 |
public $signature_color = '#707070';
|
421 |
|
@@ -632,6 +641,15 @@ class Securimage
|
|
632 |
*/
|
633 |
public $sox_binary_path = '/usr/bin/sox';
|
634 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
635 |
/**
|
636 |
* The path to the directory containing audio files that will be selected
|
637 |
* randomly and mixed with the captcha audio.
|
@@ -735,7 +753,7 @@ class Securimage
|
|
735 |
|
736 |
/**
|
737 |
* The background image GD resource
|
738 |
-
* @var
|
739 |
*/
|
740 |
protected $bgimg;
|
741 |
|
@@ -761,7 +779,7 @@ class Securimage
|
|
761 |
* Either the case-sensitive/insensitive word captcha, or the solution to
|
762 |
* the math captcha.
|
763 |
*
|
764 |
-
* @var string Captcha challenge value
|
765 |
*/
|
766 |
protected $code;
|
767 |
|
@@ -836,35 +854,35 @@ class Securimage
|
|
836 |
/**
|
837 |
* PDO connection when a database is used
|
838 |
*
|
839 |
-
* @var
|
840 |
*/
|
841 |
protected $pdo_conn;
|
842 |
|
843 |
/**
|
844 |
-
* The GD color
|
845 |
*
|
846 |
-
* @var
|
847 |
*/
|
848 |
protected $gdbgcolor;
|
849 |
|
850 |
/**
|
851 |
-
* The GD color
|
852 |
*
|
853 |
-
* @var
|
854 |
*/
|
855 |
protected $gdtextcolor;
|
856 |
|
857 |
/**
|
858 |
-
* The GD color
|
859 |
*
|
860 |
-
* @var
|
861 |
*/
|
862 |
protected $gdlinecolor;
|
863 |
|
864 |
/**
|
865 |
-
* The GD color
|
866 |
*
|
867 |
-
* @var
|
868 |
*/
|
869 |
protected $gdsignaturecolor;
|
870 |
|
@@ -890,6 +908,24 @@ class Securimage
|
|
890 |
{
|
891 |
$this->securimage_path = dirname(__FILE__);
|
892 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
893 |
if (is_array($options) && sizeof($options) > 0) {
|
894 |
foreach($options as $prop => $val) {
|
895 |
if ($prop == 'captchaId') {
|
@@ -1107,14 +1143,25 @@ class Securimage
|
|
1107 |
*
|
1108 |
* 'securimage_path':
|
1109 |
* Optional: The URI to where securimage is installed (e.g. /securimage)
|
|
|
|
|
|
|
|
|
|
|
1110 |
* 'image_id':
|
1111 |
* A string that sets the "id" attribute of the captcha image (default: captcha_image)
|
1112 |
* 'image_alt_text':
|
1113 |
* The alt text of the captcha image (default: CAPTCHA Image)
|
1114 |
* 'show_audio_button':
|
1115 |
* true/false Whether or not to show the audio button (default: true)
|
|
|
|
|
1116 |
* 'show_refresh_button':
|
1117 |
* true/false Whether or not to show a button to refresh the image (default: true)
|
|
|
|
|
|
|
|
|
1118 |
* 'show_text_input':
|
1119 |
* true/false Whether or not to show the text input for the captcha (default: true)
|
1120 |
* 'refresh_alt_text':
|
@@ -1142,6 +1189,8 @@ class Securimage
|
|
1142 |
*/
|
1143 |
public static function getCaptchaHtml($options = array())
|
1144 |
{
|
|
|
|
|
1145 |
if (!isset($options['securimage_path'])) {
|
1146 |
$docroot = (isset($_SERVER['DOCUMENT_ROOT'])) ? $_SERVER['DOCUMENT_ROOT'] : substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));
|
1147 |
$docroot = realpath($docroot);
|
@@ -1151,12 +1200,17 @@ class Securimage
|
|
1151 |
$securimage_path = $options['securimage_path'];
|
1152 |
}
|
1153 |
|
|
|
1154 |
$image_id = (isset($options['image_id'])) ? $options['image_id'] : 'captcha_image';
|
1155 |
$image_alt = (isset($options['image_alt_text'])) ? $options['image_alt_text'] : 'CAPTCHA Image';
|
1156 |
$show_audio_btn = (isset($options['show_audio_button'])) ? (bool)$options['show_audio_button'] : true;
|
|
|
1157 |
$show_refresh_btn = (isset($options['show_refresh_button'])) ? (bool)$options['show_refresh_button'] : true;
|
|
|
1158 |
$audio_but_bg_col = (isset($options['audio_button_bgcol'])) ? $options['audio_button_bgcol'] : '#ffffff';
|
1159 |
$audio_icon_url = (isset($options['audio_icon_url'])) ? $options['audio_icon_url'] : null;
|
|
|
|
|
1160 |
$audio_play_url = (isset($options['audio_play_url'])) ? $options['audio_play_url'] : null;
|
1161 |
$audio_swf_url = (isset($options['audio_swf_url'])) ? $options['audio_swf_url'] : null;
|
1162 |
$show_input = (isset($options['show_text_input'])) ? (bool)$options['show_text_input'] : true;
|
@@ -1176,12 +1230,19 @@ class Securimage
|
|
1176 |
|
1177 |
$image_attr = '';
|
1178 |
if (!is_array($image_attrs)) $image_attrs = array();
|
1179 |
-
if (!isset($image_attrs['
|
1180 |
$image_attrs['id'] = $image_id;
|
1181 |
|
1182 |
$show_path = $securimage_path . '/securimage_show.php?';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1183 |
if (!empty($namespace)) {
|
1184 |
-
$show_path .= sprintf('namespace=%s&', $namespace);
|
1185 |
}
|
1186 |
$image_attrs['src'] = $show_path . $rand;
|
1187 |
|
@@ -1191,55 +1252,117 @@ class Securimage
|
|
1191 |
$image_attr .= sprintf('%s="%s" ', $name, htmlspecialchars($val));
|
1192 |
}
|
1193 |
|
|
|
|
|
1194 |
$html = sprintf('<img %s/>', $image_attr);
|
1195 |
|
1196 |
if ($show_audio_btn) {
|
1197 |
$swf_path = $securimage_path . '/securimage_play.swf';
|
1198 |
-
$play_path = $securimage_path . '/securimage_play.php';
|
1199 |
$icon_path = $securimage_path . '/images/audio_icon.png';
|
|
|
|
|
|
|
1200 |
|
1201 |
if (!empty($audio_icon_url)) {
|
1202 |
$icon_path = $audio_icon_url;
|
1203 |
}
|
1204 |
|
|
|
|
|
|
|
|
|
1205 |
if (!empty($audio_play_url)) {
|
1206 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1207 |
}
|
1208 |
|
1209 |
if (!empty($audio_swf_url)) {
|
1210 |
$swf_path = $audio_swf_url;
|
1211 |
}
|
1212 |
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
urlencode($icon_path),
|
1217 |
-
urlencode($play_path)
|
1218 |
-
);
|
1219 |
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1226 |
|
1227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1228 |
}
|
1229 |
|
1230 |
if ($show_refresh_btn) {
|
1231 |
$icon_path = $securimage_path . '/images/refresh.png';
|
1232 |
-
|
1233 |
-
|
|
|
|
|
|
|
1234 |
|
1235 |
-
$html .= sprintf('<a tabindex="-1" style="border: 0" href="#" title="%s" onclick="
|
1236 |
htmlspecialchars($refresh_title),
|
|
|
1237 |
$image_id,
|
1238 |
$show_path,
|
1239 |
$img_tag
|
1240 |
);
|
1241 |
}
|
1242 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1243 |
$html .= '<div style="clear: both"></div>';
|
1244 |
|
1245 |
$html .= sprintf('<label for="%s">%s</label> ',
|
@@ -1302,15 +1425,34 @@ class Securimage
|
|
1302 |
* $img->outputAudioFile(); // outputs a wav file to the browser
|
1303 |
* exit;
|
1304 |
*
|
|
|
1305 |
*/
|
1306 |
-
public function outputAudioFile()
|
1307 |
{
|
1308 |
set_error_handler(array(&$this, 'errorHandler'));
|
1309 |
|
1310 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1311 |
|
1312 |
try {
|
1313 |
-
$audio = $this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1314 |
} catch (Exception $ex) {
|
1315 |
if (($fp = @fopen(dirname(__FILE__) . '/si.error_log', 'a+')) !== false) {
|
1316 |
fwrite($fp, date('Y-m-d H:i:s') . ': Securimage audio error "' . $ex->getMessage() . '"' . "\n");
|
@@ -1320,23 +1462,31 @@ class Securimage
|
|
1320 |
$audio = $this->audioError();
|
1321 |
}
|
1322 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1323 |
if ($this->canSendHeaders() || $this->send_headers == false) {
|
1324 |
if ($this->send_headers) {
|
1325 |
-
$
|
1326 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1327 |
header('Cache-Control: no-store, no-cache, must-revalidate');
|
1328 |
header('Expires: Sun, 1 Jan 2000 12:00:00 GMT');
|
1329 |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT');
|
1330 |
-
header('Content-type:
|
1331 |
-
|
1332 |
-
if (extension_loaded('zlib')) {
|
1333 |
-
ini_set('zlib.output_compression', true); // compress output if supported by browser
|
1334 |
-
} else {
|
1335 |
-
header('Content-Length: ' . strlen($audio));
|
1336 |
-
}
|
1337 |
}
|
1338 |
|
1339 |
-
|
1340 |
} else {
|
1341 |
echo '<hr /><strong>'
|
1342 |
.'Failed to generate audio file, content has already been '
|
@@ -1349,6 +1499,68 @@ class Securimage
|
|
1349 |
if (!$this->no_exit) exit;
|
1350 |
}
|
1351 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1352 |
/**
|
1353 |
* Return the code from the session or database (if configured). If none exists or was found, an empty string is returned.
|
1354 |
*
|
@@ -1576,6 +1788,7 @@ class Securimage
|
|
1576 |
|
1577 |
/**
|
1578 |
* Scan the directory for a background image to use
|
|
|
1579 |
*/
|
1580 |
protected function getBackgroundFromDirectory()
|
1581 |
{
|
@@ -1621,7 +1834,7 @@ class Securimage
|
|
1621 |
}
|
1622 |
} while ($c <= 0); // no negative #'s or 0
|
1623 |
|
1624 |
-
$this->code = $c;
|
1625 |
$this->code_display = "$left $sign $right";
|
1626 |
break;
|
1627 |
}
|
@@ -1674,7 +1887,7 @@ class Securimage
|
|
1674 |
$x = floor($width2 / 2 - $tx / 2 - $bb[0]);
|
1675 |
$y = round($height2 / 2 - $ty / 2 - $bb[1]);
|
1676 |
|
1677 |
-
imagettftext($this->tmpimg, $font_size, 0, $x, $y, $this->gdtextcolor, $this->ttf_file, $this->code_display);
|
1678 |
} else {
|
1679 |
$font_size = $this->image_height * $ratio;
|
1680 |
$bb = imageftbbox($font_size, 0, $this->ttf_file, $this->code_display);
|
@@ -1683,7 +1896,7 @@ class Securimage
|
|
1683 |
$x = floor($this->image_width / 2 - $tx / 2 - $bb[0]);
|
1684 |
$y = round($this->image_height / 2 - $ty / 2 - $bb[1]);
|
1685 |
|
1686 |
-
imagettftext($this->im, $font_size, 0, $x, $y, $this->gdtextcolor, $this->ttf_file, $this->code_display);
|
1687 |
}
|
1688 |
}
|
1689 |
|
@@ -1935,7 +2148,7 @@ class Securimage
|
|
1935 |
* Seek to a random offset in the file and reads a block of data and returns a line from the file.
|
1936 |
*
|
1937 |
* @param int $numWords Number of words (lines) to read from the file
|
1938 |
-
* @return string|array Returns a string if only one word is to be read, or an array of words
|
1939 |
*/
|
1940 |
protected function readCodeFromFile($numWords = 1)
|
1941 |
{
|
@@ -2055,6 +2268,7 @@ class Securimage
|
|
2055 |
$_SESSION['securimage_code_disp'] [$this->namespace] = '';
|
2056 |
$_SESSION['securimage_code_value'][$this->namespace] = '';
|
2057 |
$_SESSION['securimage_code_ctime'][$this->namespace] = '';
|
|
|
2058 |
}
|
2059 |
$this->clearCodeFromDatabase();
|
2060 |
}
|
@@ -2076,6 +2290,7 @@ class Securimage
|
|
2076 |
$_SESSION['securimage_code_disp'] [$this->namespace] = $this->code_display;
|
2077 |
$_SESSION['securimage_code_value'][$this->namespace] = $this->code;
|
2078 |
$_SESSION['securimage_code_ctime'][$this->namespace] = time();
|
|
|
2079 |
}
|
2080 |
|
2081 |
if ($this->use_database) {
|
@@ -2083,6 +2298,47 @@ class Securimage
|
|
2083 |
}
|
2084 |
}
|
2085 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2086 |
/**
|
2087 |
* Saves the CAPTCHA data to the configured database.
|
2088 |
*/
|
@@ -2104,6 +2360,8 @@ class Securimage
|
|
2104 |
$code_disp = $this->code_display;
|
2105 |
|
2106 |
// This is somewhat expensive in PDO Sqlite3 (when there is something to delete)
|
|
|
|
|
2107 |
$this->clearCodeFromDatabase();
|
2108 |
|
2109 |
$query = "INSERT INTO {$this->database_table} ("
|
@@ -2130,6 +2388,35 @@ class Securimage
|
|
2130 |
return $success !== false;
|
2131 |
}
|
2132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2133 |
/**
|
2134 |
* Opens a connection to the configured database.
|
2135 |
*
|
@@ -2187,7 +2474,7 @@ class Securimage
|
|
2187 |
}
|
2188 |
} catch (Exception $ex) {
|
2189 |
trigger_error($ex->getMessage(), E_USER_WARNING);
|
2190 |
-
$this->pdo_conn =
|
2191 |
return false;
|
2192 |
}
|
2193 |
|
@@ -2300,6 +2587,7 @@ class Securimage
|
|
2300 |
code VARCHAR(32) NOT NULL,
|
2301 |
code_display VARCHAR(32) NOT NULL,
|
2302 |
created INTEGER NOT NULL,
|
|
|
2303 |
PRIMARY KEY(id, namespace)
|
2304 |
)";
|
2305 |
|
@@ -2313,6 +2601,7 @@ class Securimage
|
|
2313 |
`code` VARCHAR(32) NOT NULL,
|
2314 |
`code_display` VARCHAR(32) NOT NULL,
|
2315 |
`created` INT NOT NULL,
|
|
|
2316 |
PRIMARY KEY(id, namespace),
|
2317 |
INDEX(created)
|
2318 |
)";
|
@@ -2325,6 +2614,7 @@ class Securimage
|
|
2325 |
code character varying(32) NOT NULL,
|
2326 |
code_display character varying(32) NOT NULL,
|
2327 |
created integer NOT NULL,
|
|
|
2328 |
CONSTRAINT pkey_id_namespace PRIMARY KEY (id, namespace)
|
2329 |
)";
|
2330 |
|
@@ -2383,10 +2673,19 @@ class Securimage
|
|
2383 |
} else {
|
2384 |
if ( ($row = $stmt->fetch()) !== false ) {
|
2385 |
if (false == $this->isCodeExpired($row['created'])) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2386 |
$code = array(
|
2387 |
'code' => $row['code'],
|
2388 |
'code_disp' => $row['code_display'],
|
2389 |
'time' => $row['created'],
|
|
|
2390 |
);
|
2391 |
}
|
2392 |
}
|
@@ -2433,8 +2732,8 @@ class Securimage
|
|
2433 |
|
2434 |
$query = sprintf("DELETE FROM %s WHERE %s - created > %s",
|
2435 |
$this->database_table,
|
2436 |
-
$
|
2437 |
-
$this->pdo_conn->quote($limit, PDO::PARAM_INT));
|
2438 |
|
2439 |
$result = $this->pdo_conn->query($query);
|
2440 |
}
|
@@ -2757,6 +3056,90 @@ class Securimage
|
|
2757 |
return $data;
|
2758 |
}
|
2759 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2760 |
/**
|
2761 |
* Return a wav file saying there was an error generating file
|
2762 |
*
|
@@ -2799,7 +3182,7 @@ class Securimage
|
|
2799 |
/**
|
2800 |
* Convert an html color code to a Securimage_Color
|
2801 |
* @param string $color
|
2802 |
-
* @param Securimage_Color $default The defalt color to use if $color is invalid
|
2803 |
*/
|
2804 |
protected function initColor($color, $default)
|
2805 |
{
|
6 |
* Project: Securimage: A PHP class dealing with CAPTCHA images, audio, and validation
|
7 |
* File: securimage.php
|
8 |
*
|
9 |
+
* Copyright (c) 2015, Drew Phillips
|
10 |
* All rights reserved.
|
11 |
*
|
12 |
* Redistribution and use in source and binary forms, with or without modification,
|
39 |
* @link http://www.phpcaptcha.org Securimage PHP CAPTCHA
|
40 |
* @link http://www.phpcaptcha.org/latest.zip Download Latest Version
|
41 |
* @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation
|
42 |
+
* @copyright 2015 Drew Phillips
|
43 |
* @author Drew Phillips <drew@drew-phillips.com>
|
44 |
+
* @version 3.6.2 (Oct 13, 2015)
|
45 |
* @package Securimage
|
46 |
*
|
47 |
*/
|
48 |
|
49 |
/**
|
50 |
|
|
|
|
|
|
|
51 |
ChangeLog
|
52 |
|
53 |
+
3.6.2
|
54 |
+
- Support HTTP range requests with audio playback (iOS requirement)
|
55 |
+
- Add optional config.inc.php for storing global configuration settings
|
56 |
+
|
57 |
+
3.6.1
|
58 |
+
- Fix copyElement bug in securimage.js for IE Flash fallback
|
59 |
+
|
60 |
+
3.6
|
61 |
+
- Implement CAPTCHA audio using HTML5 <audio> with optional Flash fallback
|
62 |
+
- Support MP3 audio using LAME MP3 Encoder (Internet Explorer 9+ does not support WAV format in <audio> tags)
|
63 |
+
- Add getCaptchaHtml() options to support full framework integration (ruifil)
|
64 |
+
|
65 |
3.5.4
|
66 |
- Fix email validation code in example form files
|
67 |
- Fix backslashes in getCaptchaHtml for img attribute on Windows systems
|
309 |
|
310 |
/**
|
311 |
* The background color of the captcha
|
312 |
+
* @var Securimage_Color|string
|
313 |
*/
|
314 |
public $image_bg_color = '#ffffff';
|
315 |
|
316 |
/**
|
317 |
* The color of the captcha text
|
318 |
+
* @var Securimage_Color|string
|
319 |
*/
|
320 |
public $text_color = '#707070';
|
321 |
|
322 |
/**
|
323 |
* The color of the lines over the captcha
|
324 |
+
* @var Securimage_Color|string
|
325 |
*/
|
326 |
public $line_color = '#707070';
|
327 |
|
328 |
/**
|
329 |
* The color of the noise that is drawn
|
330 |
+
* @var Securimage_Color|string
|
331 |
*/
|
332 |
public $noise_color = '#707070';
|
333 |
|
424 |
|
425 |
/**
|
426 |
* The color of the signature text
|
427 |
+
* @var Securimage_Color|string
|
428 |
*/
|
429 |
public $signature_color = '#707070';
|
430 |
|
641 |
*/
|
642 |
public $sox_binary_path = '/usr/bin/sox';
|
643 |
|
644 |
+
/**
|
645 |
+
* The path to the lame (mp3 encoder) binary on your system
|
646 |
+
* Static so that Securimage::getCaptchaHtml() has access to this value.
|
647 |
+
*
|
648 |
+
* @since 3.6
|
649 |
+
* @var string
|
650 |
+
*/
|
651 |
+
public static $lame_binary_path = '/usr/bin/lame';
|
652 |
+
|
653 |
/**
|
654 |
* The path to the directory containing audio files that will be selected
|
655 |
* randomly and mixed with the captcha audio.
|
753 |
|
754 |
/**
|
755 |
* The background image GD resource
|
756 |
+
* @var string
|
757 |
*/
|
758 |
protected $bgimg;
|
759 |
|
779 |
* Either the case-sensitive/insensitive word captcha, or the solution to
|
780 |
* the math captcha.
|
781 |
*
|
782 |
+
* @var string|bool Captcha challenge value
|
783 |
*/
|
784 |
protected $code;
|
785 |
|
854 |
/**
|
855 |
* PDO connection when a database is used
|
856 |
*
|
857 |
+
* @var PDO|bool
|
858 |
*/
|
859 |
protected $pdo_conn;
|
860 |
|
861 |
/**
|
862 |
+
* The GD color for the background color
|
863 |
*
|
864 |
+
* @var int
|
865 |
*/
|
866 |
protected $gdbgcolor;
|
867 |
|
868 |
/**
|
869 |
+
* The GD color for the text color
|
870 |
*
|
871 |
+
* @var int
|
872 |
*/
|
873 |
protected $gdtextcolor;
|
874 |
|
875 |
/**
|
876 |
+
* The GD color for the line color
|
877 |
*
|
878 |
+
* @var int
|
879 |
*/
|
880 |
protected $gdlinecolor;
|
881 |
|
882 |
/**
|
883 |
+
* The GD color for the signature text color
|
884 |
*
|
885 |
+
* @var int
|
886 |
*/
|
887 |
protected $gdsignaturecolor;
|
888 |
|
908 |
{
|
909 |
$this->securimage_path = dirname(__FILE__);
|
910 |
|
911 |
+
if (!is_array($options)) {
|
912 |
+
trigger_error(
|
913 |
+
'$options passed to Securimage::__construct() must be an array. ' .
|
914 |
+
gettype($options) . ' given',
|
915 |
+
E_USER_WARNING
|
916 |
+
);
|
917 |
+
$options = array();
|
918 |
+
}
|
919 |
+
|
920 |
+
// check for and load settings from custom config file
|
921 |
+
if (file_exists(dirname(__FILE__) . '/config.inc.php')) {
|
922 |
+
$settings = include dirname(__FILE__) . '/config.inc.php';
|
923 |
+
|
924 |
+
if (is_array($settings)) {
|
925 |
+
$options = array_merge($settings, $options);
|
926 |
+
}
|
927 |
+
}
|
928 |
+
|
929 |
if (is_array($options) && sizeof($options) > 0) {
|
930 |
foreach($options as $prop => $val) {
|
931 |
if ($prop == 'captchaId') {
|
1143 |
*
|
1144 |
* 'securimage_path':
|
1145 |
* Optional: The URI to where securimage is installed (e.g. /securimage)
|
1146 |
+
* 'show_image_url':
|
1147 |
+
* Path to the securimage_show.php script (useful when integrating with a framework or moving outside the securimage directory)
|
1148 |
+
* This will be passed as a urlencoded string to the <img> tag for outputting the captcha image
|
1149 |
+
* 'audio_play_url':
|
1150 |
+
* Same as show_image_url, except this indicates the URL of the audio playback script
|
1151 |
* 'image_id':
|
1152 |
* A string that sets the "id" attribute of the captcha image (default: captcha_image)
|
1153 |
* 'image_alt_text':
|
1154 |
* The alt text of the captcha image (default: CAPTCHA Image)
|
1155 |
* 'show_audio_button':
|
1156 |
* true/false Whether or not to show the audio button (default: true)
|
1157 |
+
* 'disable_flash_fallback':)
|
1158 |
+
* Allow only HTML5 audio and disable Flash fallback
|
1159 |
* 'show_refresh_button':
|
1160 |
* true/false Whether or not to show a button to refresh the image (default: true)
|
1161 |
+
* 'audio_icon_url':
|
1162 |
+
* URL to the image used for showing the HTML5 audio icon
|
1163 |
+
* 'icon_size':
|
1164 |
+
* Size (for both height & width) in pixels of the audio and refresh buttons
|
1165 |
* 'show_text_input':
|
1166 |
* true/false Whether or not to show the text input for the captcha (default: true)
|
1167 |
* 'refresh_alt_text':
|
1189 |
*/
|
1190 |
public static function getCaptchaHtml($options = array())
|
1191 |
{
|
1192 |
+
static $javascript_init = false;
|
1193 |
+
|
1194 |
if (!isset($options['securimage_path'])) {
|
1195 |
$docroot = (isset($_SERVER['DOCUMENT_ROOT'])) ? $_SERVER['DOCUMENT_ROOT'] : substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));
|
1196 |
$docroot = realpath($docroot);
|
1200 |
$securimage_path = $options['securimage_path'];
|
1201 |
}
|
1202 |
|
1203 |
+
$show_image_url = (isset($options['show_image_url'])) ? $options['show_image_url'] : null;
|
1204 |
$image_id = (isset($options['image_id'])) ? $options['image_id'] : 'captcha_image';
|
1205 |
$image_alt = (isset($options['image_alt_text'])) ? $options['image_alt_text'] : 'CAPTCHA Image';
|
1206 |
$show_audio_btn = (isset($options['show_audio_button'])) ? (bool)$options['show_audio_button'] : true;
|
1207 |
+
$disable_flash_fbk = (isset($options['disable_flash_fallback'])) ? (bool)$options['disable_flash_fallback'] : false;
|
1208 |
$show_refresh_btn = (isset($options['show_refresh_button'])) ? (bool)$options['show_refresh_button'] : true;
|
1209 |
+
$refresh_icon_url = (isset($options['refresh_icon_url'])) ? $options['refresh_icon_url'] : null;
|
1210 |
$audio_but_bg_col = (isset($options['audio_button_bgcol'])) ? $options['audio_button_bgcol'] : '#ffffff';
|
1211 |
$audio_icon_url = (isset($options['audio_icon_url'])) ? $options['audio_icon_url'] : null;
|
1212 |
+
$loading_icon_url = (isset($options['loading_icon_url'])) ? $options['loading_icon_url'] : null;
|
1213 |
+
$icon_size = (isset($options['icon_size'])) ? $options['icon_size'] : 32;
|
1214 |
$audio_play_url = (isset($options['audio_play_url'])) ? $options['audio_play_url'] : null;
|
1215 |
$audio_swf_url = (isset($options['audio_swf_url'])) ? $options['audio_swf_url'] : null;
|
1216 |
$show_input = (isset($options['show_text_input'])) ? (bool)$options['show_text_input'] : true;
|
1230 |
|
1231 |
$image_attr = '';
|
1232 |
if (!is_array($image_attrs)) $image_attrs = array();
|
1233 |
+
if (!isset($image_attrs['style'])) $image_attrs['style'] = 'float: left; padding-right: 5px';
|
1234 |
$image_attrs['id'] = $image_id;
|
1235 |
|
1236 |
$show_path = $securimage_path . '/securimage_show.php?';
|
1237 |
+
if ($show_image_url) {
|
1238 |
+
if (parse_url($show_image_url, PHP_URL_QUERY)) {
|
1239 |
+
$show_path = "{$show_image_url}&";
|
1240 |
+
} else {
|
1241 |
+
$show_path = "{$show_image_url}?";
|
1242 |
+
}
|
1243 |
+
}
|
1244 |
if (!empty($namespace)) {
|
1245 |
+
$show_path .= sprintf('namespace=%s&', $namespace);
|
1246 |
}
|
1247 |
$image_attrs['src'] = $show_path . $rand;
|
1248 |
|
1252 |
$image_attr .= sprintf('%s="%s" ', $name, htmlspecialchars($val));
|
1253 |
}
|
1254 |
|
1255 |
+
$audio_obj = null;
|
1256 |
+
|
1257 |
$html = sprintf('<img %s/>', $image_attr);
|
1258 |
|
1259 |
if ($show_audio_btn) {
|
1260 |
$swf_path = $securimage_path . '/securimage_play.swf';
|
1261 |
+
$play_path = $securimage_path . '/securimage_play.php?';
|
1262 |
$icon_path = $securimage_path . '/images/audio_icon.png';
|
1263 |
+
$load_path = $securimage_path . '/images/loading.png';
|
1264 |
+
$js_path = $securimage_path . '/securimage.js';
|
1265 |
+
$audio_obj = $image_id . '_audioObj';
|
1266 |
|
1267 |
if (!empty($audio_icon_url)) {
|
1268 |
$icon_path = $audio_icon_url;
|
1269 |
}
|
1270 |
|
1271 |
+
if (!empty($loading_icon_url)) {
|
1272 |
+
$load_path = $loading_icon_url;
|
1273 |
+
}
|
1274 |
+
|
1275 |
if (!empty($audio_play_url)) {
|
1276 |
+
if (parse_url($audio_play_url, PHP_URL_QUERY)) {
|
1277 |
+
$play_path = "{$audio_play_url}&";
|
1278 |
+
} else {
|
1279 |
+
$play_path = "{$audio_play_url}?";
|
1280 |
+
}
|
1281 |
+
}
|
1282 |
+
|
1283 |
+
if (!empty($namespace)) {
|
1284 |
+
$play_path .= sprintf('namespace=%s&', $namespace);
|
1285 |
}
|
1286 |
|
1287 |
if (!empty($audio_swf_url)) {
|
1288 |
$swf_path = $audio_swf_url;
|
1289 |
}
|
1290 |
|
1291 |
+
// html5 audio
|
1292 |
+
$html .= sprintf('<div id="%s_audio_div">', $image_id) . "\n" .
|
1293 |
+
sprintf('<audio id="%s_audio" preload="none" style="display: none">', $image_id) . "\n";
|
|
|
|
|
|
|
1294 |
|
1295 |
+
// check for existence and executability of LAME binary
|
1296 |
+
// prefer mp3 over wav by sourcing it first, if available
|
1297 |
+
if (is_executable(Securimage::$lame_binary_path)) {
|
1298 |
+
$html .= sprintf('<source id="%s_source_mp3" src="%sid=%s&format=mp3" type="audio/mpeg">', $image_id, $play_path, uniqid()) . "\n";
|
1299 |
+
}
|
1300 |
+
|
1301 |
+
// output wav source
|
1302 |
+
$html .= sprintf('<source id="%s_source_wav" src="%sid=%s" type="audio/wav">', $image_id, $play_path, uniqid()) . "\n";
|
1303 |
+
|
1304 |
+
// flash audio button
|
1305 |
+
if (!$disable_flash_fbk) {
|
1306 |
+
$html .= sprintf('<object type="application/x-shockwave-flash" data="%s?bgcol=%s&icon_file=%s&audio_file=%s" height="%d" width="%d">',
|
1307 |
+
htmlspecialchars($swf_path),
|
1308 |
+
urlencode($audio_but_bg_col),
|
1309 |
+
urlencode($icon_path),
|
1310 |
+
urlencode(html_entity_decode($play_path)),
|
1311 |
+
$icon_size, $icon_size
|
1312 |
+
);
|
1313 |
+
|
1314 |
+
$html .= sprintf('<param name="movie" value="%s?bgcol=%s&icon_file=%s&audio_file=%s" />',
|
1315 |
+
htmlspecialchars($swf_path),
|
1316 |
+
urlencode($audio_but_bg_col),
|
1317 |
+
urlencode($icon_path),
|
1318 |
+
urlencode(html_entity_decode($play_path))
|
1319 |
+
);
|
1320 |
+
|
1321 |
+
$html .= '</object><br />';
|
1322 |
+
}
|
1323 |
|
1324 |
+
// html5 audio close
|
1325 |
+
$html .= "</audio>\n</div>\n";
|
1326 |
+
|
1327 |
+
// html5 audio controls
|
1328 |
+
$html .= sprintf('<div id="%s_audio_controls">', $image_id) . "\n" .
|
1329 |
+
sprintf('<a tabindex="-1" class="captcha_play_button" href="%sid=%s" onclick="return false">',
|
1330 |
+
$play_path, uniqid()
|
1331 |
+
) . "\n" .
|
1332 |
+
sprintf('<img class="captcha_play_image" height="%d" width="%d" src="%s" alt="Play CAPTCHA Audio" style="border: 0px">', $icon_size, $icon_size, htmlspecialchars($icon_path)) . "\n" .
|
1333 |
+
sprintf('<img class="captcha_loading_image rotating" height="%d" width="%d" src="%s" alt="Loading audio" style="display: none">', $icon_size, $icon_size, htmlspecialchars($load_path)) . "\n" .
|
1334 |
+
"</a>\n<noscript>Enable Javascript for audio controls</noscript>\n" .
|
1335 |
+
"</div>\n";
|
1336 |
}
|
1337 |
|
1338 |
if ($show_refresh_btn) {
|
1339 |
$icon_path = $securimage_path . '/images/refresh.png';
|
1340 |
+
if ($refresh_icon_url) {
|
1341 |
+
$icon_path = $refresh_icon_url;
|
1342 |
+
}
|
1343 |
+
$img_tag = sprintf('<img height="%d" width="%d" src="%s" alt="%s" onclick="this.blur()" style="border: 0px; vertical-align: bottom" />',
|
1344 |
+
$icon_size, $icon_size, htmlspecialchars($icon_path), htmlspecialchars($refresh_alt));
|
1345 |
|
1346 |
+
$html .= sprintf('<a tabindex="-1" style="border: 0" href="#" title="%s" onclick="%sdocument.getElementById(\'%s\').src = \'%s\' + Math.random(); this.blur(); return false">%s</a><br />',
|
1347 |
htmlspecialchars($refresh_title),
|
1348 |
+
($audio_obj) ? "{$audio_obj}.refresh(); " : '',
|
1349 |
$image_id,
|
1350 |
$show_path,
|
1351 |
$img_tag
|
1352 |
);
|
1353 |
}
|
1354 |
|
1355 |
+
if ($show_audio_btn) {
|
1356 |
+
// html5 javascript
|
1357 |
+
if (!$javascript_init) {
|
1358 |
+
$html .= sprintf('<script type="text/javascript" src="%s"></script>', $js_path) . "\n";
|
1359 |
+
$javascript_init = true;
|
1360 |
+
}
|
1361 |
+
$html .= '<script type="text/javascript">' .
|
1362 |
+
"$audio_obj = new SecurimageAudio({ audioElement: '{$image_id}_audio', controlsElement: '{$image_id}_audio_controls' });" .
|
1363 |
+
"</script>\n";
|
1364 |
+
}
|
1365 |
+
|
1366 |
$html .= '<div style="clear: both"></div>';
|
1367 |
|
1368 |
$html .= sprintf('<label for="%s">%s</label> ',
|
1425 |
* $img->outputAudioFile(); // outputs a wav file to the browser
|
1426 |
* exit;
|
1427 |
*
|
1428 |
+
* @param string $format
|
1429 |
*/
|
1430 |
+
public function outputAudioFile($format = null)
|
1431 |
{
|
1432 |
set_error_handler(array(&$this, 'errorHandler'));
|
1433 |
|
1434 |
+
if (isset($_SERVER['HTTP_RANGE'])) {
|
1435 |
+
$range = true;
|
1436 |
+
$rangeId = (isset($_SERVER['HTTP_X_PLAYBACK_SESSION_ID'])) ?
|
1437 |
+
'ID' . $_SERVER['HTTP_X_PLAYBACK_SESSION_ID'] :
|
1438 |
+
'ID' . md5($_SERVER['REQUEST_URI']);
|
1439 |
+
$uniq = $rangeId;
|
1440 |
+
} else {
|
1441 |
+
$uniq = md5(uniqid(microtime()));
|
1442 |
+
}
|
1443 |
|
1444 |
try {
|
1445 |
+
if (!($audio = $this->getAudioData())) {
|
1446 |
+
// if previously generated audio not found for current captcha
|
1447 |
+
require_once dirname(__FILE__) . '/WavFile.php';
|
1448 |
+
$audio = $this->getAudibleCode();
|
1449 |
+
|
1450 |
+
if (strtolower($format) == 'mp3') {
|
1451 |
+
$audio = $this->wavToMp3($audio);
|
1452 |
+
}
|
1453 |
+
|
1454 |
+
$this->saveAudioData($audio);
|
1455 |
+
}
|
1456 |
} catch (Exception $ex) {
|
1457 |
if (($fp = @fopen(dirname(__FILE__) . '/si.error_log', 'a+')) !== false) {
|
1458 |
fwrite($fp, date('Y-m-d H:i:s') . ': Securimage audio error "' . $ex->getMessage() . '"' . "\n");
|
1462 |
$audio = $this->audioError();
|
1463 |
}
|
1464 |
|
1465 |
+
if ($this->no_session != true) {
|
1466 |
+
// close session to make it available to other requests in the event
|
1467 |
+
// streaming the audio takes sevaral seconds or more
|
1468 |
+
session_write_close();
|
1469 |
+
}
|
1470 |
+
|
1471 |
if ($this->canSendHeaders() || $this->send_headers == false) {
|
1472 |
if ($this->send_headers) {
|
1473 |
+
if ($format == 'mp3') {
|
1474 |
+
$ext = 'mp3';
|
1475 |
+
$type = 'audio/mpeg';
|
1476 |
+
} else {
|
1477 |
+
$ext = 'wav';
|
1478 |
+
$type = 'audio/wav';
|
1479 |
+
}
|
1480 |
+
|
1481 |
+
header('Accept-Ranges: bytes');
|
1482 |
+
header("Content-Disposition: attachment; filename=\"securimage_audio-{$uniq}.{$ext}\"");
|
1483 |
header('Cache-Control: no-store, no-cache, must-revalidate');
|
1484 |
header('Expires: Sun, 1 Jan 2000 12:00:00 GMT');
|
1485 |
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT');
|
1486 |
+
header('Content-type: ' . $type);
|
|
|
|
|
|
|
|
|
|
|
|
|
1487 |
}
|
1488 |
|
1489 |
+
$this->rangeDownload($audio);
|
1490 |
} else {
|
1491 |
echo '<hr /><strong>'
|
1492 |
.'Failed to generate audio file, content has already been '
|
1499 |
if (!$this->no_exit) exit;
|
1500 |
}
|
1501 |
|
1502 |
+
/**
|
1503 |
+
* Output audio data with http range support. Typically this shouldn't be
|
1504 |
+
* called directly unless being used with a custom implentation. Use
|
1505 |
+
* Securimage::outputAudioFile instead.
|
1506 |
+
*
|
1507 |
+
* @param string $audio Raw wav or mp3 audio file content
|
1508 |
+
*/
|
1509 |
+
public function rangeDownload($audio)
|
1510 |
+
{
|
1511 |
+
/* Congratulations Firefox Android/Linux/Windows for being the most
|
1512 |
+
* sensible browser of all when streaming HTML5 audio!
|
1513 |
+
*
|
1514 |
+
* Chrome on Android and iOS on iPad/iPhone both make extra HTTP requests
|
1515 |
+
* for the audio whether on WiFi or the mobile network resulting in
|
1516 |
+
* multiple downloads of the audio file and wasted bandwidth.
|
1517 |
+
*
|
1518 |
+
* If I'm doing something wrong in this code or anyone knows why, I'd
|
1519 |
+
* love to hear from you.
|
1520 |
+
*/
|
1521 |
+
$audioLength = $size = strlen($audio);
|
1522 |
+
|
1523 |
+
if (isset($_SERVER['HTTP_RANGE'])) {
|
1524 |
+
list( , $range) = explode('=', $_SERVER['HTTP_RANGE']); // bytes=byte-range-set
|
1525 |
+
$range = trim($range);
|
1526 |
+
|
1527 |
+
if (strpos($range, ',') !== false) {
|
1528 |
+
// eventually, we should handle requests with multiple ranges
|
1529 |
+
// most likely these types of requests will never be sent
|
1530 |
+
header('HTTP/1.1 416 Range Not Satisfiable');
|
1531 |
+
echo "<h1>Range Not Satisfiable</h1>";
|
1532 |
+
exit;
|
1533 |
+
} else if (preg_match('/(\d+)-(\d+)/', $range, $match)) {
|
1534 |
+
// bytes n - m
|
1535 |
+
$range = array(intval($match[1]), intval($match[2]));
|
1536 |
+
} else if (preg_match('/(\d+)-$/', $range, $match)) {
|
1537 |
+
// bytes n - last byte of file
|
1538 |
+
$range = array(intval($match[1]), null);
|
1539 |
+
} else if (preg_match('/-(\d+)/', $range, $match)) {
|
1540 |
+
// final n bytes of file
|
1541 |
+
$range = array($size - intval($match[1]), $size - 1);
|
1542 |
+
}
|
1543 |
+
|
1544 |
+
if ($range[1] === null) $range[1] = $size - 1;
|
1545 |
+
$length = $range[1] - $range[0] + 1;
|
1546 |
+
$audio = substr($audio, $range[0], $length);
|
1547 |
+
$audioLength = strlen($audio);
|
1548 |
+
|
1549 |
+
header('HTTP/1.1 206 Partial Content');
|
1550 |
+
header("Content-Range: bytes {$range[0]}-{$range[1]}/{$size}");
|
1551 |
+
|
1552 |
+
if ($range[0] < 0 ||$range[1] >= $size || $range[0] >= $size || $range[0] > $range[1]) {
|
1553 |
+
header('HTTP/1.1 416 Range Not Satisfiable');
|
1554 |
+
echo "<h1>Range Not Satisfiable</h1>";
|
1555 |
+
exit;
|
1556 |
+
}
|
1557 |
+
}
|
1558 |
+
|
1559 |
+
header('Content-Length: ' . $audioLength);
|
1560 |
+
|
1561 |
+
echo $audio;
|
1562 |
+
}
|
1563 |
+
|
1564 |
/**
|
1565 |
* Return the code from the session or database (if configured). If none exists or was found, an empty string is returned.
|
1566 |
*
|
1788 |
|
1789 |
/**
|
1790 |
* Scan the directory for a background image to use
|
1791 |
+
* @return string|bool
|
1792 |
*/
|
1793 |
protected function getBackgroundFromDirectory()
|
1794 |
{
|
1834 |
}
|
1835 |
} while ($c <= 0); // no negative #'s or 0
|
1836 |
|
1837 |
+
$this->code = "$c";
|
1838 |
$this->code_display = "$left $sign $right";
|
1839 |
break;
|
1840 |
}
|
1887 |
$x = floor($width2 / 2 - $tx / 2 - $bb[0]);
|
1888 |
$y = round($height2 / 2 - $ty / 2 - $bb[1]);
|
1889 |
|
1890 |
+
imagettftext($this->tmpimg, $font_size, 0, (int)$x, (int)$y, $this->gdtextcolor, $this->ttf_file, $this->code_display);
|
1891 |
} else {
|
1892 |
$font_size = $this->image_height * $ratio;
|
1893 |
$bb = imageftbbox($font_size, 0, $this->ttf_file, $this->code_display);
|
1896 |
$x = floor($this->image_width / 2 - $tx / 2 - $bb[0]);
|
1897 |
$y = round($this->image_height / 2 - $ty / 2 - $bb[1]);
|
1898 |
|
1899 |
+
imagettftext($this->im, $font_size, 0, (int)$x, (int)$y, $this->gdtextcolor, $this->ttf_file, $this->code_display);
|
1900 |
}
|
1901 |
}
|
1902 |
|
2148 |
* Seek to a random offset in the file and reads a block of data and returns a line from the file.
|
2149 |
*
|
2150 |
* @param int $numWords Number of words (lines) to read from the file
|
2151 |
+
* @return string|array|bool Returns a string if only one word is to be read, or an array of words
|
2152 |
*/
|
2153 |
protected function readCodeFromFile($numWords = 1)
|
2154 |
{
|
2268 |
$_SESSION['securimage_code_disp'] [$this->namespace] = '';
|
2269 |
$_SESSION['securimage_code_value'][$this->namespace] = '';
|
2270 |
$_SESSION['securimage_code_ctime'][$this->namespace] = '';
|
2271 |
+
$_SESSION['securimage_code_audio'][$this->namespace] = '';
|
2272 |
}
|
2273 |
$this->clearCodeFromDatabase();
|
2274 |
}
|
2290 |
$_SESSION['securimage_code_disp'] [$this->namespace] = $this->code_display;
|
2291 |
$_SESSION['securimage_code_value'][$this->namespace] = $this->code;
|
2292 |
$_SESSION['securimage_code_ctime'][$this->namespace] = time();
|
2293 |
+
$_SESSION['securimage_code_audio'][$this->namespace] = null; // clear previous audio, if set
|
2294 |
}
|
2295 |
|
2296 |
if ($this->use_database) {
|
2298 |
}
|
2299 |
}
|
2300 |
|
2301 |
+
/**
|
2302 |
+
* Save audio data to session and/or the configured database
|
2303 |
+
*
|
2304 |
+
* @param string $data The CAPTCHA audio data
|
2305 |
+
*/
|
2306 |
+
protected function saveAudioData($data)
|
2307 |
+
{
|
2308 |
+
if ($this->no_session != true) {
|
2309 |
+
$_SESSION['securimage_code_audio'][$this->namespace] = $data;
|
2310 |
+
}
|
2311 |
+
|
2312 |
+
if ($this->use_database) {
|
2313 |
+
$this->saveAudioToDatabase($data);
|
2314 |
+
}
|
2315 |
+
}
|
2316 |
+
|
2317 |
+
/**
|
2318 |
+
* Gets audio file contents from the session or database
|
2319 |
+
*
|
2320 |
+
* @return string|boolean Audio contents on success, or false if no audio found in session or DB
|
2321 |
+
*/
|
2322 |
+
protected function getAudioData()
|
2323 |
+
{
|
2324 |
+
if ($this->no_session != true) {
|
2325 |
+
if (isset($_SESSION['securimage_code_audio'][$this->namespace])) {
|
2326 |
+
return $_SESSION['securimage_code_audio'][$this->namespace];
|
2327 |
+
}
|
2328 |
+
}
|
2329 |
+
|
2330 |
+
if ($this->use_database) {
|
2331 |
+
$this->openDatabase();
|
2332 |
+
$code = $this->getCodeFromDatabase();
|
2333 |
+
|
2334 |
+
if (!empty($code['audio_data'])) {
|
2335 |
+
return $code['audio_data'];
|
2336 |
+
}
|
2337 |
+
}
|
2338 |
+
|
2339 |
+
return false;
|
2340 |
+
}
|
2341 |
+
|
2342 |
/**
|
2343 |
* Saves the CAPTCHA data to the configured database.
|
2344 |
*/
|
2360 |
$code_disp = $this->code_display;
|
2361 |
|
2362 |
// This is somewhat expensive in PDO Sqlite3 (when there is something to delete)
|
2363 |
+
// Clears previous captcha for this client from database so we can do a straight insert
|
2364 |
+
// without having to do INSERT ... ON DUPLICATE KEY or a find/update
|
2365 |
$this->clearCodeFromDatabase();
|
2366 |
|
2367 |
$query = "INSERT INTO {$this->database_table} ("
|
2388 |
return $success !== false;
|
2389 |
}
|
2390 |
|
2391 |
+
/**
|
2392 |
+
* Saves CAPTCHA audio to the configured database
|
2393 |
+
*
|
2394 |
+
* @param string $data Audio data
|
2395 |
+
* @return boolean true on success, false on failure
|
2396 |
+
*/
|
2397 |
+
protected function saveAudioToDatabase($data)
|
2398 |
+
{
|
2399 |
+
$success = false;
|
2400 |
+
$this->openDatabase();
|
2401 |
+
|
2402 |
+
if ($this->use_database && $this->pdo_conn) {
|
2403 |
+
$id = $this->getCaptchaId(false);
|
2404 |
+
$ip = $_SERVER['REMOTE_ADDR'];
|
2405 |
+
|
2406 |
+
if (empty($id)) {
|
2407 |
+
$id = $ip;
|
2408 |
+
}
|
2409 |
+
|
2410 |
+
$query = "UPDATE {$this->database_table} SET audio_data = :audioData WHERE id = :id";
|
2411 |
+
$stmt = $this->pdo_conn->prepare($query);
|
2412 |
+
$stmt->bindParam(':audioData', $data, PDO::PARAM_LOB);
|
2413 |
+
$stmt->bindParam(':id', $id);
|
2414 |
+
$success = $stmt->execute();
|
2415 |
+
}
|
2416 |
+
|
2417 |
+
return $success !== false;
|
2418 |
+
}
|
2419 |
+
|
2420 |
/**
|
2421 |
* Opens a connection to the configured database.
|
2422 |
*
|
2474 |
}
|
2475 |
} catch (Exception $ex) {
|
2476 |
trigger_error($ex->getMessage(), E_USER_WARNING);
|
2477 |
+
$this->pdo_conn = false;
|
2478 |
return false;
|
2479 |
}
|
2480 |
|
2587 |
code VARCHAR(32) NOT NULL,
|
2588 |
code_display VARCHAR(32) NOT NULL,
|
2589 |
created INTEGER NOT NULL,
|
2590 |
+
audio_data BLOB NULL,
|
2591 |
PRIMARY KEY(id, namespace)
|
2592 |
)";
|
2593 |
|
2601 |
`code` VARCHAR(32) NOT NULL,
|
2602 |
`code_display` VARCHAR(32) NOT NULL,
|
2603 |
`created` INT NOT NULL,
|
2604 |
+
`audio_data` MEDIUMBLOB NULL,
|
2605 |
PRIMARY KEY(id, namespace),
|
2606 |
INDEX(created)
|
2607 |
)";
|
2614 |
code character varying(32) NOT NULL,
|
2615 |
code_display character varying(32) NOT NULL,
|
2616 |
created integer NOT NULL,
|
2617 |
+
audio_data bytea NULL,
|
2618 |
CONSTRAINT pkey_id_namespace PRIMARY KEY (id, namespace)
|
2619 |
)";
|
2620 |
|
2673 |
} else {
|
2674 |
if ( ($row = $stmt->fetch()) !== false ) {
|
2675 |
if (false == $this->isCodeExpired($row['created'])) {
|
2676 |
+
if ($this->database_driver == self::SI_DRIVER_PGSQL && is_resource($row['audio_data'])) {
|
2677 |
+
// pg bytea data returned as stream resource
|
2678 |
+
$data = '';
|
2679 |
+
while (!feof($row['audio_data'])) {
|
2680 |
+
$data .= fgets($row['audio_data']);
|
2681 |
+
}
|
2682 |
+
$row['audio_data'] = $data;
|
2683 |
+
}
|
2684 |
$code = array(
|
2685 |
'code' => $row['code'],
|
2686 |
'code_disp' => $row['code_display'],
|
2687 |
'time' => $row['created'],
|
2688 |
+
'audio_data' => $row['audio_data'],
|
2689 |
);
|
2690 |
}
|
2691 |
}
|
2732 |
|
2733 |
$query = sprintf("DELETE FROM %s WHERE %s - created > %s",
|
2734 |
$this->database_table,
|
2735 |
+
$now,
|
2736 |
+
$this->pdo_conn->quote("$limit", PDO::PARAM_INT));
|
2737 |
|
2738 |
$result = $this->pdo_conn->query($query);
|
2739 |
}
|
3056 |
return $data;
|
3057 |
}
|
3058 |
|
3059 |
+
/**
|
3060 |
+
* Convert WAV data to MP3 using the Lame MP3 encoder binary
|
3061 |
+
*
|
3062 |
+
* @param string $data Contents of the WAV file to convert
|
3063 |
+
* @return string MP3 file data
|
3064 |
+
*/
|
3065 |
+
protected function wavToMp3($data)
|
3066 |
+
{
|
3067 |
+
if (!file_exists(self::$lame_binary_path) || !is_executable(self::$lame_binary_path)) {
|
3068 |
+
throw new Exception('Lame binary "' . $this->lame_binary_path . '" does not exist or is not executable');
|
3069 |
+
}
|
3070 |
+
|
3071 |
+
// size of wav data input
|
3072 |
+
$size = strlen($data);
|
3073 |
+
|
3074 |
+
// file descriptors for reading and writing to the Lame process
|
3075 |
+
$descriptors = array(
|
3076 |
+
0 => array('pipe', 'r'), // stdin
|
3077 |
+
1 => array('pipe', 'w'), // stdout
|
3078 |
+
2 => array('pipe', 'a'), // stderr
|
3079 |
+
);
|
3080 |
+
|
3081 |
+
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
3082 |
+
// workaround for Windows conversion
|
3083 |
+
// writing to STDIN seems to hang indefinitely after writing approximately 0xC400 bytes
|
3084 |
+
$wavinput = tempnam(sys_get_temp_dir(), 'wav');
|
3085 |
+
if (!$wavinput) {
|
3086 |
+
throw new Exception('Failed to create temporary file for WAV to MP3 conversion');
|
3087 |
+
}
|
3088 |
+
file_put_contents($wavinput, $data);
|
3089 |
+
$size = 0;
|
3090 |
+
} else {
|
3091 |
+
$wavinput = '-'; // stdin
|
3092 |
+
}
|
3093 |
+
|
3094 |
+
// Mono, variable bit rate, 32 kHz sampling rate, read WAV from stdin, write MP3 to stdout
|
3095 |
+
$cmd = sprintf("%s -m m -v -b 32 %s -", self::$lame_binary_path, $wavinput);
|
3096 |
+
$proc = proc_open($cmd, $descriptors, $pipes);
|
3097 |
+
|
3098 |
+
if (!is_resource($proc)) {
|
3099 |
+
throw new Exception('Failed to open process for MP3 encoding');
|
3100 |
+
}
|
3101 |
+
|
3102 |
+
stream_set_blocking($pipes[0], 0); // set stdin to be non-blocking
|
3103 |
+
|
3104 |
+
for ($written = 0; $written < $size; $written += $len) {
|
3105 |
+
// write to stdin until all WAV data is written
|
3106 |
+
$len = fwrite($pipes[0], substr($data, $written, 0x20000));
|
3107 |
+
|
3108 |
+
if ($len === 0) {
|
3109 |
+
// fwrite wrote no data, make sure process is still alive, otherwise wait for it to process
|
3110 |
+
$status = proc_get_status($proc);
|
3111 |
+
if ($status['running'] === false) break;
|
3112 |
+
usleep(25000);
|
3113 |
+
} else if ($written < $size) {
|
3114 |
+
// couldn't write all data, small pause and try again
|
3115 |
+
usleep(10000);
|
3116 |
+
} else if ($len === false) {
|
3117 |
+
// fwrite failed, should not happen
|
3118 |
+
break;
|
3119 |
+
}
|
3120 |
+
}
|
3121 |
+
|
3122 |
+
fclose($pipes[0]);
|
3123 |
+
|
3124 |
+
$data = stream_get_contents($pipes[1]);
|
3125 |
+
$err = trim(stream_get_contents($pipes[2]));
|
3126 |
+
|
3127 |
+
fclose($pipes[1]);
|
3128 |
+
fclose($pipes[2]);
|
3129 |
+
|
3130 |
+
$return = proc_close($proc);
|
3131 |
+
|
3132 |
+
if ($wavinput != '-') unlink($wavinput); // delete temp file on Windows
|
3133 |
+
|
3134 |
+
if ($return !== 0) {
|
3135 |
+
throw new Exception("Failed to convert WAV to MP3. Shell returned ({$return}): {$err}");
|
3136 |
+
} else if ($written < $size) {
|
3137 |
+
throw new Exception('Failed to convert WAV to MP3. Failed to write all data to encoder');
|
3138 |
+
}
|
3139 |
+
|
3140 |
+
return $data;
|
3141 |
+
}
|
3142 |
+
|
3143 |
/**
|
3144 |
* Return a wav file saying there was an error generating file
|
3145 |
*
|
3182 |
/**
|
3183 |
* Convert an html color code to a Securimage_Color
|
3184 |
* @param string $color
|
3185 |
+
* @param Securimage_Color|string $default The defalt color to use if $color is invalid
|
3186 |
*/
|
3187 |
protected function initColor($color, $default)
|
3188 |
{
|
securimage/securimage_play.php
CHANGED
@@ -52,6 +52,7 @@ $img = new Securimage();
|
|
52 |
//$img->audio_use_noise = true;
|
53 |
//$img->degrade_audio = false;
|
54 |
//$img->sox_binary_path = 'sox';
|
|
|
55 |
|
56 |
// To use an alternate language, uncomment the following and download the files from phpcaptcha.org
|
57 |
// $img->audio_path = $img->securimage_path . '/audio/es/';
|
@@ -62,4 +63,8 @@ $img = new Securimage();
|
|
62 |
// set namespace if supplied to script via HTTP GET
|
63 |
if (!empty($_GET['namespace'])) $img->setNamespace($_GET['namespace']);
|
64 |
|
65 |
-
|
|
|
|
|
|
|
|
52 |
//$img->audio_use_noise = true;
|
53 |
//$img->degrade_audio = false;
|
54 |
//$img->sox_binary_path = 'sox';
|
55 |
+
//Securimage::$lame_binary_path = '/usr/bin/lame'; // for mp3 audio support
|
56 |
|
57 |
// To use an alternate language, uncomment the following and download the files from phpcaptcha.org
|
58 |
// $img->audio_path = $img->securimage_path . '/audio/es/';
|
63 |
// set namespace if supplied to script via HTTP GET
|
64 |
if (!empty($_GET['namespace'])) $img->setNamespace($_GET['namespace']);
|
65 |
|
66 |
+
|
67 |
+
// mp3 or wav format
|
68 |
+
$format = (isset($_GET['format']) && strtolower($_GET['format']) == 'mp3') ? 'mp3' : null;
|
69 |
+
|
70 |
+
$img->outputAudioFile($format);
|