Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.21 KB | None | 0 0
  1.     public function GetMailAttachment()
  2.     {
  3.         /*if (!(Base::$aGeneralConf['is_price_email_available'] && Base::$aGeneralConf['is_price_email_available'] == 1))
  4.             return; // not blocked next process in cron !!!
  5.         */
  6.        
  7.         $oPrice = new Price();
  8.         $iUserId = Auth::$aUser['id'] = 1;
  9.        
  10.         $this->sPrefixAction=$this->sPrefix."_get_mail_attachment";
  11.         //$aPriceProfile=Db::GetAll(Base::GetSql("Price/Profile",array('where'=>" and pp.name_file is not null and pp.name_file<>''")));
  12.  
  13.         $oAccount=Mail::OpenAccount(Base::GetConstant("price:mail_server","pop.gmail.com"),Base::GetConstant("price:mail_port","993"),
  14.         Base::GetConstant("price:mail_login","testprice@i.ua"),Base::GetConstant("price:mail_password","21f1990"),
  15.         Base::GetConstant("price:mail_type","imap/ssl/novalidate-cert"));
  16.         $iMailCount=Mail::GetEmailCount($oAccount);
  17.         if(!$iMailCount) Debug::PrintPre("not mail");
  18.  
  19.         for ($iMessage = 1; $iMessage <= $iMailCount; $iMessage++) {
  20.         $iMessage=1;
  21.         $aHeader=Mail::GetEmailHeader($oAccount,$iMessage);
  22.         if(!$aHeader) {print("not mail");return;}
  23.         $sSubject=Mail::DecodeMimeString($aHeader['subject']);
  24.         $sFrom=Mail::GetSenderEmail($oAccount,$iMessage);
  25.  
  26.         $aAttachment=Mail::GetAttachment($oAccount,$iMessage);
  27.  
  28.         for ($i=0;$i<count($aAttachment);$i++){
  29.             if ($aAttachment[$i]['is_attachment']) {
  30.                 unset($aData);
  31.  
  32.                 //$sExt=strtolower(end(explode(".",$aAttachment[$i]['name'])));
  33.                 $aFilePart = pathinfo(mb_strtolower($aAttachment[$i]['name']));
  34.                 $sExt=$aFilePart['extension'];
  35.                 $sBasenameOriginal = $aAttachment[$i]['name'];
  36.                 if (!$sExt) {
  37.                     $aFilePart = pathinfo(mb_strtolower($aAttachment[$i]['filename']));
  38.                     $sExt=$aFilePart['extension'];
  39.                     $sBasenameOriginal = $aAttachment[$i]['filename'];
  40.                 }
  41.                
  42.                 if (strpos($sBasenameOriginal,'.x lsx')!==false) {
  43.                     $sBasenameOriginal = str_replace('.x lsx', '.xlsx', $sBasenameOriginal);
  44.                     $sExt = 'xlsx';
  45.                     $aFilePart['extension'] = $sExt;
  46.                 }
  47.                    
  48.                 $aFile['path']=SERVER_PATH.$this->sPathToFile.$iUserId.$sBasenameOriginal;
  49.                 @unlink($aFile['path']);
  50.                
  51.                 if (File::Write($aFile,$aAttachment[$i]['attachment'])) {
  52.                     $sLocalFile = SERVER_PATH.$this->sPathToFile.$iUserId.$sBasenameOriginal;  
  53.  
  54.                     if (in_array(strtolower($aFilePart['extension']),array('zip','rar','z ip'))) {
  55.                         $aFileExtract=File::ExtractForPrice($sLocalFile,SERVER_PATH.$this->sPathToFile);
  56.                                                
  57.                         $sFileEnc=mb_detect_encoding($aFileExtract[0]['name']);
  58.                         /*Debug::PrintPre("encoding in archive: ".$sFileEnc,false);
  59.                         if(strpos($aFileExtract[0]['name'], '╨Ю╤Б╤В╨░╤В╨║╨')===false) $bPost=false;
  60.                         else $bPost=true;*/
  61.  
  62.                         if($sFileEnc!='UTF-8'/* || $bPost*/){
  63.                             $aFileExtract[0]['name']=iconv($sFileEnc,"UTF-8",$aFileExtract[0]['name']);
  64.                             $sNewPatch=iconv($sFileEnc,"UTF-8",$aFileExtract[0]['path']);
  65.                            
  66.                             if ($aFileExtract[0]['path'] != $sNewPatch) {
  67.                                 rename($aFileExtract[0]['path'], $sNewPatch);
  68.                                     $aFileExtract[0]['path']=$sNewPatch;
  69.                                 }
  70.                         }
  71.                     }
  72.                     else {
  73.                         $sFileEnc=mb_detect_encoding(basename($sLocalFile));
  74.                         if($sFileEnc!='UTF-8'){
  75.                             $sNewPatch=iconv($sFileEnc,"UTF-8",$sLocalFile);
  76.                             rename($sLocalFile, $sNewPatch);
  77.                             $sLocalFile = $sNewPatch;
  78.                         }
  79.                         if (in_array($aFilePart['extension'],$oPrice->aValidateExtensions))
  80.                             $aFileExtract[0] = array(
  81.                                     'name'  => basename($sLocalFile),
  82.                                     'path'  => $sLocalFile,
  83.                             );
  84.                     }
  85.  
  86.                     //$sError = $oPrice->SaveFilesToQueue($aFileExtract, $sSource = 'mail', 0, $sSubject, $sFrom);
  87.                     $sError = $oPrice->SaveFilesToQueueExtended($aFileExtract, $sSource = 'mail', 0, $sSubject, $sFrom);
  88.                     //Mail::DeleteEmail($oAccount,$iMessage);
  89.                 }
  90.                
  91.                 /*
  92.                 //$aData['id_user_provider']=$iPriceProfile;
  93.                 $aData['id_user']=1;
  94.                 $aData['file_name_original']=$aAttachment[$i]['name'];
  95.                 $aData['source'] = 'email';
  96.                 //$aData['id_price_profile']=$iPriceProfile;
  97.                 if(!$aData['file_name_original']) continue;
  98.  
  99.                 Db::AutoExecute("price_queue",$aData);
  100.                 $id=Db::InsertId();
  101.  
  102.                 if ($sExt=="zip" || $sExt=="rar") {
  103.  
  104.                     $aFile['path']=SERVER_PATH.$this->sPathToFile.$id.".".$sExt;
  105.                     if (File::Write($aFile,$aAttachment[$i]['attachment'])) {
  106.                         $aFileExtract=File::ExtractForPrice($aFile['path'],SERVER_PATH.$this->sPathToFile);
  107.                     }
  108.                    
  109.                     if ($aFileExtract) foreach ($aFileExtract as $sKey => $aValue) {
  110.  
  111.                         $aData['file_name_original']=$aFileExtract[$sKey]['name'];
  112.                         $aData['file_name']=$id."_".$sKey."_".$aFileExtract[$sKey]['name'];
  113.                         $aData['file_path']=SERVER_PATH.$this->sPathToFile.$aData['file_name'];
  114.                         rename($aFileExtract[$sKey]['path'],$aData['file_path']);
  115.  
  116.                         $aData['id_price_profile']=0;
  117.                         $aData['id_user_provider']=0;
  118.                         $aProfileInfo = $this->GetProfile($sType = 'mail', $aData['file_name'], $sSubject, $sFrom);
  119.                         if ($aProfileInfo['id']) {
  120.                             $aData['id_price_profile']=$aProfileInfo['id'];
  121.                             $aData['id_user_provider']=$aProfileInfo['id_provider'];
  122.                         }
  123.                        
  124.                         if ($sKey==0) {
  125.                             Db::AutoExecute("price_queue",$aData,"UPDATE","id=".$id);
  126.                         } else {
  127.                             Db::AutoExecute("price_queue",$aData);
  128.                         }
  129.                         //unlink($aFile['path']);
  130.                     }
  131.  
  132.                 } else {
  133.  
  134.                     $aData['file_name_original']=$aAttachment[$i]['name'];
  135.                     $aData['file_name']=$id."_".$aAttachment[$i]['name'];
  136.                     $aData['file_path']=SERVER_PATH.$this->sPathToFile.$aData['file_name'];
  137.  
  138.                     $aFile['path']=$aData['file_path'];
  139.                     File::Write($aFile,$aAttachment[$i]['attachment']);
  140.  
  141.                     $aData['id_price_profile']=0;
  142.                     $aData['id_user_provider']=0;
  143.                     $aData['source'] = 'email';
  144.                     $aProfileInfo = $this->GetProfile($sType = 'mail', $aData['file_name'], $sSubject, $sFrom);
  145.                     if ($aProfileInfo['id']) {
  146.                         $aData['id_price_profile']=$aProfileInfo['id'];
  147.                         $aData['id_user_provider']=$aProfileInfo['id_provider'];
  148.                     }
  149.                     Db::AutoExecute("price_queue",$aData,"UPDATE","id=".$id);
  150.                 }
  151.                 */
  152.             }
  153.         }
  154.         Mail::DeleteEmail($oAccount,$iMessage);
  155.         }
  156.         Mail::CloseAcount($oAccount);
  157.  
  158.         if ($sError != '')
  159.             echo Language::GetMessage("Not found profile for uploaded files") . ":<br>\n" . $sError;
  160.        
  161.         echo "ok";
  162.  
  163.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement