Files
crm.twinpol.com/modules/InboundEmail/parseEncoding.php

222 lines
7.4 KiB
PHP
Raw Permalink Normal View History

2025-05-12 15:44:39 +00:00
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
/*********************************************************************************
* SugarCRM is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
* technical reasons, the Appropriate Legal Notices must display the words
* "Powered by SugarCRM".
********************************************************************************/
/*********************************************************************************
* Description: TODO: To be written.
* Portions created by SugarCRM are Copyright (C) SugarCRM, Inc.
* All Rights Reserved.
* Contributor(s): ______________________________________..
********************************************************************************/
// takes a file as an argument and parses the stuff as text;
function write_array_to_file( $the_name, $the_array, $the_file ) {
$the_string = "<?php\n" .
'\n
if(empty(\$GLOBALS["sugarEntry"])) die("Not A Valid Entry Point");
/*********************************************************************************
* SugarCRM is a customer relationship management program developed by
* SugarCRM, Inc. Copyright (C) 2004-2010 SugarCRM Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along with
* this program; if not, see http://www.gnu.org/licenses or write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
* SugarCRM" logo. If the display of the logo is not reasonably feasible for
* technical reasons, the Appropriate Legal Notices must display the words
* "Powered by SugarCRM".
********************************************************************************/' .
"\n \$$the_name = " .
var_export_helper( $the_array ) .
";\n?>\n";
if( $fh = @sugar_fopen( $the_file, "w" ) ){
fputs( $fh, $the_string);
fclose( $fh );
return( true );
}
else{
return( false );
}
}
function var_export_helper($tempArray) {
if(!is_array($tempArray)){
return var_export($tempArray, true);
}
$addNone = 0;
foreach($tempArray as $key=>$val)
{
if($key == '' && $val == '')
$addNone = 1;
}
$newArray = var_export($tempArray, true);
if($addNone)
{
$newArray = str_replace("array (", "array ( '' => '',", $newArray);
}
return $newArray;
}
function grabFiles($url) {
$dh = fsockopen($url, 80);
while($fileName = readdir($dh)) {
if(is_dir($url.$fileName)) {
grabFiles($url.$fileName);
}
$fh = sugar_fopen($url.$fileName, "r");
$fileContent = fread($fh, filesize($url.$fileName));
$writeFile = "./{$fileName}";
$fhLocal = sugar_fopen($writeFile, "w");
fwrite($writeFile, $fileContent);
}
}
///////////////////////////////////////////////////////////////////////////////
//// START CODE
while($file = readdir($dhUnicode)) {
if(is_dir($file)) {
$dhUniDeep = opendir("http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/{$file}");
}
}
$dh = opendir("./");
$search = array(" ", " ", " ", " ");
$replace = array("\t","\t","\t","\t");
if(is_resource($dh)) {
while($inputFile = readdir($dh)) {
if(strpos($inputFile, "php")) {
continue;
}
$inputFileVarSafe = str_replace("-","_",$inputFile);
$outputFile = $inputFileVarSafe.".php";
$fh = sugar_fopen($inputFile, "r");
if(is_resource($fh)) {
$charset = array();
while($line = fgets($fh)) {
$commentPos = strpos($line, "#");
if($commentPos == 0) {
continue; // skip comment strings
}
$exLine = str_replace($search, $replace, $line);
$exLine = explode("\t", $line);
$count = count($exLine);
if($count < 2) {
echo "count was {$count} :: file is {$inputFile} :: Error parsing line: {$line}\r";
continue; // unexpected explode
}
// we know 0 is charset encoding
// we know 1 is unicode in hex
$countExLine = count($exLine);
for($i=1; $i<$countExLine; $i++) {
$exLine[$i] = trim($exLine[$i]);
if($exLine[$i] != "") {
$unicode = $exLine[$i];
break 1;
}
}
$charset[$exLine[0]] = $unicode;
}
if(count($charset) > 0) {
write_array_to_file($inputFileVarSafe, $charset, $outputFile);
}
} else {
echo "Error occured reading line from file!\r";
}
}
} else {
die("no directory handle");
}
echo "DONE\r";
?>