<?php

/*
Plugin Name: Contact Form 7 - TPV C2EM Add-on
Description: Integrates TPV with Contact Form 7. En el formulari hi ha d'haver el shortcode <code>[c2em_num_ordre]</code> per a què el formulari inscripcio tingui un número únic que servirà com número d'ordre i que es quedi grabat en la base de dades CF7BBDD. A més, hi afegim un camp  amagat per tal que més tard es mostri en el cas que es sigui administrador o tresorer en forma de checkbox. Amb el shortcode <code>[c2em_update_preu form_name="inscripcio" field_names="camp1;camp2;camp3..."]</code> en una nova pagina permetra a l'administrador veure els numeros d'ordres creats i marcar i desmarcar per controlar el pagament (tot i que ja es controla automàticament).
Author: Arnau Sanchez 
Based on:  https://wpplugin.org/paypal/
License: GPL3
Version: 1.4.1
*/

//  plugin functions
register_activation_hook( __FILE__, "cfc2em_activate" );
register_deactivation_hook( __FILE__, "cfc2em_deactivate" );
register_uninstall_hook( __FILE__, "cfc2em_uninstall" );

function cfc2em_activate() {
	
	
	// remove ajax from contact form 7 to allow for php redirects
	function wp_config_put( $slash = '' ) {
		$config = file_get_contents (ABSPATH . "wp-config.php");
		$config = preg_replace ("/^([\r\n\t ]*)(\<\?)(php)?/i", "<?php define('WPCF7_LOAD_JS', false);", $config);
		file_put_contents (ABSPATH . $slash . "wp-config.php", $config);
	}

	if ( file_exists (ABSPATH . "wp-config.php") && is_writable (ABSPATH . "wp-config.php") ){
		wp_config_put();
	}
	else if (file_exists (dirname (ABSPATH) . "/wp-config.php") && is_writable (dirname (ABSPATH) . "/wp-config.php")){
		wp_config_put('/');
	}
	else {
		?>
		<div class="error">
			<p><?php _e( 'wp-config.php is not writable, please make wp-config.php writable - set it to 0777 temporarily, then set back to its original setting after this plugin has been activated.', 'my-text-domain' ); ?></p>
		</div>
		<?php
		exit;
	}
	
}

function cfc2em_deactivate() {

	function wp_config_delete( $slash = '' ) {
		$config = file_get_contents (ABSPATH . "wp-config.php");
		$config = preg_replace ("/( ?)(define)( ?)(\()( ?)(['\"])WPCF7_LOAD_JS(['\"])( ?)(,)( ?)(0|1|true|false)( ?)(\))( ?);/i", "", $config);
		file_put_contents (ABSPATH . $slash . "wp-config.php", $config);
	}

	if (file_exists (ABSPATH . "wp-config.php") && is_writable (ABSPATH . "wp-config.php")) {
		wp_config_delete();
	}
	else if (file_exists (dirname (ABSPATH) . "/wp-config.php") && is_writable (dirname (ABSPATH) . "/wp-config.php")) {
		wp_config_delete('/');
	}
	else if (file_exists (ABSPATH . "wp-config.php") && !is_writable (ABSPATH . "wp-config.php")) {
		?>
		<div class="error">
			<p><?php _e( 'wp-config.php is not writable, please make wp-config.php writable - set it to 0777 temporarily, then set back to its original setting after this plugin has been deactivated.', 'my-text-domain' ); ?></p>
		</div>
		<button onclick="goBack()">Go Back and try again</button>
		<script>
		function goBack() {
			window.history.back();
		}
		</script>
		<?php
		exit;
	}
	else if (file_exists (dirname (ABSPATH) . "/wp-config.php") && !is_writable (dirname (ABSPATH) . "/wp-config.php")) {
		?>
		<div class="error">
			<p><?php _e( 'wp-config.php is not writable, please make wp-config.php writable - set it to 0777 temporarily, then set back to its original setting after this plugin has been deactivated.', 'my-text-domain' ); ?></p>
		</div>
		<button onclick="goBack()">Go Back and try again</button>
		<script>
		function goBack() {
			window.history.back();
		}
		</script>
		<?php
		exit;
	}
	else {
		?>
		<div class="error">
			<p><?php _e( 'wp-config.php is not writable, please make wp-config.php writable - set it to 0777 temporarily, then set back to its original setting after this plugin has been deactivated.', 'my-text-domain' ); ?></p>
		</div>
		<button onclick="goBack()">Go Back and try again</button>
		<script>
		function goBack() {
			window.history.back();
		}
		</script>
		<?php
		exit;
	}

	delete_option("cfc2em_my_plugin_notice_shown");
	
}

