<?php



function get_user_rank($rank)

{

    switch ($rank) 

    {

      case 0:

        return array('utilisateur','utilisateur');

        break;

      case 1:

        return array('administrateur','admin');

        break;

      case 2:

        return array('modérateur','moderation');

        break;

      case 3:

        return array('team pending','team-pending');

        break;

      case 4:

        return array('uploader','uploader');

        break;

    }

}



function contentFilter($content){

	$content = html_entity_decode($content);

    $pattern = '@src="([^"]+)"@';

      $result = preg_replace_callback($pattern, function($matches) {

      	//$dig = hash_hmac('sha1', $matches[1], 'b3DQEBAQ');

       // return str_replace($matches[1], 'https://dyna.yggtorrent.to/images/' . $dig .'?url=' . $matches[1], $matches[0]);

      	return str_replace($matches[1], $matches[1] , $matches[0]);

      }, $content);



      return $result;

 }





function contentFilterInternalProxy($content){

	$content = html_entity_decode($content);

    $pattern = '@src="([^"]+)"@';

      $result = preg_replace_callback($pattern, function($matches) {

      	//$dig = hash_hmac('sha1', $matches[1], 'b3DQEBAQ');

        //return str_replace($matches[1], 'https://dyna.yggtorrent.to/images/' . $dig .'?url=' . $matches[1], $matches[0]);

      	//return str_replace($matches[1], 'https://images.weserv.nl/?url='.$matches[1] , $matches[0]);

        return str_replace($matches[1], $matches[1] , $matches[0]);

      }, $content);



      return $result;

 }





function get_category_slug_wiki($category_json)  

{

		$category_json = json_decode($category_json);

	    $slug = slug($category_json->parent_category->name);

	    if(isset($category_json->sub_category)) {

			$slug .= '/'.slug($category_json->sub_category->name);

		}

	    return $slug;

}





function time_left($end) 

{

    $diff = $end - now();

    $dtF  = new \\DateTime('@0');

    $dtT  = new \\DateTime("@$diff");

    return $dtF->diff($dtT)->format('%a jours, %h heures, %i minutes et %s secondes');

}



function EscapeString ( $string )

{

    $from = array ( '\\\\', '(',')','|','-','!','@','~','"','&', '/', '^', '$', '=' );

    $to   = array ( '\\\\\\\\', '\\(','\\)','\\|','\\-','\\!','\\@','\\~','\\"', '\\&', '\\/', '\\^', '\\$', '\\=' );

    return str_replace ( $from, $to, $string );

 }

 

 function stripAccents($str) {

    return strtr(utf8_decode($str), utf8_decode('àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ'), 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');

}



function time_elapsed_string($time, $full = false) {

                 $today = time();    

                 $datediff = abs($today - $time);  

                 $difftext="";  

                 $years = floor($datediff / (365*60*60*24));  

                 $months = floor(($datediff - $years * 365*60*60*24) / (30*60*60*24));  

                 $days = floor(($datediff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));  

                 $hours= floor($datediff/3600);  

                 $minutes= floor($datediff/60);  

                 $seconds= floor($datediff);  

                 //year checker  

                 if($difftext=="")  

                 {  

                   if($years>1)  

                    $difftext="".$years." ans";  

                   elseif($years==1)  

                    $difftext="".$years." an";  

                 }  

                 //month checker  

                 if($difftext=="")  

                 {  

                    if($months>1)  

                    $difftext="".$months." mois";  

                    elseif($months==1)  

                    $difftext="".$months." mois";  

                 }  

                 //month checker  

                 if($difftext=="")  

                 {  

                    if($days>1)  

                    $difftext="".$days." jours";  

                    elseif($days==1)  

                    $difftext="".$days." jour";  

                 }  

                 //hour checker  

                 if($difftext=="")  

                 {  

                    if($hours>1)  

                    $difftext="".$hours." heures";  

                    elseif($hours==1)  

                    $difftext="".$hours." heure";  

                 }  

                 //minutes checker  

                 if($difftext=="")  

                 {  

                    if($minutes>1)  

                    $difftext="".$minutes." minutes";  

                    elseif($minutes==1)  

                    $difftext="".$minutes." minute";  

                 }  

                 //seconds checker  

                 if($difftext=="")  

                 {  

                    if($seconds>1)  

                    $difftext="".$seconds." secondes";  

                    elseif($seconds==1)  

                    $difftext="".$seconds." seconde";  

                    elseif($seconds==0)  

                    $difftext=" quelques instants";  

                    

                 }  

                 return $difftext;  

}



function bytesToSize($bytes, $decimals = 2) {

    $size = array('o','ko','Mo','Go','To','Po','Eo','Zo','Yo');

    $factor = floor((strlen($bytes) - 1) / 3);

    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];

}



function old_get_user_rank($rank)

{

    switch ($rank) 

    {

      case 0:

        return array('utilisateur','utilisateur');

        break;

      case 1:

        return array('administrateur','admin');

        break;

      case 2:

        return array('responsable modération','responsable-moderation');

        break;

      case 3:

        return array('responsable team pending','responsable-tp');

        break;

      case 4:

        return array('modérateur shoutbox','moderateur-shoutbox');

        break;

      case 5:

        return array('modérateur forum','moderateur-forum');

        break;

      case 6:

        return array('modérateur','moderateur');

        break;

      case 7:

        return array('team pending','team-pending');

        break;

      case 8:

        return array('team vérole','team-verole');

        break;

      case 9:

        return array('responsable radio','responsable-radio');

        break;

      case 10:

        return array('team radio','team-radio');

        break;

      case 11:

        return array('uploader','uploader');

        break;

      case 12:

        return array('power seeder','power-seeder');

        break;

    }



}



function remove_accent($str)

{

  $a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð',

                'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã',

                'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ',

                'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ',

                'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę',

                'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī',

                'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'Ĳ', 'ĳ', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ',

                'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ŉ', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ',

                'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 

                'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 

                'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ',

                'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');



  $b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O',

                'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c',

                'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u',

                'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D',

                'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g',

                'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K',

                'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o',

                'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S',

                's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W',

                'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i',

                'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');

  return str_replace($a, $b, $str);

}





function slug($str){

 $str =  str_replace(".","-",$str);

  return mb_strtolower(preg_replace(array('/[^a-zA-Z0-9 \\'-]/', '/[ -\\']+/', '/^-|-$/'),

  array('', '-', ''), remove_accent($str)));

}



function pagination_html()

{

        $config['full_tag_open'] = '<section class="content"><ul class="pagination">';

        $config['full_tag_close'] = '</ul></section>';

        $config['first_link'] = '« première';

        $config['first_tag_open'] = '<li>';

        $config['first_tag_close'] = '</li>';

        $config['last_link'] = 'dernière »';

        $config['last_tag_open'] = '<li>';

        $config['last_tag_close'] = '</li>';

        $config['next_link'] = 'suivante →';

        $config['next_tag_open'] = '<li>';

        $config['next_tag_close'] = '</li>';

        $config['prev_link'] = '← précédente';

        $config['prev_tag_open'] = '<li>';

        $config['prev_tag_close'] = '</li>';

        $config['cur_tag_open'] = '<li class="active"><a href="">';

        $config['cur_tag_close'] = '</a></li>';

        $config['num_tag_open'] = '<li>';

        $config['num_tag_close'] = '</li>';;

        return $config;

}



function pagination_html_no_content()

{

        $config['full_tag_open'] = '<ul class="pagination">';

        $config['full_tag_close'] = '</ul>';

        $config['first_link'] = '« première';

        $config['first_tag_open'] = '<li>';

        $config['first_tag_close'] = '</li>';

        $config['last_link'] = 'dernière »';

        $config['last_tag_open'] = '<li>';

        $config['last_tag_close'] = '</li>';

        $config['next_link'] = 'suivante →';

        $config['next_tag_open'] = '<li>';

        $config['next_tag_close'] = '</li>';

        $config['prev_link'] = '← précédente';

        $config['prev_tag_open'] = '<li>';

        $config['prev_tag_close'] = '</li>';

        $config['cur_tag_open'] = '<li class="active"><a href="">';

        $config['cur_tag_close'] = '</a></li>';

        $config['num_tag_open'] = '<li>';

        $config['num_tag_close'] = '</li>';;

        return $config;

}



function add_parameter_url($parameter,$value)  {

    $CI =& get_instance();

    $parameters = $CI->input->get();

    unset($parameters['page']);

    if(empty($parameters['sort']) && empty($parameters['order'])) {

      $parameters['order'] = 'desc';

      $parameters['sort'] = 'publish_date';

    } else {

	    if($parameter == 'sort') {

	        if($parameters['sort'] != $value) {

	            if(empty($parameters['sort']) && $value == 'publish_date')

	                $parameters['order'] = 'asc';

	            else

	               $parameters['order'] = 'desc'; 

	        }

	        if($parameters['sort'] == $value) {

	            if(empty($parameters['order']))

	               $parameters['order'] = 'desc';  

	            else if($parameters['order'] == 'desc') 

	               $parameters['order'] = 'asc';

	            else

	               $parameters['order'] = 'desc';      

	        }



	    } 

	}

    //  on met la paramètre

    $parameters[$parameter] = $value;

    return http_build_query($parameters);

}



