Guest User

LP ticket downloader

a guest
Sep 13th, 2016
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 29.03 KB | None | 0 0
  1. <?php
  2. if($_SERVER['DOCUMENT_ROOT'] == "")
  3.     $_SERVER['DOCUMENT_ROOT'] = preg_replace('/\/[a-zA-Z0-9\-\_]*$/', '', dirname(__FILE__));
  4. require_once $_SERVER['DOCUMENT_ROOT'] . '/include/script.start.php';
  5.  
  6.  
  7.  
  8.  
  9.  
  10.     function sqlDateFormat($date)
  11.     {
  12.         $date = str_replace(array('T', '+'), array(' ', ':'), $date);
  13.         $date = preg_replace('/\:00\:00$/', '', $date);
  14.         return $date;
  15.     }
  16.     function getXMLfile($startDate, $endDate, $account)
  17.     {
  18.         // Create temp file to store cookies
  19.         //$ckfile = tempnam (Ticketing::$xmlPath, "CURLCOOKIE");
  20.         $ckfile = Ticketing::$xmlPath . "/CURLCOOKIE" . $account;
  21.  
  22.         //$startDate = $checkDate . 'T00:00:00';
  23.         //$endDate = $checkDate . 'T23:59:59';
  24.         $startDate = str_replace(' ', 'T', $startDate);
  25.         $endDate = str_replace(' ', 'T', $endDate);
  26.        
  27.         $fields = array(
  28.             'site' => $account,
  29.             'user' => Ticketing::$accountsUserPass[$account]['username'],
  30.             'pass' => Ticketing::$accountsUserPass[$account]['password'],
  31.             'includeEvents' => 'true',
  32.             'limit' => '5000',
  33.             //'tid' => $ticketId//,
  34.             'startDate' => $startDate,
  35.             'endDate' => $endDate
  36.         );
  37.        
  38.         $fields_string = '';
  39.         foreach($fields as $key=>$value) {
  40.         $fields_string .= $key . '=' . $value . '&';
  41.         }
  42.         rtrim($fields_string, '&');
  43.        
  44.         //$fields_string = http_build_query($fields);
  45.        
  46.        
  47.         //$ticketId = 'LTK1218404583216X';
  48.         // URL to login page &includeEvents=true
  49.         $url = "https://server.iad.liveperson.net/hc/web/mlogin/utils/ticketExport.jsp?site=" . $account . "&startDate=" . $startDate . "&endDate=" . $endDate . "&user=" . Ticketing::$accountsUserPass[$account]['username'] . "&pass=" . Ticketing::$accountsUserPass[$account]['password'] . "&includeEvents=true&limit=5000";
  50.         //$url = "https://server.iad.liveperson.net/hc/web/mlogin/utils/ticketExport.jsp?site=" . $account . "&tid=" . $ticketId . "&user=frank.lojzer&pass=ve8fll&includeEvents=true";
  51.         //$url = "https://server.iad.liveperson.net/hc/web/mlogin/utils/ticketExport.jsp?" . $fields_string;
  52.        
  53.         Dump::liveDump($url);
  54.  
  55.        
  56.  
  57.         // Post login form and follow redirects
  58.         $ch = curl_init();
  59.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Accepts all CAs
  60.         curl_setopt($ch, CURLOPT_URL, $url);
  61.         curl_setopt($ch, CURLOPT_POST, count($fields));
  62.         curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
  63.         curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); //Uses cookies from the temp file
  64.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  65.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Tells cURL to follow redirects
  66.         $output = curl_exec($ch);
  67.         $myFile = Ticketing::$xmlPath . "/tickets" . $account . ".xml";
  68.         $fh = fopen($myFile, 'w') or die("can't open file");
  69.         //$output = preg_replace("/^[\s\t]*[\r\n]+|[\r\n]+\Z/m", "\n", $output);
  70.         //$output=str_replace("\t", "  ", (string)$output);
  71.         //$output=str_replace('A& $O'
  72.         fwrite($fh, $output);
  73.         fclose($fh);
  74.         $path_to_file = $myFile;
  75.         $file_contents = file_get_contents($path_to_file);
  76.         $file_contents = str_replace("\t", " ",$file_contents);
  77.         $file_contents = str_replace("  ", " ",$file_contents);
  78.         $file_contents = str_replace("  ", " ",$file_contents);
  79.         $file_contents = str_replace("  ", " ",$file_contents);
  80.         $file_contents = str_replace('A& $O', "",$file_contents);
  81.         $file_contents = str_replace(array("<ticket id=", "</ticket", "<message", "</message", "<VarValue"), array("\r\n<ticket id=", "\r\n</ticket", "\r\n<message", "\r\n</message", "\r\n<VarValue"),$file_contents);
  82.         $file_contents = Data::sanitizeString4database($file_contents);
  83.        
  84.  
  85.         preg_match_all('/attachment\sfileName\=\"([\s\S]*?)\"\//', $file_contents, $dataMatches);
  86.  
  87.         //var_dump($dataMatches);
  88.  
  89.         if(isset($dataMatches[1]) && !empty($dataMatches[1]))
  90.         {
  91.             foreach($dataMatches[1] as $searchString)
  92.             {
  93.                 if(strlen($searchString) < 600)
  94.                 {
  95.                     //echo '<pre>';
  96.                     //var_dump($searchString);
  97.                     //echo '</pre>';
  98.                     $replaceWhat = array();
  99.                     $replaceTo = array();
  100.                     //echo $searchString. '<br />-------<br />';
  101.                     //$replacementString = str_replace('"', '', $searchString);
  102.                     //echo $replacementString . '<br />-------<br />';
  103.  
  104.                     //$fileData = str_replace($searchString, $replacementString, $fileData);
  105.  
  106.                     preg_match_all('/([\s\S]*?)(\"\sformat\=\"|"\sname\=\")/', $searchString, $searchMatches1);
  107.                     if(isset($searchMatches1[1][0]) && !empty($searchMatches1[1][0]))
  108.                     {
  109.  
  110.                         //echo '/////' . $searchMatches1[1][0] . '<br />++++++<br />';
  111.                         $replaceWhat[] = $searchMatches1[1][0];
  112.                         $replaceTo[] = preg_replace('/[^\p{L}]/u', '', str_replace('"', '', $searchMatches1[1][0]));
  113.  
  114.                     }
  115.                     preg_match_all('/name\=\"([\s\S]*?)$/', $searchString, $searchMatches2);
  116.                     //echo '1111 ' . $searchString. '<br /> 1111-------<br />';
  117.                     //var_dump($searchMatches2);
  118.                     if(isset($searchMatches2[1][0]) && !empty($searchMatches2[1][0]))
  119.                     {
  120.  
  121.                         //echo '\\\\\' . $searchMatches2[1][0] . '<br />\\\\\\<br />';
  122.                         //var_dump($searchMatches2[1][0]);
  123.                         $replaceWhat[] = $searchMatches2[1][0];
  124.                         $replaceTo[] = preg_replace('/[^\p{L}]/u', '', str_replace('"', '', $searchMatches2[1][0]));
  125.                     }
  126.                     //var_dump($replaceWhat);
  127.                     //var_dump($replaceTo);
  128.                     $replacementString = str_replace($replaceWhat, $replaceTo, $searchString);
  129.                     //echo '2222 ' .  $replacementString . ' 2222';
  130.  
  131.                     $file_contents = str_replace($searchString, $replacementString, $file_contents);
  132.                 }
  133.             }
  134.         }
  135.  
  136.         file_put_contents($path_to_file,$file_contents);
  137.  
  138.         echo '<pre>';
  139.         var_dump('XML FILE CREATED - ' . date('Y-m-d H:i:s'));
  140.         echo '</pre>';
  141.     }
  142.  
  143.     function createXmlFile($startDate, $endDate, $account)
  144.     {
  145.         getXMLfile($startDate, $endDate, $account);
  146.  
  147.         $dataCheck = '';
  148.         $dataCheck = '';
  149.         $f = fopen(Ticketing::$xmlPath . "/tickets" . $account . ".xml", 'r');
  150.         $dataCheck = fgets($f);
  151.         fclose($f);
  152.            
  153.         return $dataCheck;
  154.     }
  155.  
  156.  
  157.     $checkDate = date('Y-m-d');
  158.     //$calendarsArray[$dt->format("Y")][$dt->format("m")][$dt->format("d")] = $dt->format("N");
  159.     $startDate = date('Y-m-d H:i:s', strtotime(gmdate("Y-m-d H:i:s") . ' - 2 hour'));
  160.     $endDate = date('Y-m-d H:i:s', strtotime(gmdate("Y-m-d H:i:s") . ' - 0 minute'));
  161.    
  162. $accounts = Ticketing::$accounts;
  163.    
  164. //$accounts = array('85501512' => '85501512');
  165.  
  166. $check = 'H';
  167.  
  168. if($check == 'D')
  169. {
  170.     $dateFrom = date('Y-m-d', strtotime('- 5 day', time()));
  171.     $dateTo = date('Y-m-d', strtotime(' + 1 day'));
  172. }
  173. else if($check == 'H')
  174. {
  175.     $dateFrom = date('Y-m-d', strtotime('today', time()));
  176.     $dateTo = date('Y-m-d', strtotime(' + 1 day'));
  177. }
  178. $begin = new DateTime($dateFrom);
  179. $end = new DateTime($dateTo);
  180. $interval = DateInterval::createFromDateString('1 day');
  181. $period = new DatePeriod($begin, $interval, $end);
  182.  
  183.  
  184.  
  185.  
  186. foreach ( $period as $dt )
  187. {
  188.     $checkDate = $dt->format( "Y-m-d" );
  189.     if($check == 'H')
  190.     {
  191.         $startDate = date('Y-m-d H:i:s', strtotime(gmdate("Y-m-d H:i:s") . ' - 2 hour'));
  192.         $endDate = date('Y-m-d H:i:s', strtotime(gmdate("Y-m-d H:i:s") . ' - 0 minute'));
  193.     }  
  194.     else
  195.     {
  196.         $startDate = $checkDate . ' 00:00:00';
  197.         $endDate = $checkDate . ' 23:59:59';
  198.     }
  199.    
  200.     foreach($accounts as $shortAcc => $account)
  201.     {
  202.  
  203.         echo '<pre>';
  204.         var_dump('STARTED - ' . date('Y-m-d H:i:s') . ' -start date: ' . $startDate . ' - ' . $endDate . ' - account: ' . $account);
  205.         echo '</pre>';
  206.  
  207.         $dataCheck = createXmlFile($startDate, $endDate, $account);
  208.  
  209.         //while(preg_match('/Ticket\sExport\sis\stemporarily\sunavailable/',$dataCheck) || preg_match('/Server\sis\sBusy/',$dataCheck) || preg_match('/\<\!DOCTYPE\shtml\>/',$dataCheck))
  210.         $tryCounter = 1;
  211.         while(!preg_match('/\<\?xml/',$dataCheck) || preg_match('/\<Errors\>\<error\>/',$dataCheck))
  212.         {
  213.             Dump::liveDump(substr($dataCheck, 0, 10));
  214.             echo '<pre>';
  215.             var_dump('NOT AVAILABLE - ' . date('Y-m-d H:i:s'));
  216.             echo '</pre>';
  217.             sleep(10);
  218.             $dataCheck = createXmlFile($startDate, $endDate, $account);
  219.             Dump::liveDump('Try - ' . $tryCounter);
  220.             $tryCounter++;
  221.             if($tryCounter >= 20)
  222.             {
  223.                 Dump::object('<pre>Ticket synchronisation failed!</pre>', __FILE__ . " - " . __LINE__ . " - " . 'URGENT CHECK Ticket synchronisation failed!' . '' . '-' . '' , true, array('support@tango.hr'));
  224.                 exit;
  225.             }
  226.         }
  227.  
  228.  
  229.         echo '<pre>';
  230.         var_dump('FILE CHECKED - ' . date('Y-m-d H:i:s'));
  231.         echo '</pre>';
  232.  
  233.  
  234.         $xmlMessageData = array();
  235.         $xmlTicketData = array();
  236.         $xmlTicketChangeData = array();
  237.         $xmlTicketChangeDataHelp = array();
  238.  
  239.         $emailTypes = array(
  240.             'to' => 'to_email',
  241.             'cc' => 'cc_email',
  242.             'bcc' => 'bcc_email',
  243.             'from' => 'from_email',
  244.             'replyTo' => 'reply_email'
  245.         );
  246.  
  247.         $xml=simplexml_load_file(Ticketing::$xmlPath . "/tickets" . $account . ".xml");
  248.  
  249.  
  250.         echo '<pre><strong>' . $xml->getName() . "</strong></pre><br />";
  251.         $accountId = $xml["account"];
  252.         echo '<pre>' . $accountId . "</pre><br />";
  253.  
  254.  
  255.         foreach($xml->children() as $child)
  256.         {
  257.            
  258.             echo '<pre>' . $child->getName() . ":11 " . '' . "</pre>-<br />";
  259.  
  260.             $ticketId = str_replace('ID', '', (string)$child["id"]);
  261.             if($ticketId)
  262.             {
  263.                 ////if(isset($exisitngTickets[$ticketId]))
  264.                     ////unset($exisitngTickets[$ticketId]);
  265.                 $xmlTicketChangeDataHelp[$ticketId]['skill'] = (string)$child["skill"];
  266.                 $xmlTicketChangeDataHelp[$ticketId]['state'] = (string)$child["state"];
  267.                 $xmlTicketData[$ticketId]['account'] = $accountId;
  268.             }
  269.            
  270.             foreach($child->children() as $child1) {
  271.                 echo '<pre>----' . $child1->getName() . ":22 " . $child1 . "--</pre><br />";
  272.                
  273.                 $messageDate = '';
  274.                 if($child1->getName() == 'message')
  275.                 {
  276.                     $messageDate = sqlDateFormat((string)$child1['createDate']);
  277.                    
  278.                     if(!isset($xmlTicketData[$ticketId]['first_datetime']))
  279.                         $xmlTicketData[$ticketId]['first_datetime'] = $messageDate;
  280.                    
  281.                     $xmlMessageData[$ticketId][$messageDate]['type'] = (string)$child1['type'];
  282.                     $xmlMessageData[$ticketId][$messageDate]['message_id'] = (string)$child1['messageId'];
  283.                     foreach($child1->attributes() as $a => $b)
  284.                     echo '------------>' . $a,'="',$b,"\"<br />";  
  285.  
  286.                 }
  287.                 foreach($child1->children() as $child2) {
  288.                     //echo '--------' . $child2->getName() . ":33 " . $child2 . "<br />";
  289.                     echo '<pre>--------' . $child2->getName() . ":33 " . '' . "</pre><br />";
  290.                    
  291.                     if($child2->getName() == 'subject')
  292.                         $xmlMessageData[$ticketId][$messageDate]['subject'] = (string)$child2;
  293.                     else if($child2->getName() == 'body' && !isset($xmlMessageData[$ticketId][$messageDate]['body']))
  294.                         $xmlMessageData[$ticketId][$messageDate]['body'] = (string)$child2;
  295.                     else if($child2->getName() == 'varValue' && (string)$child2['name'] == 'X-ticket-released')
  296.                         $xmlTicketChangeDataHelp[$ticketId]['XTicketReleased'] = sqlDateFormat((string)$child2['time']);
  297.                     else if($child2->getName() == 'varValue' && (string)$child2['name'] == 'X-ticket-resolved')
  298.                         $xmlTicketChangeDataHelp[$ticketId]['XTicketResolved'] = sqlDateFormat((string)$child2['time']);
  299.                     else if($child2->getName() == 'varValue' && (string)$child2['name'] == 'X-ticket-returnedfrompending' && (string)$child2['time'])
  300.                         $xmlTicketChangeDataHelp[$ticketId]['XTicketPending'] = sqlDateFormat((string)$child2['time']);
  301.                     else if($child2->getName() == 'varValue' && (string)$child2['name'] == 'X-ticket-trashed')
  302.                         $xmlTicketChangeDataHelp[$ticketId]['XTicketTrashed'] = sqlDateFormat((string)$child2['time']);
  303.  
  304.                     else if($child2->getName() == 'event')
  305.                     {
  306.                         //echo '<pre>EVENT------------' . $child2 . ":----------c3 "  . "</pre><br />";
  307.                        
  308.                        
  309.  
  310.                         $child2String = (string)$child2;
  311.                        
  312.                         $ticketChangeDate = sqlDateFormat((string)$child2['timestamp']) . '||' . (string)$child2['type'];
  313.                         if(isset($xmlTicketChangeData[$ticketId][$ticketChangeDate]['type']) && $xmlTicketChangeData[$ticketId][$ticketChangeDate]['type'] == 'Rules')
  314.                         {
  315.                             //$unsetNonPendingRuleEvents[$ticketId][$ticketChangeDate] = (string)$child2['type'];
  316.                             $ticketChangeDate = sqlDateFormat((string)$child2['timestamp']) . '.030||' . (string)$child2['type'];
  317.                             //$unsetNonPendingRuleEvents[$ticketId][$ticketChangeDate] = (string)$child2['type'];
  318.                         }
  319.                        
  320.                         $xmlTicketChangeData[$ticketId][$ticketChangeDate]['event'] = (string)$child2;
  321.                         $xmlTicketChangeData[$ticketId][$ticketChangeDate]['info'] = (string)$child2['info'];
  322.                         $xmlTicketChangeData[$ticketId][$ticketChangeDate]['message_id'] = (string)$child2['messageID'];
  323.                         $xmlTicketChangeData[$ticketId][$ticketChangeDate]['skill'] = (string)$child2['newSkill'];
  324.                         $xmlTicketChangeData[$ticketId][$ticketChangeDate]['type'] = (string)$child2['type'];
  325.                        
  326.  
  327.  
  328.                         if(preg_match('/Pending\sInternal\sAction/', $child2String))
  329.                             $xmlTicketChangeData[$ticketId][$ticketChangeDate]['custom_type'] = 'Pending';
  330.                         else
  331.                             $xmlTicketChangeData[$ticketId][$ticketChangeDate]['custom_type'] = '';
  332.                         if(preg_match('/kill\s/', $child2String) || preg_match('/kill\:\s/', $child2String))   
  333.                         {
  334.                             preg_match_all('/kill(\:|)\s[a-zA-Z0-9\_\-\s]*(\.|$)/', $child2String, $matches);
  335.                             if(isset($matches[0][0]))
  336.                             {
  337.                                 $match = $matches[0][0];
  338.                                 $matchSkill = trim(str_replace(array('kill', ':', '.'), '', $match));
  339.                                 $xmlTicketChangeData[$ticketId][$ticketChangeDate]['skill'] = trim($matchSkill);
  340.                             }
  341.                             else
  342.                             {
  343.                                 Dump::object('Bug checking ' . $startDate . ' - ' . $endDate . '<br />' . 'skill string: ' . $child2String . '<br />' . $ticketId, __FILE__ . " - " . __LINE__ . " - " . 'debugging skill string', false, 'tomislav.cipric@tango.hr');
  344.                                 $xmlTicketChangeData[$ticketId][$ticketChangeDate]['skill'] = '';
  345.                             }
  346.                         }
  347.  
  348.                     }
  349.                     //foreach($child2->attributes() as $a => $b)
  350.                         //echo '------------>>' . $a,'="',$b,"\"<br />";
  351.                    
  352.                     $ChatBody = array();
  353.                     foreach($child2->children() as $child3) {
  354.                         echo '<pre>------------' . $child3->getName() . ":----------c3 "  . "</pre><br />";
  355.                        
  356.                         if($child3->getName() == 'Visitor')
  357.                         {
  358.                             ///echo '------------<pre>' . print_r(json_encode($child3), true) . "</pre>----------c3Visitor "  . "<br />";
  359.                             $ChatBody['Visitor'] = '<p><span class="chat-visitor">' . (string)json_encode($child3) . '</span></p>';
  360.                             //echo '------------<pre>' . print_r($ChatBody['Visitor'], true) . "</pre>----------c3Visitortrrrrr "  . "<br />";
  361.                         }
  362.                         if($child3->getName() == 'Chat')
  363.                         {
  364.                             //echo '------------<pre>' . print_r($ChatBody['Visitor'], true) . "</pre>----------c3Visitortrrrrr "  . "<br />";
  365.                             //echo '------------<pre>' . print_r($child3->line, true) . "</pre>----------c3 "  . "<br />";
  366.                             $chatCounter = 1;
  367.                             foreach($child3->children() as $child3Chat)
  368.                             {
  369.                                 //echo '------------<pre>' . print_r((string)$child3Chat['by'], 1) . print_r((string)$child3Chat['time'], 1) . "</pre>----------chat "  . "<br />";
  370.                                 //echo '------------<pre>' . print_r((string)$child3Chat->Text, 1) . "</pre>----------chat "  . "<br />";
  371.                                 $ChatBody[$chatCounter] = '
  372.                                 <p class="chat-message">
  373.                                     <span class="chat-time">' . sqlDateFormat((string)$child3Chat['time']) . '</span>
  374.                                     <span class="chat-by">' . (string)$child3Chat['by'] . '</span>
  375.                                     <span class="chat-text">' . (string)$child3Chat->Text . '</span>
  376.                                 </p>';
  377.                                 $chatCounter++;
  378.                             }
  379.                             //echo '------------<pre>' . print_r($ChatBody, 1) . "</pre>----------chat "  . "<br />";
  380.                             $ChatBody = join('', $ChatBody);
  381.                             //echo '------------<pre>' . $ChatBody . "</pre>----------chat "  . "<br />";
  382.                             $xmlMessageData[$ticketId][$messageDate]['body'] = $ChatBody;
  383.                         }
  384.                        
  385.                         if($child3->getName() == 'address')
  386.                         {
  387.                             //foreach($child3->attributes() as $index => $value)
  388.                             //{
  389.                                 //$xmlMessageData[$ticketId][$messageDate][] = $child3;
  390.                             //}
  391.                             $emailType = $emailTypes[(string)$child3['type']];
  392.                             if(!isset($xmlMessageData[$ticketId][$messageDate][$emailType]))
  393.                                 $xmlMessageData[$ticketId][$messageDate][$emailType] = (string)$child3['email'];
  394.                             else
  395.                                 $xmlMessageData[$ticketId][$messageDate][$emailType] .= '|' . (string)$child3['email'];
  396.                                
  397.                             if($emailType == 'from_email')
  398.                                 $xmlMessageData[$ticketId][$messageDate]['from_name'] = (string)$child3['identifier'];
  399.                        
  400.                         }
  401.                         if($child3->getName() == 'varValue' && (string)$child3['name'] == "X-Triger-Mailbox")
  402.                         {
  403.                             $xtrigerDate = sqlDateFormat((string)$child3['time']);
  404.                             if(!isset($xmlTicketData[$ticketId]['first_XTrigerMailbox']))
  405.                                 $xmlTicketData[$ticketId]['first_XTrigerMailbox'] = $xtrigerDate;
  406.                             $xmlMessageData[$ticketId][$messageDate]['XTrigerMailbox'] = $xtrigerDate;;
  407.                         }
  408.                         if($child3->getName() == 'VarValues')
  409.                         {
  410.                             foreach($child3->children() as $child3VarValues)
  411.                             {
  412.                                 if($child3VarValues['source'] == 'PreChat')
  413.                                 {
  414.                                     //echo '------------>>>' . (string)$child3VarValues  . "<br />";
  415.                                     $xmlMessageData[$ticketId][$messageDate]['to_email'] = (string)$child3VarValues;
  416.                                 }
  417.                                 if($child3VarValues['name'] == 'skill')
  418.                                 {
  419.                                     //echo '------------>>>' . (string)$child3VarValues  . "<br />";
  420.                                     $xmlMessageData[$ticketId][$messageDate]['from_email'] = (string)$child3VarValues;
  421.                                 }
  422.                                 //foreach($child3VarValues->attributes() as $a => $b)
  423.                                     //echo '------------>>>' . $a,'="',$b,"\"<br />";
  424.                             }
  425.                         }
  426.                        
  427.                         //foreach($child3->attributes() as $a => $b)
  428.                             //echo '------------>>>' . $a,'="',$b,"\"<br />";
  429.                     }
  430.                    
  431.                    
  432.                 }
  433.  
  434.                
  435.             }
  436.             if($ticketId)
  437.             {
  438.                 //if(!isset($xmlTicketChangeData[$ticketId]['datetime']) || ( isset($xmlTicketChangeData[$ticketId]['datetime']) && strtotime($xmlTicketData[$ticketId]['first_datetime']) > strtotime($xmlTicketChangeData[$ticketId]['datetime']) ))
  439.  
  440.                 if(!isset($xmlTicketChangeDataHelp[$ticketId]['datetime']) )
  441.                     $xmlTicketChangeDataHelp[$ticketId]['datetime'] = $xmlTicketData[$ticketId]['first_datetime'];
  442.                 if(isset($xmlTicketChangeDataHelp[$ticketId]['XTicketReleased']) )
  443.                     $xmlTicketChangeData[$ticketId][$ticketChangeDate]['XTicketReleased'] = $xmlTicketChangeDataHelp[$ticketId]['XTicketReleased'];
  444.                 if(isset($xmlTicketChangeDataHelp[$ticketId]['XTicketResolved']) )
  445.                     $xmlTicketChangeData[$ticketId][$ticketChangeDate]['XTicketResolved'] = $xmlTicketChangeDataHelp[$ticketId]['XTicketResolved'];
  446.                 if(isset($xmlTicketChangeDataHelp[$ticketId]['XTicketPending']) && $xmlTicketChangeDataHelp[$ticketId]['XTicketPending'])
  447.                     $xmlTicketChangeData[$ticketId][$ticketChangeDate]['XTicketPending'] = $xmlTicketChangeDataHelp[$ticketId]['XTicketPending'];
  448.                 else
  449.                 if(isset($xmlTicketChangeDataHelp[$ticketId]['XTicketTrashed']) )
  450.                     $xmlTicketChangeData[$ticketId][$ticketChangeDate]['XTicketTrashed'] = $xmlTicketChangeDataHelp[$ticketId]['XTicketTrashed'];
  451.                 if(isset($xmlTicketChangeDataHelp[$ticketId]['state']) )
  452.                     $xmlTicketChangeData[$ticketId][$ticketChangeDate]['state'] = $xmlTicketChangeDataHelp[$ticketId]['state'];
  453.             }
  454.         }
  455.  
  456.         $totalTicketsToInsert = count($xmlTicketData);
  457.         $totalTicketsCounter = 1;
  458.         foreach($xmlTicketData as $ticketId => $ticketArray)
  459.         {
  460.             $checkTicket = new Data;
  461.             $checkTicket->selectData("
  462.                 SELECT ltk FROM lp_data_ticket WHERE ltk = '" . $ticketId . "'
  463.             ");
  464.             echo '<pre>';
  465.             var_dump($ticketId . '-ticket - ' . $totalTicketsCounter . '/' . $totalTicketsToInsert . ' - ' . round((($totalTicketsCounter / $totalTicketsToInsert) * 100),0) . '%');
  466.             echo '</pre>';
  467.             if(!$checkTicket->hasData())
  468.             {
  469.                 if(!isset($ticketArray['first_XTrigerMailbox']))
  470.                     $ticketArray['first_XTrigerMailbox'] = 'NULL';
  471.                 $data = array();
  472.                 $addData = new Data;
  473.                 //$addData->columnRules = array('body' => array('html' => true));
  474.                 $addData->selectTable('lp_data_ticket');
  475.                 $data = array(
  476.                     'ltk' => $ticketId,
  477.                     'first_datetime' => $ticketArray['first_datetime'],
  478.                     'first_XTrigerMailbox' => $ticketArray['first_XTrigerMailbox'],
  479.                     'account' => $ticketArray['account']
  480.                 );
  481.  
  482.                 echo '<pre>';
  483.                 var_dump('INSERT');
  484.                 echo '</pre>';
  485.                 $addData->setData($data);
  486.                 //if(1 == 1)
  487.                 if (!$addData->insertData())
  488.                     echo 'ERROR!!!!!!!!!!!!';
  489.             }
  490.             $totalTicketsCounter++;
  491.                
  492.         }
  493.  
  494.         $totalTicketsToInsert = count($xmlTicketChangeData);
  495.         $totalTicketsCounter = 1;
  496.         foreach($xmlTicketChangeData as $ticketId => $ticketArray)
  497.         {
  498.             foreach($ticketArray as $date => $changeArray)
  499.             {
  500.  
  501.                 $explodeDate = explode('||', $date);
  502.                 $date = $explodeDate[0];
  503.                 $dateCheck = $date;
  504.  
  505.                 $checkTicket = new Data;
  506.                 $checkTicket->selectData("
  507.                     SELECT ltk, datetime
  508.                     FROM lp_data_ticket_event
  509.                     WHERE ltk = '" . $ticketId . "'
  510.                     AND [datetime] = '" . $dateCheck . "'
  511.                     AND [type] = '" . $changeArray['type'] . "'
  512.                 ");
  513.                 //echo '<pre>';
  514.                 //var_dump($checkTicket->query);
  515.                 //echo '</pre>';
  516.                 echo '<pre>';
  517.                 var_dump($ticketId . '-ticketchange - ' . $totalTicketsCounter . '/' . $totalTicketsToInsert . ' - ' . round((($totalTicketsCounter / $totalTicketsToInsert) * 100),0) . '%');
  518.                 echo '</pre>';
  519.                 if(!$checkTicket->hasData())
  520.                 {
  521.  
  522.                     $data = array();
  523.                     $addData = new Data;
  524.                     $addData->columnRules = array('event' => array('html' => true));
  525.                     $addData->selectTable('lp_data_ticket_event');
  526.                     if(!isset($changeArray['XTicketReleased']))
  527.                         $changeArray['XTicketReleased'] = 'NULL';
  528.                     if(!isset($changeArray['XTicketResolved']))
  529.                         $changeArray['XTicketResolved'] = 'NULL';
  530.                     if(!isset($changeArray['XTicketPending']))
  531.                         $changeArray['XTicketPending'] = 'NULL';
  532.                     if(!isset($changeArray['XTicketTrashed']))
  533.                         $changeArray['XTicketTrashed'] = 'NULL';
  534.                     if(!isset($changeArray['message_id']))
  535.                         $changeArray['message_id'] = '0';
  536.                     if(!isset($changeArray['skill']))
  537.                         $changeArray['skill'] = '';
  538.                     //if(!isset($changeArray['state']))
  539.                         //$changeArray['state'] = '';
  540.                     $data = array(
  541.                         'ltk' => $ticketId,
  542.                         'datetime' => $date,
  543.                         'message_id' => $changeArray['message_id'],
  544.                         'event' => $changeArray['event'],
  545.                         'info' => Database::escape_string($changeArray['info']),
  546.                         'skill' => Database::escape_string($changeArray['skill']),
  547.                         'type' => $changeArray['type'],
  548.                         //'agent' => $changeArray['agent'],
  549.                         //'state' => $changeArray['state'],
  550.                         'custom_type' => $changeArray['custom_type'],
  551.                         'XTicketReleased' =>  $changeArray['XTicketReleased'],
  552.                         'XTicketResolved' =>  $changeArray['XTicketResolved'],
  553.                         'XTicketPending' =>  $changeArray['XTicketPending'],
  554.                         'XTicketTrashed' =>  $changeArray['XTicketTrashed']
  555.                     );
  556.                     if(!isset($changeArray['XTicketPending']))
  557.                         Dump::object($data, __FILE__ . " - " . __LINE__ . " - " . 'LP XML generating BBB dump X-ticket-returnedfrompending - ' . $ticketId, true, 'tomislav.cipric@tango.hr');
  558.  
  559.                     echo '<pre>';
  560.                     //var_dump($data);
  561.                     var_dump('INSERT');
  562.                     echo '</pre>';
  563.                     $addData->setData($data);
  564.                     //if(1 == 1)
  565.                     if (!$addData->insertData())
  566.                         echo 'ERROR!!!!!!!!!!!!';
  567.                 }
  568.                
  569.             }
  570.             $totalTicketsCounter++;
  571.         }
  572.  
  573.         $totalTicketsToInsert = count($xmlMessageData);
  574.         $totalTicketsCounter = 1;
  575.         foreach($xmlMessageData as $ticketId => $ticketArray)
  576.         {
  577.  
  578.             echo '<pre>';
  579.             var_dump($ticketId . '-tmessages - ' . $totalTicketsCounter . '/' . $totalTicketsToInsert . ' - ' . round((($totalTicketsCounter / $totalTicketsToInsert) * 100),0) . '%');
  580.             echo '</pre>';
  581.             foreach($ticketArray as $date => $messageArray)
  582.             {
  583.                 if(!$date)
  584.                 {
  585.                     echo '<pre>';
  586.                     var_dump($ticketId . '--------------------------ERRRORRRRRRRRRRR------------------------------');
  587.                     echo '</pre>';
  588.                 }
  589.                 $checkTicketMessages = new Data;
  590.                 $checkTicketMessages->selectData("
  591.                     SELECT ltk, createDate FROM lp_data_message WHERE ltk = '" . $ticketId . "' AND message_id = '" . $messageArray['message_id'] . "'
  592.                 ");
  593.  
  594.                 if(!$checkTicketMessages->hasData())
  595.                 {
  596.                     echo '<pre>';
  597.                     var_dump($date);
  598.                     echo '</pre>';
  599.                     if(!isset($messageArray['XTrigerMailbox']))
  600.                         $messageArray['XTrigerMailbox'] = 'NULL';
  601.                     if(!isset($messageArray['to_email']))
  602.                         $messageArray['to_email'] = '';
  603.                     if(!isset($messageArray['cc_email']))
  604.                         $messageArray['cc_email'] = '';
  605.                     if(!isset($messageArray['bcc_email']))
  606.                         $messageArray['bcc_email'] = '';
  607.                     if(!isset($messageArray['from_email']))
  608.                         $messageArray['from_email'] = '';
  609.                     if(!isset($messageArray['from_name']))
  610.                         $messageArray['from_name'] = '';
  611.                     if(!isset($messageArray['reply_email']))
  612.                         $messageArray['reply_email'] = '';
  613.                     if(!isset($messageArray['subject']))
  614.                         $messageArray['subject'] = '';
  615.                     if(!isset($messageArray['body']))
  616.                     {
  617.                         $messageArray['body'] = '';
  618.                     }
  619.                     $data = array();
  620.                     $addData = new Data;
  621.                     $addData->columnRules = array(
  622.                         'body' => array('html' => true),
  623.                         'body_v' => array('html' => true),
  624.                         'numbers' => array('html' => true),
  625.                         'numbers_reference' => array('html' => true),
  626.                         'subject' => array('html' => true)
  627.                     );
  628.                     $addData->selectTable('lp_data_message');
  629.                    
  630.                     //$bodyVar = strip_tags(str_replace("<br />", "\n", $messageArray['body']));
  631.                    
  632.                     //$bodyText = str_replace(array("<br>","<BR>","</br>","</BR>","</ br>","</ BR>"), "\n", html_entity_decode($messageArray['subject']) . "\n" . html_entity_decode(htmlspecialchars_decode($bodyVar)));
  633.                    
  634.                     $messageArray['body'] = Data::sanitizeString4database($messageArray['body']);
  635.                     $messageArray['subject'] = Data::sanitizeString4database($messageArray['subject']);
  636.                    
  637.                     $bodyVar = htmlspecialchars_decode(strip_tags(str_replace("<br />", "\n",  $messageArray['body'])));
  638.                    
  639.                     //$bodyText = str_replace(array("<br>","<BR>","</br>","</BR>","</ br>","</ BR>"), "\n", html_entity_decode($cacheBody['subject']) . "\n" . html_entity_decode(htmlspecialchars_decode($bodyVar)));
  640.                     $bodyText = str_replace(array("<br>","<BR>","</br>","</BR>","</ br>","</ BR>", "2016"), "\n", $messageArray['subject']. "\n" . $messageArray['from_email']. "\n" . html_entity_decode($bodyVar));
  641.                     $bodyText = preg_replace("/\&\#[0-9]+\;/", 'a', $bodyText);
  642.                     $bodyText = preg_replace("/LTK[0-9]+X/", '', $bodyText);
  643.                     $bodyText = preg_replace("/[a-zA-Z][ ][a-zA-Z]/", "a", $bodyText);
  644.                     $bodyText = preg_replace("/[a-zA-Z]+/", "\n", $bodyText);
  645.                     $bodyText = preg_replace("/[^0-9\n]/", '', $bodyText);
  646.                     $bodyTextArray = explode("\n", $bodyText);
  647.                     $bodyTextArray = array_filter($bodyTextArray, function($string) {return isset($string[5]);});
  648.  
  649.                     $bodyTextArray = array_filter($bodyTextArray);
  650.                     $bodyTextArray = array_unique($bodyTextArray);
  651.                     $bodyTextArray = array_values($bodyTextArray);
  652.                     $realReferences = $bodyTextArray;
  653.                    
  654.                     $idCountry = Ticketing::getIdCountry($ticketId);
  655.                     if($idCountry && $idCountry != '0')
  656.                     {
  657.                         $mobilePrefixes = Ticketing::getMobilePrefixes($idCountry);
  658.                         if($mobilePrefixes)    
  659.                         {
  660.                             //$realReferences = array_filter($realReferences, function($string, $mobilePrefixes) {Dump::liveDump('/' . $mobilePrefixes . '/'); Dump::liveDump('' . $string . ''); return preg_match('/' . $mobilePrefixes . '/', $string);});
  661.                             foreach($realReferences as $index => $string)
  662.                             {
  663.                                 if(!preg_match('/' . $mobilePrefixes . '/', $string))
  664.                                     unset($realReferences[$index]);
  665.                             }
  666.                         }
  667.                         else
  668.                             $realReferences = array();
  669.                     }
  670.                     else
  671.                         $realReferences = array();
  672.                    
  673.                    
  674.                     if(empty($bodyTextArray))
  675.                         $bodyTextArray = "NULL";
  676.                     else
  677.                         $bodyTextArray = json_encode($bodyTextArray);
  678.                        
  679.                     if(empty($realReferences))
  680.                         $realReferences = "NULL";
  681.                     else
  682.                         $realReferences = json_encode($realReferences);
  683.                                            
  684.                    
  685.                     $data = array(
  686.                         'ltk' => $ticketId,
  687.                         'createDate' => $date,
  688.                         'type' => $messageArray['type'],
  689.                         'message_id' => $messageArray['message_id'],
  690.                         'to_email' => $messageArray['to_email'],
  691.                         'cc_email' => $messageArray['cc_email'],
  692.                         'bcc_email' => $messageArray['bcc_email'],
  693.                         'from_email' => $messageArray['from_email'],
  694.                         'from_name' => $messageArray['from_name'],
  695.                         'reply_email' => $messageArray['reply_email'],
  696.                         'subject' => $messageArray['subject'],
  697.                         'body' => Database::escape_string($messageArray['body']),
  698.                         'body_v' => Database::escape_string($bodyVar),
  699.                         'numbers' => $bodyTextArray,
  700.                         'numbers_reference' => $realReferences,
  701.                         'XTrigerMailbox' => $messageArray['XTrigerMailbox']
  702.                     );
  703.  
  704.                     $addData->setData($data);
  705.                     //if(1 == 1)
  706.                     if (!$addData->insertData())
  707.                         echo 'ERROR!!!!!!!!!!!!';
  708.                 }
  709.                
  710.             }
  711.             $totalTicketsCounter++;
  712.         }
  713.     }
  714.         //Dump::object('FILE CREATED ' . $startDate . ' - ' . $endDate . '<br />' . 'Total number of tickets: ' . count($xmlTicketData) . '<br /><br />Deleted tickets<br />' . join('<br />', $exisitngTickets), __FILE__ . " - " . __LINE__ . " - " . 'LP XML file created', true, 'tomislav.cipric@tango.hr');
  715.         //require_once('lp_newticket.php');
  716. }
  717. require_once $_SERVER['DOCUMENT_ROOT'] . '/include/script.end.php';
  718.  
  719. ?>
Add Comment
Please, Sign In to add comment