function cfc2em_uninstall() {
}


// display activation notice

add_action('admin_notices', 'cfc2em_my_plugin_admin_notices');

function cfc2em_my_plugin_admin_notices() {
if (!get_option('cfc2em_my_plugin_notice_shown')) {
echo "<div class='updated'><p><a href='admin.php?page=cfc2em_admin_table'>Click here to view the plugin settings</a>.</p></div>";
update_option("cfc2em_my_plugin_notice_shown", "true");
}
}


/*function cfc2em_plugin_settings_link($links)
{
unset($links['edit']);

$forum_link   = '<a target="_blank" href="https://wordpress.org/support/plugin/contact-form-7-paypal-add-on">' . __('Support', 'PTP_LOC') . '</a>';
$premium_link = '<a target="_blank" href="https://wpplugin.org/contact-form-7-paypal-add-on/">' . __('Pro Version', 'PTP_LOC') . '</a>';
$settings = '<a href="admin.php?page=cfc2em_admin_table">' . __('Settings', 'PTP_LOC') . '</a>';
$edit = '<a href="plugin-editor.php?file=contact-form-7-paypal-add-on/paypal.php">' . __('Edit', 'PTP_LOC') . '</a>';
array_push($links, $edit);
array_push($links, $settings);
array_push($links, $forum_link);
array_push($links, $premium_link);
return $links; 
}

$plugin = plugin_basename(__FILE__); 
add_filter("plugin_action_links_$plugin", 'cfc2em_plugin_settings_link' );*/