function generate_sort_icon($query_string) {

    $CI =& get_instance();

    parse_str($query_string, $out);

    // si c'est l'url active

    if($out['sort'] == $CI->input->get('sort')) {

        if($out['order'] == 'asc')

            return '<i class="fa fa-sort-down"></i>';

        else

            return '<i class="fa fa-sort-up"></i>';

    }

    else if($out['sort'] == 'publish_date' && empty($CI->input->get('sort')))

        return '<i class="fa fa-sort-down"></i>';

    else

        return '<i class="fa fa-sort"></i>';

}



function bbcode_to_html($bbtext){

  $bbtags = array(

    '[heading1]' => '<h1>','[/heading1]' => '</h1>',

    '[heading2]' => '<h2>','[/heading2]' => '</h2>',

    '[heading3]' => '<h3>','[/heading3]' => '</h3>',

    '[h1]' => '<h1>','[/h1]' => '</h1>',

    '[h2]' => '<h2>','[/h2]' => '</h2>',

    '[h3]' => '<h3>','[/h3]' => '</h3>',



    '[paragraph]' => '<p>','[/paragraph]' => '</p>',

    '[para]' => '<p>','[/para]' => '</p>',

    '[p]' => '<p>','[/p]' => '</p>',

    '[left]' => '<p style="text-align:left;">','[/left]' => '</p>',

    '[right]' => '<p style="text-align:right;">','[/right]' => '</p>',

    '[center]' => '<p style="text-align:center;">','[/center]' => '</p>',

    '[justify]' => '<p style="text-align:justify;">','[/justify]' => '</p>',



    '[bold]' => '<span style="font-weight:bold;">','[/bold]' => '</span>',

    '[italic]' => '<span style="font-weight:bold;">','[/italic]' => '</span>',

    '[underline]' => '<span style="text-decoration:underline;">','[/underline]' => '</span>',

    '[b]' => '<span style="font-weight:bold;">','[/b]' => '</span>',

    '[i]' => '<span style="font-weight:bold;">','[/i]' => '</span>',

    '[u]' => '<span style="text-decoration:underline;">','[/u]' => '</span>',

    '[break]' => '<br>',

    '[br]' => '<br>',

    '[newline]' => '<br>',

    '[nl]' => '<br>',

    

    '[unordered_list]' => '<ul>','[/unordered_list]' => '</ul>',

    '[list]' => '<ul>','[/list]' => '</ul>',

    '[ul]' => '<ul>','[/ul]' => '</ul>',

    

    '[ordered_list]' => '<ol>','[/ordered_list]' => '</ol>',

    '[ol]' => '<ol>','[/ol]' => '</ol>',

    '[list_item]' => '<li>','[/list_item]' => '</li>',

    '[li]' => '<li>','[/li]' => '</li>',

        

    '[*]' => '<li>','[/*]' => '</li>',

    '[code]' => '<code>','[/code]' => '</code>',

    '[preformatted]' => '<pre>','[/preformatted]' => '</pre>',

    '[pre]' => '<pre>','[/pre]' => '</pre>',            

  );

    

  $bbtext = str_ireplace(array_keys($bbtags), array_values($bbtags), $bbtext);



  $bbextended = array(

    "/\\[url](.*?)\\[\\/url]/i" => "<a href=\\"http://$1\\" title=\\"$1\\">$1</a>",

    "/\\[url=(.*?)\\](.*?)\\[\\/url\\]/i" => "<a href=\\"$1\\" title=\\"$1\\">$2</a>",

    "/\\[email=(.*?)\\](.*?)\\[\\/email\\]/i" => "<a href=\\"mailto:$1\\">$2</a>",

    "/\\[mail=(.*?)\\](.*?)\\[\\/mail\\]/i" => "<a href=\\"mailto:$1\\">$2</a>",

    "/\\[img\\]([^[]*)\\[\\/img\\]/i" => "<img src=\\"$1\\" alt=\\" \\" />",

    "/\\[image\\]([^[]*)\\[\\/image\\]/i" => "<img src=\\"$1\\" alt=\\" \\" />",

    "/\\[image_left\\]([^[]*)\\[\\/image_left\\]/i" => "<img src=\\"$1\\" alt=\\" \\" class=\\"img_left\\" />",

    "/\\[image_right\\]([^[]*)\\[\\/image_right\\]/i" => "<img src=\\"$1\\" alt=\\" \\" class=\\"img_right\\" />",

  );



  foreach($bbextended as $match=>$replacement){

    $bbtext = preg_replace($match, $replacement, $bbtext);

  }

  return $bbtext;

}





