<?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'] = '&laquo; première';
        $config['first_tag_open'] = '<li>';
        $config['first_tag_close'] = '</li>';
        $config['last_link'] = 'dernière &raquo;';
        $config['last_tag_open'] = '<li>';
        $config['last_tag_close'] = '</li>';
        $config['next_link'] = 'suivante &rarr;';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';
        $config['prev_link'] = '&larr; 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'] = '&laquo; première';
        $config['first_tag_open'] = '<li>';
        $config['first_tag_close'] = '</li>';
        $config['last_link'] = 'dernière &raquo;';
        $config['last_tag_open'] = '<li>';
        $config['last_tag_close'] = '</li>';
        $config['next_link'] = 'suivante &rarr;';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';
        $config['prev_link'] = '&larr; 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 \n with double quotes
  $str = str_replace("\n", '\n', $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];
}