// check to make sure contact form 7 is installed and active
//check to make sure contact form 7 DB is installed and active
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
//include_once ('c2em_menu.php');
if ( is_plugin_active( 'contact-form-7/wp-contact-form-7.php' ) 
	&& is_plugin_active( 'contact-form-7-to-database-extension/contact-form-7-db.php' ) ) {

	// hook into contact form 7 - before send
	add_action('wpcf7_before_send_mail', 'cfc2em_before_send_mail');

	function cfc2em_before_send_mail( $cf7 ) {
		
	}
	
	
	// hook into contact form 7 - after send
	add_action('wpcf7_mail_sent', 'cfc2em_after_send_mail');

	//Redirigim a la passarela de pagament en el cas que el formulari sigui per pagar 
	//i hi hagi un preu
	function cfc2em_after_send_mail( $cf7 ) {

		if (!isset($cf7->posted_data) && class_exists('WPCF7_Submission')) {
			// Contact Form 7 version 3.9 removed $cfdata->posted_data and now
			// we have to retrieve it from an API
			$submission = WPCF7_Submission::get_instance();
			if ($submission) {
			    $formdata = $submission->get_posted_data();
			}
		} elseif (isset($cf7->posted_data)) {
			// For pre-3.9 versions of Contact Form 7
			$formdata = $cf7->posted_data;
		} else {
			// We can't retrieve the form data
			return $cf7;
		}
		 
		global $postid;
		
		$postid = $cf7->id();
		
		$enable = get_post_meta( $postid, "_cfc2em_enable", true);
		$form_preus='preus';
		$preu = $formdata[$form_preus];
		//$import=$preu; //si fem servir select
	 	$import=$preu[0]; //si el camp preus fos radio button
		//paguem si esta habilitat el TPV i hi ha algun valor al preu
		//posem el numero d'ordre de pagament, el numero de comanda en la base de dades de CF7BD
		if ($enable == "1" && $import!='') {
			//Omplim les dades per al TPV i enviem les dades a la web de la passarela
			require_once('includes/RedsysAPI.php'); 
			$registrar = get_post_meta( $postid, "_cfc2em_registrar", true);
			if($registrar == "1"){
				$form_NIF='identidad';
			}
			else{
				$form_NIF='dni';
			}
			$form_num_ordre='num_ordre';
			$num_ordre = $formdata[$form_num_ordre];
			$NIF = $formdata[$form_NIF];
			//Del preu, suposem 75, s'ha d'afegir 00
					
			$amount=$import."00";
		
			// Creem l'objecte per enviar
			$miObj = new RedsysAPI();

			// Concepte
			$ProductDescription="C2EM. ".$NIF;

			//Dades per la recepcio
			//Recupareme el nom de la taula que crea CF7DB
			require_once (ABSPATH . '/wp-content/plugins/contact-form-7-to-database-extension/CF7DBPlugin.php');
			$plugin = new CF7DBPlugin;
			$tableName = $plugin->getSubmitsTableName();
			//Nom del formulari-taula a canviar tambe les dades
			$MerchantData=$tableName.";".$num_ordre.";".$preu.";".$registrar.";".$NIF; 
			// Valores de entrada
			$fuc=get_post_meta($postid, "_cfc2em_FUC", true);//"999008881";
			$terminal=get_post_meta($postid, "_cfc2em_num_terminal", true);//"871";
			$moneda="978"; //000 euros
			$trans="0";

			$urlOK=get_post_meta($postid, "_cfc2em_urlOK", true);
			$urlKO=get_post_meta($postid, "_cfc2em_urlKO", true);
			$urlEnviament=get_post_meta($postid, "_cfc2em_urlEnviament", true);
			$url= home_url(). '/wp-content/plugins/contact-form-7-c2em-TPV/includes/recepcioPeticio.php';//'http://c2emtest.feemcat.org/wp-content/plugins/contact-form-7-c2em-TPV/includes/recepcioPeticio.php';
			$id=$num_ordre;


			$miObj->setParameter("DS_MERCHANT_AMOUNT",$amount);
			$miObj->setParameter("Ds_Merchant_MerchantData",$MerchantData);
			$miObj->setParameter("Ds_Merchant_ProductDescription",$ProductDescription);
			$miObj->setParameter("DS_MERCHANT_ORDER",strval($id));
			$miObj->setParameter("DS_MERCHANT_MERCHANTCODE",$fuc);
			$miObj->setParameter("DS_MERCHANT_CURRENCY",$moneda);
			$miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE",$trans);
			$miObj->setParameter("DS_MERCHANT_TERMINAL",$terminal);
			$miObj->setParameter("DS_MERCHANT_MERCHANTURL",$url);
			$miObj->setParameter("DS_MERCHANT_URLOK",$urlOK);		
			$miObj->setParameter("DS_MERCHANT_URLKO",$urlKO);
			//Datos de configuraciÃ³n
			$version="HMAC_SHA256_V1";
			$kc = get_post_meta($postid, "_cfc2em_clau", true);//'sq7HjrUOBfKmC576ILgskD5srU870gJ7';//Clave recuperada de CANALES
			// Se generan los parÃ¡metros de la peticiÃ³n
			$request = "";
			$params = $miObj->createMerchantParameters();
			$signature = $miObj->createMerchantSignature($kc);
			$content='<html>
						<head><title>Redirecting to TPV...</title></head>
						<body>';
			if ($registrar=="1"){
				$content.='<script type="text/javascript">
							alert("Usuari creat amb èxit. \nRevisa el correu electrònic. \n\nAra seguiràs amb el procés de pagament.  \n\nGràcies");
							</script>';
			}

			$content.='<form action="'.$urlEnviament.'" method="post" name="c2em">
						<input type="hidden"  name="Ds_SignatureVersion" id="subject" value="'.$version.'"/>
						<input type="hidden" id="Ds_MerchantParameters" name="Ds_MerchantParameters" value="'.$params.'"/>
						<input type="hidden" id="Ds_Signature" name="Ds_Signature" value="'.$signature.'"/>
						<img alt="" border="0" style="border:none;display:none;" src="https://www.paypal.com/$language/i/scr/pixel.gif" width="1" height="1">
						</form>
						<script type="text/javascript">
						document.c2em.submit();
						</script>
						</body>
						</html>';
			echo $content;
	
			exit;			
		}
	}
	
	
//$num_ordre){
	/*	//Si no hi ha cfbd no podem actualitzar
		if ( is_plugin_active( 'contact-form-7-to-database-extension/contact-form-7-db.php' ) ) {
			//Recupareme el nom de la taula que crea CF7DB
			require_once (ABSPATH . '/wp-content/plugins/contact-form-7-to-database-extension/CF7DBPlugin.php');
			$plugin = new CF7DBPlugin;
			$tableName = $plugin->getSubmitsTableName();
			global $wpdb;
			//<?php $wpdb->update( $table, $data, $where, $format = null, $where_format = null ); 
			$wpdb->update($tableName, 
						array( 
							'field_value' => time()	// string
						), 
						array( 	'field_name' => 'num_ordre',
								'field_value' =>$num_ordre),
						array( 
							'%f'	// value1
						), 
						array( '%s', '%f' ) 
					);

		}
	}*/
	// hook into contact form 7 form
	add_action('wpcf7_admin_after_additional_settings', 'cfc2em_admin_after_additional_settings');


	function cfc2em_editor_panels ( $panels ) {
		
		$new_page = array(
			'TPV' => array(
				'title' => __( 'C2EM-TPV', 'contact-form-7' ),
				'callback' => 'cfc2em_admin_after_additional_settings'
			)
		);
		
		$panels = array_merge($panels, $new_page);
		
		return $panels;
		
	}
	add_filter( 'wpcf7_editor_panels', 'cfc2em_editor_panels' );


	function cfc2em_admin_after_additional_settings( $cf7 ) {
		
		$post_id = sanitize_text_field($_GET['post']);
		
		$enable = get_post_meta($post_id, "_cfc2em_enable", true);
		$registrar = get_post_meta($post_id, "_cfc2em_registrar", true);
		
		$FUC = get_post_meta($post_id, "_cfc2em_FUC", true);
		$num_terminal = get_post_meta($post_id, "_cfc2em_num_terminal", true);
		$clau = get_post_meta($post_id, "_cfc2em_clau", true);
		$emailRoot= get_post_meta($post_id, "_cfc2em_emailRoot", true);
		$urlOK= get_post_meta($post_id, "_cfc2em_urlOK", true);
		$urlKO= get_post_meta($post_id, "_cfc2em_urlKO", true);
		$urlEnviament= get_post_meta($post_id, "_cfc2em_urlEnviament", true);

		
		
		
		if ($enable == "1") { $checked = "CHECKED"; } else { $checked = ""; }
		if ($registrar == "1") { $checked_registrar = "CHECKED"; } else { $checked_registrar = ""; }
		
	
		$admin_table_output = "";
		$admin_table_output .= "<form>";
		$admin_table_output .= "<div id='additional_settings-sortables' class='meta-box-sortables ui-sortable'><div id='additionalsettingsdiv' class='postbox'>";
		$admin_table_output .= "<div class='handlediv' title='Click to toggle'><br></div><h3 class='hndle ui-sortable-handle'><span>Configuració C2EM TPV</span></h3>";
		$admin_table_output .= "<div class='inside'>";
		
		$admin_table_output .= "<div class='mail-field'>";
		$admin_table_output .= "<input name='registrar' value='1' type='checkbox' $checked_registrar>";
		$admin_table_output .= "<label>Habilitar que es registrin els usuaris, creant un usuari a partir del DNI (camp identidad) i una contrasenya aleatòria i enviant aquesta informació pel correu electrònic facilitat en el camp email.
 </label>";
		$admin_table_output .= "</div>";	

		$admin_table_output .= "<h4 class='hndle ui-sortable-handle'><span>Dades identificatives facilitades pel Banc </span></h4>";
		
		$admin_table_output .= "<div class='mail-field'>";
		$admin_table_output .= "<input name='enable' value='1' type='checkbox' $checked>";
		$admin_table_output .= "<label>Permetre pagar amb targeta</label>";
		$admin_table_output .= "</div>";

		$admin_table_output .= "<br/><table><tr><td>Número de comercio (FUC) </td> <td><input type='text' name='FUC' value='$FUC'></td><td>(Ds_Merchant_MerchantCode)</td> </tr>";
		$admin_table_output .= "<tr><td>Número de terminal: </td><td><input type='text' name='num_terminal' value='$num_terminal'>  </td><td>(Ds_Merchant_Terminal)</td></tr>";		
		$admin_table_output .= "<tr><td>Clau secreta d'encriptació:</td><td> <input type='text' name='clau' value='$clau'> </td><td>(possiblement s'ha de modificar la variable kc del fitxer recepcioPeticio.php</td></tr>";
		$admin_table_output .= "<tr><td>URL de retorn OK: </td><td><input type='text' name='urlOK' value='$urlOK'> </td><td></td></tr>";
		$admin_table_output .= "<tr><td>URL de retorn KO:</td><td> <input type='text' name='urlKO' value='$urlKO'> </td><td></td></tr>";
		$admin_table_output .= "<tr><td>URL d'enviament del formulari TPV: </td><td><input type='text' name='urlEnviament' value='$urlEnviament'></td><td> </td></tr>";
		$admin_table_output .= "<input type='hidden' name='post' value='$post_id'>";
		$admin_table_output .= "<tr><td><label>Correu electrònic per avisar a l'administrador del pagament</label></td><td><input type='text' name='emailRoot' value='$emailRoot'></td><td></td></tr></table>";
		$admin_table_output .= "<h4 class='hndle ui-sortable-handle'><span>Dades importants pel bon funcionament del formulari </span></h4>";
		$admin_table_output .= "En el cas que s'habiliti el registre d'usuaris, en el formulari han d'existir els següents camps:
								<ul>
									<li><pre style='display: inline;'>[text* identidad placeholder \"12345678Z\"]</pre> </li> 
									<li><pre style='display: inline;'>[text* nom placeholder \"Nom\"]</pre></li>
									<li><pre style='display: inline;'>[text* cognoms placeholder \"Cognom1 Cognom2\"]</pre></li>
									<li><pre style='display: inline;'>[radio preus default:1 \"100\"]</pre></li>
								</ul>  <br>";
		$admin_table_output .= "En el cas que no s'habiliti el regitre d'usuaris però es vulgui validar un camp tipus dni, utilitzar el tag: <pre style='display: inline;'>[text* dni placeholder \"12345678Z\"]</pre>, el qual a més comprova que sigui el nom d'un usuari inscrit.<br>";
		$admin_table_output .= "Per tal que quedi constància el número de comanda del pagament, en el formulari ha d'existir el <em>shorcode</em> <pre style='display: inline;'>[c2em_num_ordre]</pre> ";
		
		$admin_table_output .= "</div></div></form>";
		

		echo $admin_table_output;
		
	}
	
	// hook into contact form 7 admin form save
	add_action('wpcf7_save_contact_form', 'cfc2em_save_contact_form');

	function cfc2em_save_contact_form( $cf7 ) {
		
			$post_id = sanitize_text_field($_POST['post']);
			
			if (!empty($_POST['enable'])) {
				$enable = sanitize_text_field($_POST['enable']);
				update_post_meta($post_id, "_cfc2em_enable", $enable);

			} else {
				update_post_meta($post_id, "_cfc2em_enable", 0);
			}

			if (!empty($_POST['registrar'])) {
				$registrar = sanitize_text_field($_POST['registrar']);
				update_post_meta($post_id, "_cfc2em_registrar", $registrar);

			} else {
				update_post_meta($post_id, "_cfc2em_registrar", 0);
			}

			$FUC = sanitize_text_field($_POST['FUC']);
			update_post_meta($post_id, "_cfc2em_FUC", $FUC);
			
			$num_terminal = sanitize_text_field($_POST['num_terminal']);
			update_post_meta($post_id, "_cfc2em_num_terminal", $num_terminal);
			
			$clau = sanitize_text_field($_POST['clau']);
			update_post_meta($post_id, "_cfc2em_clau", $clau);
		//	update_option("kc_cfc2em_clau", $clau);

			$emailRoot = sanitize_text_field($_POST['emailRoot']);
			update_post_meta($post_id, "_cfc2em_emailRoot", $emailRoot);

			$urlOK = sanitize_text_field($_POST['urlOK']);
			update_post_meta($post_id, "_cfc2em_urlOK", $urlOK);
			
			$urlKO = sanitize_text_field($_POST['urlKO']);
			update_post_meta($post_id, "_cfc2em_urlKO", $urlKO);
			
			$urlEnviament = sanitize_text_field($_POST['urlEnviament']);
			update_post_meta($post_id, "_cfc2em_urlEnviament", $urlEnviament);

	}

	//shortcode: [c2em_update_num_ordre form_name="inscripciov2"]
	include_once('c2em_update_num_ordre.php');

	//shortcode: [c2em_update_preu form_name="inscripciov2" field_names="camp1;camp2;camp3..."]
	include_once('c2em_update_preu.php');

	//shortcode: [c2em_acreditacions] per posar dintre un formulari CF7
	include_once('c2em_acreditacions.php');

	//shortcode: [c2em_update_roles form_name="inscripciov2"] 
	include_once('c2em_update_roles.php');

	//shortcode: [c2em_update_roles_30 form_name="inscripciov2"] 
	include_once('c2em_update_roles30.php');
	
	//shortcode: [c2em_qr size="240" page="nom"]
	include_once('c2em_qr.php');

	//Reserva unica
	include_once('c2em_reservaunica.php');

} else {

	// give warning if contact form 7 is not active
	function cfc2em_my_admin_notice() {
		?>
		<div class="error">
			<p><?php _e( '<b>Contact Form 7 TPV Add-on:</b> Contact Form 7 is not installed and / or active! ', 'my-text-domain' ); ?></p>
		</div>
		<?php
	}
	add_action( 'admin_notices', 'cfc2em_my_admin_notice' );

}



/*
Informacio treta de http://www.mootpoint.org/blog/wordpress-contact-form-7-user-registration/
Del formulari CR7 $urf, que te per camps que instencien les variables $your_name i $form_mail,
es genera un usuari i una contrasenya al WP i envia un mail informatiu al correu facilitat.
No envia un mail ni crear l'usuari si el mail no exiteix.
*/
function crear_username_pwd_de_inscripcio($cfdata) {
	//Camp necessaris, es necessari que existeixi el formulari $urf i els dos camps seguents.
	//$urf = 'inscripciov2';
	global $postid;	
	$postid = $cfdata->id();	
	$registrar = get_post_meta( $postid, "_cfc2em_registrar", true);

	$form_nom='nom';
	$form_cognoms='cognoms';
	$form_mail='email';
	if($registrar == "1"){
		$form_NIF='identidad';
	}
	else{
		$form_NIF='dni';
	}
	$form_preus='preus';
	$form_num_ordre='num_ordre';


    if (!isset($cfdata->posted_data) && class_exists('WPCF7_Submission')) {
        // Contact Form 7 version 3.9 removed $cfdata->posted_data and now
        // we have to retrieve it from an API
        $submission = WPCF7_Submission::get_instance();
        if ($submission) {
            $formdata = $submission->get_posted_data();
        }
    } elseif (isset($cfdata->posted_data)) {
        // For pre-3.9 versions of Contact Form 7
        $formdata = $cfdata->posted_data;
    } else {
        // We can't retrieve the form data
        return $cfdata;
    }

	//registrem si esta habilitat el TPV i hi ha algun valor al preu
	if ($registrar == "1") {
    // Check this is the user registration form
   // if ( $cfdata->title() == $urf) {
        $password = wp_generate_password( 12, false );
        $email = $formdata[$form_mail];
        $nom = $formdata[$form_nom];
		$cognoms = $formdata[$form_cognoms];
		$NIF = $formdata[$form_NIF];
		$preu = $formdata[$form_preus];
		//$import=$preu; //si fem servir select
 		$import=$preu[0]; //si el camp preus fos radio button
		$num_ordre = $formdata[$form_num_ordre];
        // Construim un nom d'usuari a part del nom i les inicials dels cognoms
		$username = strtoupper($NIF);
        if ( !email_exists( $email ) &&  !username_exists( $NIF )) {
            // Create the user
            $userdata = array(
                'user_login' => $username,
                'user_pass' => $password,
                'user_email' => $email,
                'nickname' => $nom,
                'display_name' => $nom,
                'first_name' => $nom,
                'last_name' => $cognoms,
                'role' => 'subscriber'
            );
            $user_id = wp_insert_user( $userdata );
            if ( !is_wp_error($user_id) ) {
                // Email Si han triat targeta:
				if($import!=''){
				   // $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
				    $message = "Benvingut ".$nom."!\n\n";
					$message .="Ja t'has inscrit al Congrés Català d’Educació Matemàtica.\n\n";
					$message .= "A partir d’ara podràs accedir al teu espai personal de la web del congrés amb el nom d’usuari i la contrasenya següents:\n";
				    $message .= sprintf(__("\t Nom d'usuari (NIF): %s"), $username) . "\n";
				    $message .= sprintf(__("\t Contrasenya: %s"), $password) . "\n\n";
					$message .= "Quan entris a la web mitjançant l'accés, trobaràs un nou menú d'usuari on podràs generar un rebut del teu pagament.\n\n";
					$message .= "Més endavant des del mateix menú també podràs triar els tallers, les sortides, i moltes altres utilitats.\n\n";
					$message .= "Per qualsevol consulta o incidència pots enviar un correu a c2em@feemcat.org\n\n";
					$message .= "Cordialment, Equip organitzador del C2EM\n".site_url();
				    
				   // wp_mail($email, sprintf(__("[%s] El teu nom d'usuari i contrasenya"), $blogname), $message);
					wp_mail($email, "Inscripció al C2EM", $message);
				}
            
				//Email Amb pagament aplaçat:
				if($import==''){
				    $message = "Benvingut ".$nom."!\n\n";
					$message .="Ja t'has inscrit al Congrés Català d’Educació Matemàtica.\n\n";
					$message .= "A partir d’ara podràs accedir al teu espai personal de la web del congrés amb el nom d’usuari i la contrasenya següents:\n";
				    $message .= sprintf(__("\t Nom d'usuari (NIF): %s"), $username) . "\n";
				    $message .= sprintf(__("\t Contrasenya: %s"), $password) . "\n\n";
					$message .= "La validació de la teva inscripció està pendent que facis finalment el pagament.\n\n";
					$message .= "Pots fer-ho a través d'una transferència o amb targeta de crèdit, un cop validat dins la web, trobaràs l'accés al pagament dins el menú d'usuari.\n\n";
					$message .= "Un cop validat, quan entris a la web trobaràs un nou menú d'usuari on podràs generar un rebut del teu pagament.\n\n";
					$message .= "Més endavant des del mateix menú també podràs triar els tallers, les sortides, i moltes altres utilitats.\n\n";
				    $message .= "Per qualsevol consulta o incidència pots enviar un correu a c2em@feemcat.org\n\n";
					$message .= "Cordialment, Equip organitzador del C2EM\n".site_url();

				    wp_mail($email, "Inscripció al C2EM", $message);
				}

			}
        }
		
    }
	
	//Actualitzem els valors de pagament
	// i enviem un mail al tresore conforme s'ha fet l'intent de pagament
	$enable = get_post_meta( $postid, "_cfc2em_enable", true);
	if ($enable == "1") {
		$NIF = $formdata[$form_NIF];
		$preu = $formdata[$form_preus];
		//$import=$preu; //si fem servir select
		$import=$preu[0]; //si fem servir select ratio button
		$num_ordre = $formdata[$form_num_ordre];
		//Enviem un mail si hi ha un contacte afegit en el camp
		$emailRoot = get_post_meta( $postid, "_cfc2em_emailRoot", true);
		if ($emailRoot !='' && $import!=''){
			$assumpte = sprintf(" Nou pagament d'inscripció [num_ordre %s] \r\n", $num_ordre);
			$message = "Dades del pagament per targeta : \r\n";
			$message .= sprintf("\t DNI: %s \r\n", $NIF);
			$message .= sprintf("\t Preu: %s \r\n", $import);
			$message .= sprintf("\t Número d'ordre de comanda: %s \r\n", $num_ordre);
			wp_mail($emailRoot,  $assumpte, $message);
		}

    }
    return $cfdata;
}

//abans d'enviar el mail personalizat, canviem el from i el seu nom
/** changing default wordpres email settings */
 
add_filter('wp_mail_from', 'c2em_new_mail_from');
add_filter('wp_mail_from_name', 'c2em_new_mail_from_name');
 
function c2em_new_mail_from($old) {
 return 'c2em@feemcat.org';
}
function c2em_new_mail_from_name($old) {
 return 'C2EM';
}
add_action('wpcf7_before_send_mail', 'crear_username_pwd_de_inscripcio', 1);

/*
Informacio treta de http://www.mootpoint.org/blog/wordpress-contact-form-7-user-registration/
Volem controlar que llanci un missatge d'error si el mail donat ja existeix en la bbdd
*/
function custom_email_validation_filter($result, $tag) {  
	$form_mail='email';
	$tag = new WPCF7_Shortcode( $tag );

 	
   	if ( $form_mail == $tag->name ) { //Nomes aplicat al camp de formulari amb nom $form_mail
		$the_value = $_POST[$form_mail];
		if(email_exists($the_value)){ 
          // $result['valid'] = false;
           // $result['reason'][$form_mail] = 'Correu electronic ja existeix';
			$result->invalidate( $tag, "Ho sentim, el correu electronic ja existeix." );
		}
    }
   	return $result;
 }

//add_filter( 'wpcf7_validate_email', 'custom_email_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_email*', 'custom_email_validation_filter', 10, 2 );// Req. Email field

/*
Informacio treta de http://www.mootpoint.org/blog/wordpress-contact-form-7-user-registration/
i de https://wordpress.org/plugins/validar-dni-nif-nie-y-cif/faq/
Volem controlar que llanci un missatge d'error si el NIF donat ja existeix en la bbdd
i quan el NIF no té 8 lletres i la lletra no es correcte.
*/
function custom_NIF_validation_filter($result, $tag) {  
	$form_NIF='identidad';
	$form_dni='dni';
	$tag = new WPCF7_Shortcode( $tag );

   	if ( $form_NIF == $tag->name ) { //Nomes aplicat al camp de formulari amb nom $form_NIF
		$the_value = strtoupper($_POST[$form_NIF]);
		if(username_exists($the_value)){ 
			$result->invalidate( $tag, "Ho sentim, el NIF ja existeix." );
		}
	}
	//El camp dni es pot utilizar en els formulari on es obligatori estar inscrit per pagar sense estar loguejat
	if ( $form_dni == $tag->name ) { //Nomes aplicat al camp de formulari amb nom $form_NIF
		$the_value = strtoupper($_POST[$form_dni]);
		if(!username_exists($the_value)){ 
			$result->invalidate( $tag, "Ho sentim, per poder seguir has d'estar inscrit." );
		}
	}

	if ( $form_NIF == $tag->name || $form_dni == $tag->name) {//Nomes aplicat al camp de formulari amb nom $form_dni
		$the_value = strtoupper($_POST[$tag->name]);
		for ($i = 0; $i < 9; $i ++){
			$num[$i] = substr($the_value, $i, 1);
		}
		//si no tiene un formato valido devuelve error
		if (!preg_match('/((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)/', $the_value)){
			$result->invalidate( $tag, "Ho sentim, el NIF no té un format vàlid." );
		}
		//comprobacion de NIFs estandar
		if (preg_match('/(^[0-9]{8}[A-Z]{1}$)/', $the_value)){
			if ($num[8] != substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($the_value, 0, 8) % 23, 1)){
				$result->invalidate( $tag, "Ho sentim, la lletra del NIF no és correcte." );
			}	
		}
		//algoritmo para comprobacion de codigos tipo CIF
		$suma = $num[2] + $num[4] + $num[6];
		for ($i = 1; $i < 8; $i += 2){
			$suma += substr((2 * $num[$i]),0,1) + substr((2 * $num[$i]), 1, 1);
		}
		$n = 10 - substr($suma, strlen($suma) - 1, 1);
		//comprobacion de NIFs especiales (se calculan como CIFs o como NIFs)
		if (preg_match('/^[KLM]{1}/', $the_value)){
			if ($num[8] != chr(64 + $n) || $num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($the_value, 1, 8)
			% 23, 1)){
				$result->invalidate( $tag, "Ho sentim, el NIF no és correcte." );
			}
		}
		//comprobacion de CIFs
		if (preg_match('/^[ABCDEFGHJNPQRSUVW]{1}/', $the_value)){
			if ($num[8] != chr(64 + $n) || $num[8] == substr($n, strlen($n) - 1, 1)){
				$result->invalidate( $tag, "Ho sentim, el CIF no és correcte." );
			}
		}
		//comprobacion de NIEs
		if (preg_match('/^[XYZ]{1}/', $the_value)){
			if ($num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr(str_replace(array('X','Y','Z'),
			array('0','1','2'), $the_value), 0, 8) % 23, 1)){
				$result->invalidate( $tag, "Ho sentim, el NIE no és correcte." );
			}
		}
    }
   	return $result;
 }


add_filter( 'wpcf7_validate_text*', 'custom_NIF_validation_filter', 10, 2 );// Req. Email field


/*
Informacio treta de http://contactform7.com/2015/01/10/adding-a-custom-form-tag/
Crear un shortcode [c2em_num_ordre] per que el formulari inscripcio tinguin un numero unic que servira
com numero d'ordre i que es quedi grabat en la base de dades CF7BBDD
A mes, hi afegim un camp  amagat per mes tard es mostri en el cas que es sigui administrador o tresorer en forma de checkbox
*/
add_action( 'wpcf7_init', 'c2em_insertar_num_ordre' );
 
function c2em_insertar_num_ordre() {
    wpcf7_add_shortcode( 'c2em_num_ordre', 'c2em_insertar_num_ordre_cf7' ); // "clock" is the type of the form-tag
}
 
function c2em_insertar_num_ordre_cf7() {
    $content = '<input type="hidden" name="num_ordre" value="'.time().'"><br>  <input type="hidden" name="comprovar_tresorer" value="-1" > <br>';
	$content.='<script type="text/javascript" language="Javascript">
	            jQuery(document).ready(function() {
	        		jQuery(":submit").click(function(){
						jQuery(\'[name="num_ordre"]\').val("'.time().'");
					});
	            });
	        </script>';

    return $content ;
}	

//add_shortcode( 'c2em_tpv_no_user', 'c2em_tpv_no_user_html' ); 


//Si l'usuari està loguejat, no mostrem el formulari
/*function c2em_tpv_no_user_html($atts) {
		$current_user = wp_get_current_user();
		
		//Si esta loguejat, no deixem inscriure
		if (0 != $current_user->ID ) {
			echo "<h3>Et redirigim a la pàgina de pagament... </h3> ";
			
			add_action ('wp_loaded', ' c2em_tpv_redirect_url');

			
		}
}

function  c2em_tpv_redirect_url() {
    wp_redirect( home_url() );
    exit;
}*/

/*
En el cas que està activat la opcio de pagar i pero no s'ha escollit cap preu, avisem  

function c2em_wpcf7_form_response_output($output, $class, $content, $cf) {  
	$role = '';
	$contentpa

	if ( $cf->is_posted() && isset($enable) && $enable !=1) { // Post response output for non-AJAX
		$role = 'alert';

		$submission = WPCF7_Submission::get_instance();
		$content = $submission->get_response();

		if ( $submission->is( 'mail_sent' ) ) {
				$class .= ' wpcf7-mail-sent-ok';

			$atts = array(
				'class' => trim( $class ),
				'role' => trim( $role ) );

			$atts = wpcf7_format_atts( $atts );
			
				$content=
			$output = sprintf( '<div %1$s>%2$s</div>',
				$atts, esc_html( $content ) );
		}
	}

	return $output;
}
add_filter('wpcf7_form_response_output', 'c2em_wpcf7_form_response_output',50,4);*/
?>