function alert($type,$msg) {

    return '<div class="alert alert-'.$type.'">'.$msg.'</div>';

}



function escape_javascript_string($str){

  // if php supports json_encode, use it (support utf-8)

  if (function_exists('json_encode')) {

    return json_encode($str);

  }

  // php 5.1 or lower not support json_encode, so use str_replace and addcslashes

  // remove carriage return

  $str = str_replace("\\r", '', (string) $str);

  // escape all characters with ASCII code between 0 and 31

  $str = addcslashes($str, "\\0..\\37'\\\\");

  // escape double quotes

  $str = str_replace('"', '\\"', $str);

  // replace \
 with double quotes

  $str = str_replace("\
", '\
', $str); 

  return "'{$str}'";

}





function generatePasskey($length = 32) {

    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

    $count = mb_strlen($chars);



    for ($i = 0, $result = ''; $i < $length; $i++) {

        $index = rand(0, $count - 1);

        $result .= mb_substr($chars, $index, 1);

    }



    return $result;

}



function get_cat_icon($id) {

  $icon_sub_cat['tag_animation'] = 2178;

  $icon_sub_cat['tag_animation-serie'] = 2179;

  $icon_sub_cat['tag_concert'] = 2180;

  $icon_sub_cat['tag_documentaire'] = 2181;

  $icon_sub_cat['tag_emission-tv'] = 2182;

  $icon_sub_cat['tag_film'] = 2183;

  $icon_sub_cat['tag_serie-tv'] = 2184;

  $icon_sub_cat['tag_spectacle'] = 2185; 

  $icon_sub_cat['tag_sport'] = 2186;

  $icon_sub_cat['tag_video-clip'] = 2187;

  $icon_sub_cat['tag_karaoke'] = 2147;

  $icon_sub_cat['tag_musique'] = 2148;

  $icon_sub_cat['tag_podcast'] = 2150;

  $icon_sub_cat['tag_sample'] = 2149;

  $icon_sub_cat['tag_autre-application'] = 2177;

  $icon_sub_cat['tag_formation'] = 2176;

  $icon_sub_cat['tag_linux-application'] = 2171;

  $icon_sub_cat['tag_macos-application'] = 2172;

  $icon_sub_cat['tag_smartphone-application'] = 2174;

  $icon_sub_cat['tag_tablette-application'] = 2175;

  $icon_sub_cat['tag_windows-application'] = 2173;

  $icon_sub_cat['tag_autre-jeu'] = 2167;

  $icon_sub_cat['tag_linux-jeu'] = 2159;

  $icon_sub_cat['tag_macos-jeu'] = 2160;

  $icon_sub_cat['tag_microsoft'] = 2162;

  $icon_sub_cat['tag_nintendo'] = 2163;

  $icon_sub_cat['tag_smartphone-jeu'] = 2165; 

  $icon_sub_cat['tag_sony'] = 2164;

  $icon_sub_cat['tag_tablette-jeu'] = 2166; 

  $icon_sub_cat['tag_windows-jeu'] = 2161;

  $icon_sub_cat['tag_audio-ebook'] = 2151;

  $icon_sub_cat['tag_bd'] = 2152;

  $icon_sub_cat['tag_comics'] = 2153;

  $icon_sub_cat['tag_livres'] = 2154;

  $icon_sub_cat['tag_mangas'] = 2155;

  $icon_sub_cat['tag_presse'] = 2156;

  $icon_sub_cat['tag_emulateur'] = 2157;

  $icon_sub_cat['tag_roms'] = 2158;

  $icon_sub_cat['tag_applications-gps'] = 2168;

  $icon_sub_cat['tag_cartes'] = 2169;

  $icon_sub_cat['tag_divers-gps'] = 2170;

  $icon_sub_cat['tag_film-xxx'] = 2189;

  $icon_sub_cat['tag_hentai-xxx'] = 2190;

  $icon_sub_cat['tag_images-xxx'] = 2191;

  //array_flip($icon_sub_cat);

  return array_flip($icon_sub_cat)[$id];

}

