src/Controller/BaseController.php line 129

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Ceviri;
  4. use App\Entity\Dil;
  5. use Gumlet\ImageResize;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use App\Controller;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. class BaseController extends AbstractController
  11. {
  12.    public function site_anaLink(){
  13.         $dil $this->get('session')->get('dil');
  14.         if ($this->dilSay()>1){
  15.             return $this->ayarlar('siteYolu').$dil['kisa'].'/';
  16.         }else{
  17.             return $this->ayarlar('siteYolu');
  18.         }
  19.     }
  20.     function yapayZeka($promp)
  21.     {
  22.         ini_set('max_execution_time'0);
  23.         $data = [];
  24.         $data['model'] = 'gpt-5.2';
  25.         $data['input'] = $promp;
  26.         $curl curl_init();
  27.         curl_setopt_array($curl, array(
  28.             CURLOPT_URL => 'https://api.openai.com/v1/responses',
  29.             CURLOPT_RETURNTRANSFER => true,
  30.             CURLOPT_ENCODING => '',
  31.             CURLOPT_MAXREDIRS => 10,
  32.             CURLOPT_TIMEOUT => 0,
  33.             CURLOPT_FOLLOWLOCATION => true,
  34.             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  35.             CURLOPT_CUSTOMREQUEST => 'POST',
  36.             CURLOPT_POSTFIELDS => json_encode($data),
  37.             CURLOPT_HTTPHEADER => array(
  38.                 'Authorization: Bearer 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',
  39.                 'Content-Type: application/json'
  40.             ),
  41.         ));
  42.         $response curl_exec($curl);
  43.         $response json_decode($responsetrue);
  44.         curl_close($curl);
  45. ;
  46.         return json_decode($response['output'][0]['content'][0]['text'], true);
  47.     }
  48.     function botArama($bas$son$yazi)
  49.     {
  50.         @preg_match_all('/' preg_quote($bas'/') .
  51.             '(.*?)'preg_quote($son'/').'/i'$yazi$m);
  52.         return @$m[1];
  53.     }
  54.     function GetIP()
  55.     {
  56.         if (getenv("HTTP_CLIENT_IP")) {
  57.             $ip getenv("HTTP_CLIENT_IP");
  58.         } elseif (getenv("HTTP_X_FORWARDED_FOR")) {
  59.             $ip getenv("HTTP_X_FORWARDED_FOR");
  60.             if (strstr($ip',')) {
  61.                 $tmp explode(','$ip);
  62.                 $ip trim($tmp[0]);
  63.             }
  64.         } else {
  65.             $ip getenv("REMOTE_ADDR");
  66.         }
  67.         return $ip;
  68.     }
  69.     public function IdBul($entity,$id){
  70.         $em=$this->getDoctrine()->getManager();
  71.         $qb $em->createQueryBuilder();
  72.         $veriler=$qb->select('x.id')
  73.             ->from('App:'.$entity'x')
  74.             ->join('x.dil','d')
  75.             ->where('x.dilgrup='.$id)
  76.             ->groupBy('x.dil')
  77.             ->getQuery()
  78.             ->getScalarResult();
  79.         return $veriler[0]['id'];
  80.     }
  81.     function varsayilanDil(){
  82.         $em=$this->getDoctrine()->getManager();
  83.         $qb $em->createQueryBuilder();
  84.         $diller=$qb->select('d.id,d.kisa,d.uzun')
  85.             ->from('App:Dil''d')
  86.             ->where("d.aktif=1 and d.varsayilan=1")
  87.             ->orderBy('d.id')
  88.             ->getQuery()
  89.             ->getScalarResult();
  90.         return $diller[0];
  91.     }
  92.     function gecerliAktifDil(){
  93.         $em=$this->getDoctrine()->getManager();
  94.         $qb $em->createQueryBuilder();
  95.         $diller=$qb->select('d.id')
  96.             ->from('App:Dil''d')
  97.             ->where("d.aktif=1")
  98.             ->orderBy('d.id')
  99.             ->getQuery()
  100.             ->getScalarResult();
  101.         return $diller[0]['id'];
  102.     }
  103.     public function ayarlar($alan,$dil='')
  104.     {
  105.         $em=$this->getDoctrine()->getManager();
  106.         if($dil=='') {
  107.             $qb $em->createQueryBuilder();
  108.             $dd $qb->select("e.id")
  109.                 ->from('App:Dil''e')
  110.                 ->where('e.aktif=1 and e.varsayilan=1')
  111.                 ->getQuery()
  112.                 ->getScalarResult();
  113.             $dil=$dd[0]['id'];
  114.         }
  115.         $qb $em->createQueryBuilder();
  116.         $ayarlar=$qb->select("e.$alan")
  117.             ->from('App:Ayarlar''e')
  118.             ->where('e.dil='.$dil)
  119.             ->getQuery()
  120.             ->getScalarResult();
  121.         return $ayarlar[0][$alan];
  122.     }
  123.     function uzantiBul($type){
  124.         if($type=='image/jpeg'){ return '.jpg'; }
  125.         elseif($type=='image/png'){ return '.png'; }
  126.         elseif($type=='image/gif'){ return '.gif'; }
  127.         elseif($type=='video/mp4'){ return '.mp4'; }
  128.         elseif($type=='application/rtf'){ return '.rtf'; }
  129.         elseif($type=='text/plain'){ return '.txt'; }
  130.         elseif($type=='application/vnd.ms-powerpoint'){ return '.ppt'; }
  131.         elseif($type=='application/vnd.openxmlformats-officedocument.presentationml.presentation'){ return '.pptx'; }
  132.         elseif($type=='application/xml'){ return '.xml'; }
  133.         elseif($type=='application/pdf'){ return '.pdf'; }
  134.         elseif($type=='text/xml'){ return '.xml'; }
  135.         elseif($type=='application/vnd.ms-excel'){ return '.xls'; }
  136.         elseif($type=='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'){ return '.xlsx'; }
  137.         elseif($type=='application/msword'){ return '.doc'; }
  138.         elseif($type=='application/zip'){ return '.zip'; }
  139.         elseif($type=='application/vnd.openxmlformats-officedocument.wordprocessingml.document'){ return '.docx'; }
  140.         else{ return '.belirsiz'; }
  141.     }
  142.     function rasgele($uzunluk)
  143.     {
  144.         $key='';
  145.         $karakterler "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  146.         for($i=0;$i<$uzunluk;$i++)
  147.         {
  148.             $key .= $karakterler{rand(0,35)};
  149.         }
  150.         return $key;
  151.     }
  152.     function rasgeleSayi($uzunluk)
  153.     {
  154.         $key='';
  155.         $karakterler "1234567890";
  156.         for($i=0;$i<$uzunluk;$i++)
  157.         {
  158.             $key .= $karakterler{rand(0,35)};
  159.         }
  160.         return $key;
  161.     }
  162.     function son_dilgrup($entity){
  163.         $em=$this->getDoctrine()->getManager();
  164.         $qb $em->createQueryBuilder();
  165.         $data=$qb->select('h.dilgrup')
  166.             ->from('App:'.$entity'h')
  167.             ->orderBy('h.dilgrup','desc')
  168.             ->getQuery()
  169.             ->getScalarResult();
  170.         if(count($data)>0){
  171.             $dilgrup intval($data[0]['dilgrup'])+1;
  172.         }else{
  173.             $dilgrup 1;
  174.         }
  175.         return $dilgrup;
  176.     }
  177.     function sonGrup($entity){
  178.         $em=$this->getDoctrine()->getManager();
  179.         $qb $em->createQueryBuilder();
  180.         $data=$qb->select('h.grup')
  181.             ->from('App:'.$entity'h')
  182.             ->orderBy('h.grup','desc')
  183.             ->getQuery()
  184.             ->getScalarResult();
  185.         if(count($data)>0){
  186.             $dilgrup intval($data[0]['grup'])+1;
  187.         }else{
  188.             $dilgrup 1;
  189.         }
  190.         return $dilgrup;
  191.     }
  192.     function seo($url,$dil=1){
  193.         if($dil==1) {
  194.             $tr = array('ÅŸ''Åž''ı''I''İ''ÄŸ''Äž''ü''Ü''ö''Ö''Ç''ç''('')''/'':'',');
  195.             $eng = array('s''s''i''i''i''g''g''u''u''o''o''c''c''''''-''-''');
  196.             $s str_replace($tr$eng$url);
  197.             $find = array('/[^A-Za-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');
  198.             $repl = array('-''-''-');
  199.             $s preg_replace($find$repl$s);
  200.             $s strtolower($s);
  201.             $s preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;amp;.+?;/'''$s);
  202.             $s preg_replace('/\s+/''-'$s);
  203.             $s preg_replace('|-+|''-'$s);
  204.             $s preg_replace('/#/'''$s);
  205.             $s str_replace('.'''$s);
  206.             $s trim($s'-');
  207.             $s strtolower($s);
  208.             return $s;
  209.         }else{
  210.             $tr = array('('')''/'':'',');
  211.             $eng = array('''''-''-''');
  212.             $s str_replace($tr$eng$url);
  213.             $find = array('/[^A-Za-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');
  214.             $repl = array('-''-''-');
  215.             $s preg_replace($find$repl$s);
  216.             $s strtolower($s);
  217.             $s preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;amp;.+?;/'''$s);
  218.             $s preg_replace('/\s+/''-'$s);
  219.             $s preg_replace('|-+|''-'$s);
  220.             $s preg_replace('/#/'''$s);
  221.             $s str_replace('.'''$s);
  222.             $s trim($s'-');
  223.             $s strtolower($s);
  224.             return $s;
  225.         }
  226.     }
  227.     function yandexToken(){
  228.         if ($this->get('session')->get('iamToken')){
  229.             return $this->get('session')->get('iamToken');
  230.         }else {
  231.             $curl curl_init();
  232.             curl_setopt_array($curl, array(
  233.                 CURLOPT_URL => 'https://iam.api.cloud.yandex.net/iam/v1/tokens',
  234.                 CURLOPT_RETURNTRANSFER => true,
  235.                 CURLOPT_ENCODING => '',
  236.                 CURLOPT_MAXREDIRS => 10,
  237.                 CURLOPT_TIMEOUT => 0,
  238.                 CURLOPT_FOLLOWLOCATION => true,
  239.                 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  240.                 CURLOPT_CUSTOMREQUEST => 'POST',
  241.                 CURLOPT_POSTFIELDS => '{
  242.     "yandexPassportOauthToken":"y0_AgAAAAAZYEETAATuwQAAAAEToav7AADO8OOAY3pJJ4glGitLIJdp7BdHYg"
  243. }',
  244.                 CURLOPT_HTTPHEADER => array(
  245.                     'Content-Type: application/json'
  246.                 ),
  247.             ));
  248.             $response curl_exec($curl);
  249.             $response json_decode($responsetrue);
  250.             $this->get('session')->set('iamToken'$response['iamToken']);
  251.             return $response['iamToken'];
  252.         }
  253.     }
  254.     function cevir($deger,$x,$dil){
  255.         if ($deger==''){
  256.             return "";
  257.         }
  258.         $token $this->yandexToken();
  259.         $curl curl_init();
  260.         curl_setopt_array($curl, array(
  261.             CURLOPT_URL => 'https://translate.api.cloud.yandex.net/translate/v2/translate',
  262.             CURLOPT_RETURNTRANSFER => true,
  263.             CURLOPT_ENCODING => '',
  264.             CURLOPT_MAXREDIRS => 10,
  265.             CURLOPT_TIMEOUT => 0,
  266.             CURLOPT_FOLLOWLOCATION => true,
  267.             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  268.             CURLOPT_CUSTOMREQUEST => 'POST',
  269.             CURLOPT_POSTFIELDS =>'{
  270.     "folderId": "b1gd9bqb7ihnkc2cl4kg",
  271.     "texts": "'.$deger.'",
  272.     "targetLanguageCode": "'.$dil.'"
  273. }',
  274.             CURLOPT_HTTPHEADER => array(
  275.                 'Authorization: Bearer '.$token,
  276.                 'Content-Type: application/json'
  277.             ),
  278.         ));
  279.         $response curl_exec($curl);
  280.         $response json_decode($responsetrue);
  281.         return $response['translations'][0]['text'];
  282.     }
  283.     public function ceviri($deger,$suanDil='')
  284.     {
  285.         $em $this->getDoctrine()->getManager();
  286.         if ($suanDil==''){
  287.             $suanDil $this->get('session')->get('dil');
  288.         } else {
  289.             $qb $em->createQueryBuilder();
  290.             $dill=$qb->select('d.id,d.kisa,d.uzun')
  291.                 ->from('App:Dil''d')
  292.                 ->where('d.id='.$suanDil)
  293.                 ->getQuery()
  294.                 ->getScalarResult();
  295.             $suanDil $dill[0];
  296.         }
  297.         $qb $em->createQueryBuilder();
  298.         $ceviriTara=$qb->select('c.deger,c.id')
  299.             ->from('App:Ceviri''c')
  300.             ->join('c.dil','d')
  301.             ->where("c.deger='$deger'")
  302.             ->getQuery()
  303.             ->getScalarResult();
  304.         if (count($ceviriTara) > 0) {
  305.             if ($suanDil['id'] != 1) {
  306.                 $qb $em->createQueryBuilder();
  307.                 $ceviriTara2=$qb->select('c.deger')
  308.                     ->from('App:Ceviri''c')
  309.                     ->join('c.dil','d')
  310.                     ->where("d.id=".$suanDil['id']." and c.trId=".$ceviriTara[0]['id'])
  311.                     ->getQuery()
  312.                     ->getScalarResult();
  313.                 if (count($ceviriTara2) > 0) {
  314.                     $deger $ceviriTara2[0]['deger'];
  315.                 } else {
  316.                     if($deger=='İletiÅŸim') {
  317.                     }
  318.                     if ($suanDil['id'] != '1') {
  319.                         $deger $this->cevir($deger,'',$suanDil['kisa']);
  320.                         $dill $em->getReference(Dil::class,$suanDil['id']);
  321.                         $ceviri = new Ceviri();
  322.                         $ceviri->setDil($dill);
  323.                         $ceviri->setDeger($deger);
  324.                         $ceviri->setTrId($ceviriTara[0]['id']);
  325.                         $em->persist($ceviri);
  326.                         $em->flush();
  327.                     }
  328.                 }
  329.             }
  330.         }
  331.         else {
  332.             if ($suanDil['id'] == 1) {
  333.                 $dill $em->getReference(Dil::class,$suanDil['id']);
  334.                 $ceviri = new Ceviri();
  335.                 $ceviri->setDil($dill);
  336.                 $ceviri->setDeger($deger);
  337.                 $ceviri->setTrId(0);
  338.                 $em->persist($ceviri);
  339.                 $em->flush();
  340.             }
  341.             else {
  342.                 $dilTr $em->getReference(Dil::class,1);
  343.                 $ceviri = new Ceviri();
  344.                 $ceviri->setDil($dilTr);
  345.                 $ceviri->setDeger($deger);
  346.                 $ceviri->setTrId(0);
  347.                 $em->persist($ceviri);
  348.                 $em->flush();
  349.                 $deger $this->cevir($deger,'',$suanDil['kisa']);
  350.                 $dill $em->getReference(Dil::class,$suanDil['id']);
  351.                 $ceviriDil = new Ceviri();
  352.                 $ceviriDil->setDil($dill);
  353.                 $ceviriDil->setDeger($deger);
  354.                 $ceviriDil->setTrId($ceviri->getId());
  355.                 $em->persist($ceviriDil);
  356.                 $em->flush();
  357.             }
  358.         }
  359.         return $deger;
  360.     }
  361.     public function yetkiler($yetkiler){
  362.         if ($yetkiler==''){
  363.             return 1;
  364.         }
  365.         $yetkiler explode('~',str_replace(array('{','}'),array('',''),substr($yetkiler,0,strlen($yetkiler)-1)));
  366.         $return = [];
  367.         foreach ($yetkiler as $y){
  368.             $x explode(':',$y);
  369.             $z explode(',',$x[1]);
  370.             $return[$x[0]]['gorme']=$z[0];
  371.             $return[$x[0]]['ekleme']=$z[1];
  372.             $return[$x[0]]['duzenleme']=$z[2];
  373.             $return[$x[0]]['silme']=$z[3];
  374.         }
  375.         if($this->getUser()->getRoles()[0]=='ROLE_SUPERADMIN' or $this->getUser()->getRoles()[0]=='ROLE_ADMIN'){
  376.             return 1;
  377.         }else{
  378.             return $return;
  379.         }
  380.     }
  381.     public function domainSorgula(){
  382.         $em $this->getDoctrine()->getManager();
  383.         $suan = new \DateTime('now');
  384.         $tarih = new \DateTime($this->ayarlar('domainTarih'));
  385.         if (empty($this->ayarlar('domainTarih')) or $tarih->format('U') < $suan->format('U')) {
  386.             $domain str_replace(array('/''https:''http:'), array(''''''), $this->ayarlar('siteYolu'));
  387.             $ch curl_init();
  388.             curl_setopt($chCURLOPT_URL"https://www.whois.com/whois/" $domain);
  389.             curl_setopt($chCURLOPT_RETURNTRANSFER1);
  390.             curl_setopt($chCURLOPT_REFERER'https://www.google.com/');
  391.             $output curl_exec($ch);
  392.             curl_close($ch);
  393.             $dBol explode('.'$domain);
  394.             if (count($dBol) == 2) {
  395.                 preg_match_all('@<pre class="df-raw" id="registrarData">(.*?)</pre>@si'$output$icerik);
  396.                 $tarihB explode('Registrar Registration Expiration Date:'$icerik[0][0]);
  397.                 $tarihB explode('Registrar'$tarihB[1]);
  398.                 $tarih str_replace('T'' '$tarihB[0]);
  399.             } else {
  400.                 preg_match_all('@<pre class="df-raw" id="registryData">(.*?)</pre>@si'$output$icerik);
  401.                 $tarihB explode('Expires on..............:'$icerik[0][0]);
  402.                 $tarihB explode('.'$tarihB[1]);
  403.                 $tarih $tarihB[0];
  404.             }
  405.             //echo $tarih;
  406.             $tarih = new \DateTime($tarih);
  407.             if ($this->ayarlar('debug') != 1) {
  408.                 $qb $em->createQueryBuilder();
  409.                 $q $qb->update('App:Ayarlar''a')
  410.                     ->set('a.domainTarih'':domainTarih')
  411.                     ->setParameter('domainTarih'$tarih)
  412.                     ->getQuery()
  413.                     ->execute();
  414.             }
  415.         }
  416.         return $tarih;
  417.     }
  418.     public function hostingSorgulama(){
  419.         $em $this->getDoctrine()->getManager();
  420.         $suan = new \DateTime('now');
  421.         if (empty($this->ayarlar('hostingTarih'))) {
  422.             $domain str_replace(array('/''https:''http:'), array(''''''), $this->ayarlar('siteYolu'));
  423.             $ch curl_init();
  424.             curl_setopt($chCURLOPT_URL"https://174gj41p1.ni.net.tr:2087/json-api/listaccts?api.version=1&search=$domain&searchtype=domain");
  425.             curl_setopt($chCURLOPT_USERPWD'root' ":" 'aKuosv}_x3{K');
  426.             curl_setopt($chCURLOPT_RETURNTRANSFER1);
  427.             $output curl_exec($ch);
  428.             curl_close($ch);
  429.             $output json_decode($output);
  430.             $baslangicTarihi = new \DateTime();
  431.             $baslangicTarihi->setTimestamp($output->data->acct[0]->unix_startdate);
  432.             $baslangicTarihi->modify('+1 year');
  433.             if ($this->ayarlar('debug')!=1) {
  434.                 $qb $em->createQueryBuilder();
  435.                 $q $qb->update('App:Ayarlar''a')
  436.                     ->set('a.hostingTarih'':hostingTarih')
  437.                     ->setParameter('hostingTarih'$baslangicTarihi)
  438.                     ->getQuery()
  439.                     ->execute();
  440.             }
  441.         }else{
  442.             $baslangicTarihi = new \DateTime($this->ayarlar('hostingTarih'));
  443.             if ($baslangicTarihi->format('U') < $suan->format('U')) {
  444.                 if($baslangicTarihi->format('d.m.Y')!=$suan->format('d.m.Y')){
  445.                     $baslangicTarihi->modify('+1 year');
  446.                     if ($this->ayarlar('debug')!=1) {
  447.                         $qb $em->createQueryBuilder();
  448.                         $q $qb->update('App:Ayarlar''a')
  449.                             ->set('a.hostingTarih'':hostingTarih')
  450.                             ->setParameter('hostingTarih'$baslangicTarihi)
  451.                             ->getQuery()
  452.                             ->execute();
  453.                     }
  454.                 }
  455.             }
  456.         }
  457.         return $baslangicTarihi;
  458.     }
  459.     public function dilSay(){
  460.         $em $this->getDoctrine()->getManager();
  461.         $qb $em->createQueryBuilder();
  462.         $ayarlar=$qb->select("e.id")
  463.             ->from('App:Dil''e')
  464.             ->where('e.aktif=1')
  465.             ->getQuery()
  466.             ->getScalarResult();
  467.         return count($ayarlar);
  468.     }
  469.     function altKategoriListeSiteMap($dilgrup,$sSeo,$dil){
  470.         $em $this->getDoctrine()->getManager();
  471.         $qb $em->createQueryBuilder();
  472.         $kategoriler=$qb->select('k.dilgrup,k.seourl,d.kisa as dKisa,k.ustid')
  473.             ->from('App:Kategori''k')
  474.             ->join('k.dil','d')
  475.             ->where('k.ustid='.$dilgrup.' and d.id='.$dil)
  476.             ->orderBy('k.sira','ASC')
  477.             ->getQuery()
  478.             ->getScalarResult();
  479.         $siteyolu $this->ayarlar('siteYolu');
  480.         $suan = new \DateTime('now');
  481.         $veriler='';
  482.         foreach ($kategoriler as $k) {
  483.             if ($this->dilSay() > 1) {
  484.                 $veriler .= '<url>
  485.                                   <loc>' $siteyolu .$k['dKisa'].'/'.$sSeo.'/'.$this->altKategoriGeriYaz($k['ustid'],$dil) .$k['seourl'].'</loc>
  486.                                   <lastmod>' $suan->format('Y-m-d') . 'T' $suan->format('H:i:s') . '+00:00</lastmod>
  487.                                   <priority>0.80</priority>
  488.                                 </url>';
  489.             } else {
  490.                 $veriler .= '<url>
  491.                                   <loc>' $siteyolu .$sSeo.'/'.$this->altKategoriGeriYaz($k['ustid'],$dil) .$k['seourl'].'</loc>
  492.                                   <lastmod>' $suan->format('Y-m-d') . 'T' $suan->format('H:i:s') . '+00:00</lastmod>
  493.                                   <priority>0.80</priority>
  494.                                 </url>';
  495.             }
  496.             $veriler .= $this->altKategoriListeSiteMap($k['dilgrup'], $sSeo,$dil);;
  497.         }
  498.         return $veriler;
  499.     }
  500.     function altKategoriGeriYaz($ustid,$dil=1){
  501.         $em $this->getDoctrine()->getManager();
  502.         $qb $em->createQueryBuilder();
  503.         $kategoriler=$qb->select('k.id,k.dilgrup,k.adi,k.seourl,k.ustid')
  504.             ->from('App:Kategori''k')
  505.             ->join('k.dil','d')
  506.             ->where('k.dilgrup='.$ustid.' and d.id='.$dil)
  507.             ->groupBy('k.dilgrup')
  508.             ->orderBy('k.sira','ASC')
  509.             ->getQuery()
  510.             ->getScalarResult();
  511.         $veriler='';
  512.         foreach ($kategoriler as $k){
  513.             $veriler.=$this->altKategoriGeriYaz($k['ustid'],$dil).$k['seourl'].'/';
  514.         }
  515.         return $veriler;
  516.     }
  517.     public function iletisimBilgileri($alan){
  518.         $em $this->getDoctrine()->getManager();
  519.         $dil $this->get('session')->get('dil');
  520.         $qb $em->createQueryBuilder();
  521.         $iletisim=$qb->select('s.'.$alan)
  522.             ->from('App:Iletisim''s')
  523.             ->join('s.dil''d')
  524.             ->where('d.id='.$dil['id'])
  525.             ->getQuery()
  526.             ->getScalarResult();
  527.         return $iletisim[0][$alan];
  528.     }
  529.     public function imageResizer($resim,$resim2,$boyut=800){
  530.         $resimBol explode('.',$resim);
  531.         $uzanti $resimBol[count($resimBol)-1];
  532.         $yol 'gecici_yukleme/'.$resim;
  533.         $yol2 'gecici_yukleme/'.$resim2.'.webp';
  534.         list($width$height) = getimagesize($yol);
  535.         $oran $width $boyut;
  536.         $yeni_genislik $width $oran;
  537.         $yeni_yukseklik $height $oran;
  538.         if ($uzanti=='jpeg' or $uzanti=='jpg' or $uzanti=='JPEG' or $uzanti=='JPG'){
  539.             $mevcut_resim imagecreatefromjpeg($yol);
  540.         }else{
  541.             $mevcut_resim imagecreatefrompng($yol);
  542.         }
  543.         $yeni_resim imagecreatetruecolor($yeni_genislik$yeni_yukseklik);
  544.         imageAlphaBlending($yeni_resimfalse);
  545.         imageSaveAlpha($yeni_resimtrue);
  546. // By default, the canvas is black, so make it transparent
  547.         $trans imagecolorallocatealpha($yeni_resim000127);
  548.         imagefilledrectangle($yeni_resim00$yeni_genislik 1$yeni_yukseklik 1$trans);
  549.         imagecopyresampled($yeni_resim$mevcut_resim0000$yeni_genislik$yeni_yukseklik$width$height);
  550.         @unlink($yol);
  551.         imagewebp($yeni_resim$yol2 );
  552.         return $resim2.'.webp';
  553.     }
  554.     public function removeEntity($veriler){
  555.         $em $this->getDoctrine()->getManager();
  556.         foreach ($veriler as $veri){
  557.             $em->remove($veri);
  558.         }
  559.     }
  560.     public function uploadFile($file,$klasor="",$filePath=""){
  561.         if ($filePath==""){
  562.             $filePath 'gecici_yukleme/';
  563.         }
  564.         $filePath .= $file;
  565.         $yukleme_yeri 'uploads/';
  566.         copy($filePath$yukleme_yeri.$file);
  567.         @unlink($filePath);
  568.         return "";
  569.     }
  570.     function deleteFile($file)
  571.     {
  572.         @unlink($file);
  573.         return "";
  574.     }
  575.     function bilgiler()
  576.     {
  577.         $ch curl_init('https://www.sites.rvyazilim.net/ipKontrol');
  578.         curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  579.         $response curl_exec($ch);
  580.         $bilgiler json_decode($response,true);
  581.         return $bilgiler;
  582.     }
  583.     public function dilgrupBul($entity,$id){
  584.         $em $this->getDoctrine()->getManager();
  585.         $qb $em->createQueryBuilder();
  586.         $veriler=$qb->select('x.dilgrup')
  587.             ->from('App:'.$entity'x')
  588.             ->join('x.dil','d')
  589.             ->where('x.id='.$id)
  590.             ->groupBy('x.dil')
  591.             ->getQuery()
  592.             ->getScalarResult();
  593.         return $veriler[0]['dilgrup'];
  594.     }
  595.     function chatGPT($promp)
  596.     {
  597.         ini_set('max_execution_time'0);
  598.         $data = [];
  599.         $data['model'] = 'gpt-3.5-turbo';
  600.         $data['messages'][0]['role'] = 'user';
  601.         $data['messages'][0]['content'] = $promp;
  602.         $curl curl_init();
  603.         curl_setopt_array($curl, array(
  604.             CURLOPT_URL => 'https://api.openai.com/v1/chat/completions',
  605.             CURLOPT_RETURNTRANSFER => true,
  606.             CURLOPT_ENCODING => '',
  607.             CURLOPT_MAXREDIRS => 10,
  608.             CURLOPT_TIMEOUT => 0,
  609.             CURLOPT_FOLLOWLOCATION => true,
  610.             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  611.             CURLOPT_CUSTOMREQUEST => 'POST',
  612.             CURLOPT_POSTFIELDS =>json_encode($data),
  613.             CURLOPT_HTTPHEADER => array(
  614.                 'Authorization: Bearer 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',
  615.                 'Content-Type: application/json'
  616.             ),
  617.         ));
  618.         $response curl_exec($curl);
  619.         $response json_decode($response,true);
  620.         curl_close($curl);
  621.         return $response['choices'][0]['message']['content'];
  622.     }
  623.     public function digerTasarimlar($grupNo){
  624.         $em $this->getDoctrine()->getManager();
  625.         $qb $em->createQueryBuilder();
  626.         $veriler=$qb->select('t.translate')
  627.             ->from('App:Tasarim''t')
  628.             ->where('t.grup='.$grupNo)
  629.             ->getQuery()
  630.             ->getScalarResult();
  631.         $translate="";
  632.         foreach ($veriler as $veri){
  633.             $translate .=$veri['translate'];
  634.         }
  635.         return $translate;
  636.     }
  637.     function emptyDir($dir) {
  638.         if (is_dir($dir)) {
  639.             $scn scandir($dir);
  640.             foreach ($scn as $files) {
  641.                 if ($files !== '.') {
  642.                     if ($files !== '..') {
  643.                         if (!is_dir($dir '/' $files)) {
  644.                             unlink($dir '/' $files);
  645.                         } else {
  646.                             $this->emptyDir($dir '/' $files);
  647.                             rmdir($dir '/' $files);
  648.                         }
  649.                     }
  650.                 }
  651.             }
  652.         }
  653.     }
  654. }