Exemplo n.º 1
0
            $version = $manifest['version'];
        }
        if (!is_writable("config.php")) {
            return $mod_strings['ERR_UW_CONFIG'];
        }
        $_SESSION['unzip_dir'] = clean_path($unzip_dir);
        $_SESSION['zip_from_dir'] = clean_path($zip_from_dir);
        logThis('unzip done.');
    } else {
        $unzip_dir = $_SESSION['unzip_dir'];
        $zip_from_dir = $_SESSION['zip_from_dir'];
    }
    //check if $_SESSION['unzip_dir'] and $_SESSION['zip_from_dir'] exist
    if (!isset($_SESSION['unzip_dir']) || !file_exists($_SESSION['unzip_dir']) || !isset($_SESSION['install_file']) || empty($_SESSION['install_file']) || !file_exists($_SESSION['install_file'])) {
        //redirect to start
        unlinkTempFiles();
        resetUwSession();
        echo 'Upload File not found so redirecting to Upgrade Start ';
        $redirect_new_wizard = $sugar_config['site_url'] . '/index.php?module=UpgradeWizard&action=index';
        echo '<form name="redirect" action="' . $redirect_new_wizard . '"  method="POST">';
        $upgrade_directories_not_found = <<<eoq
\t<table cellpadding="3" cellspacing="0" border="0">
\t\t<tr>
\t\t\t<th colspan="2" align="left">
\t\t\t\t<span class='error'><b>'Upload file missing or has been deleted. Refresh the page to go back to UpgradeWizard start'</b></span>
\t\t\t</th>
\t\t</tr>
\t</table>
eoq;
        $uwMain = $upgrade_directories_not_found;
        return '';
Exemplo n.º 2
0
function langPackUnpack($unpack_type, $full_file)
{
    global $sugar_config;
    global $base_upgrade_dir;
    global $base_tmp_upgrade_dir;
    $manifest = array();
    if (!empty($full_file)) {
        $base_filename = pathinfo(urldecode($full_file), PATHINFO_FILENAME);
    } else {
        return "Empty filename supplied";
    }
    $manifest_file = extractManifest($full_file, $base_tmp_upgrade_dir);
    if ($unpack_type == 'module') {
        $license_file = extractFile($full_file, 'LICENSE.txt', $base_tmp_upgrade_dir);
    }
    if (is_file($manifest_file)) {
        if ($unpack_type == 'module' && is_file($license_file)) {
            copy($license_file, $base_upgrade_dir . '/' . $unpack_type . '/' . $base_filename . "-license.txt");
        }
        copy($manifest_file, $base_upgrade_dir . '/' . $unpack_type . '/' . $base_filename . "-manifest.php");
        require_once $manifest_file;
        validate_manifest($manifest);
        $upgrade_zip_type = $manifest['type'];
        mkdir_recursive("{$base_upgrade_dir}/{$upgrade_zip_type}");
        $target_path = "{$base_upgrade_dir}/{$upgrade_zip_type}/{$base_filename}";
        $target_manifest = $target_path . "-manifest.php";
        if (isset($manifest['icon']) && $manifest['icon'] != "") {
            $icon_location = extractFile($full_file, $manifest['icon'], $base_tmp_upgrade_dir);
            $path_parts = pathinfo($icon_location);
            copy($icon_location, $target_path . "-icon." . $path_parts['extension']);
        }
        // move file from uploads to cache
        // FIXME: where should it be?
        if (copy($full_file, $target_path . ".zip")) {
            copy($manifest_file, $target_manifest);
            unlink($full_file);
            // remove tempFile
            return "The file {$base_filename} has been uploaded.<br>\n";
        } else {
            unlinkTempFiles($manifest_file, $full_file);
            return "There was an error uploading the file, please try again!<br>\n";
        }
    } else {
        die("The zip file is missing a manifest.php file.  Cannot proceed.");
    }
    unlinkTempFiles($manifest_file, '');
}
        document.getElementById('default_decimal_seperator').value = ',';        
     }else{
        document.getElementById('sigDigits').value = '2';   
        document.getElementById('default_number_grouping_seperator').value = ',';
        document.getElementById('default_decimal_seperator').value = '.';        
     } 
     
     
        
    }
EOQ;
//hide this in typical mode
if (isset($_SESSION['install_type']) && !empty($_SESSION['install_type']) && strtolower($_SESSION['install_type']) == 'custom') {
    $out .= <<<EOQ
    function setNamePreview(){
        setPreview();
        document.getElementById('nameTargetDiv').innerHTML = document.getElementById('nameTarget').value;
    }
    setNamePreview();
EOQ;
}
$out .= <<<EOQ
</script>

</body>
</html>
EOQ;
echo $out;
unlinkTempFiles('', '');
////    END PAGEOUTPUT
///////////////////////////////////////////////////////////////////////////////
Exemplo n.º 4
0
function langPackUnpack($unpack_type = 'langpack', $full_file = '')
{
    global $sugar_config;
    global $base_upgrade_dir;
    global $base_tmp_upgrade_dir;
    $manifest = array();
    if (!empty($full_file)) {
        $tempFile = $full_file;
        $base_filename = urldecode($tempFile);
        $base_filename = preg_replace("#\\\\#", "/", $base_filename);
        $base_filename = basename($base_filename);
    } else {
        $tempFile = getcwd() . '/' . $sugar_config['upload_dir'] . $_FILES['language_pack']['name'];
        $base_filename = $_FILES['language_pack']['name'];
    }
    $manifest_file = extractManifest($tempFile, $base_tmp_upgrade_dir);
    if ($unpack_type == 'module') {
        $license_file = extractFile($tempFile, 'LICENSE.txt', $base_tmp_upgrade_dir);
    }
    if (is_file($manifest_file)) {
        if ($unpack_type == 'module' && is_file($license_file)) {
            copy($license_file, getcwd() . '/' . $sugar_config['upload_dir'] . 'upgrades/' . $unpack_type . '/' . remove_file_extension($base_filename) . "-license.txt");
        }
        copy($manifest_file, getcwd() . '/' . $sugar_config['upload_dir'] . 'upgrades/' . $unpack_type . '/' . remove_file_extension($base_filename) . "-manifest.php");
        require_once $manifest_file;
        validate_manifest($manifest);
        $upgrade_zip_type = $manifest['type'];
        // exclude the bad permutations
        /*if($upgrade_zip_type != "langpack") {
              unlinkTempFiles($manifest_file, $tempFile);
              die( "You can only upload module packs, theme packs, and language packs on this page." );
          }*/
        //$base_filename = urldecode( $_REQUEST['language_pack_escaped'] );
        $base_filename = preg_replace("#\\\\#", "/", $base_filename);
        $base_filename = basename($base_filename);
        mkdir_recursive("{$base_upgrade_dir}/{$upgrade_zip_type}");
        $target_path = getcwd() . "/{$base_upgrade_dir}/{$upgrade_zip_type}/{$base_filename}";
        $target_manifest = remove_file_extension($target_path) . "-manifest.php";
        if (isset($manifest['icon']) && $manifest['icon'] != "") {
            $icon_location = extractFile($tempFile, $manifest['icon'], $base_tmp_upgrade_dir);
            $path_parts = pathinfo($icon_location);
            copy($icon_location, remove_file_extension($target_path) . "-icon." . $path_parts['extension']);
        }
        // move file from cache/upload to cache/upload/langpack
        if (copy($tempFile, $target_path)) {
            copy($manifest_file, $target_manifest);
            unlink($tempFile);
            // remove tempFile
            return "The file {$base_filename} has been uploaded.<br>\n";
        } else {
            unlinkTempFiles($manifest_file, $tempFile);
            return "There was an error uploading the file, please try again!<br>\n";
        }
    } else {
        die("The zip file is missing a manifest.php file.  Cannot proceed.");
    }
    unlinkTempFiles($manifest_file, '');
}
Exemplo n.º 5
0
function preflightCheck()
{
    require_once 'modules/UpgradeWizard/uw_files.php';
    global $sugar_config;
    global $mod_strings;
    global $sugar_version;
    if (!isset($sugar_version) || empty($sugar_version)) {
        require_once './sugar_version.php';
    }
    unset($_SESSION['rebuild_relationships']);
    unset($_SESSION['rebuild_extensions']);
    // don't bother if are rechecking
    $manualDiff = array();
    if (!isset($_SESSION['unzip_dir']) || empty($_SESSION['unzip_dir'])) {
        logThis('unzipping files in upgrade archive...');
        $errors = array();
        $base_upgrade_dir = $sugar_config['upload_dir'] . "/upgrades";
        $base_tmp_upgrade_dir = "{$base_upgrade_dir}/temp";
        $unzip_dir = '';
        //Following is if User logged out unexpectedly and then logged into UpgradeWizard again.
        //also come up with mechanism to read from upgrade-progress file.
        if (!isset($_SESSION['install_file']) || empty($_SESSION['install_file']) || !is_file($_SESSION['install_file'])) {
            if (file_exists(clean_path($base_tmp_upgrade_dir)) && ($handle = opendir(clean_path($base_tmp_upgrade_dir)))) {
                while (false !== ($file = readdir($handle))) {
                    if ($file != "." && $file != "..") {
                        //echo $base_tmp_upgrade_dir."/".$file.'</br>';
                        if (is_file($base_tmp_upgrade_dir . "/" . $file . "/manifest.php")) {
                            require_once $base_tmp_upgrade_dir . "/" . $file . "/manifest.php";
                            $package_name = $manifest['copy_files']['from_dir'];
                            //echo file_exists($base_tmp_upgrade_dir."/".$file."/".$package_name).'</br>';
                            if (file_exists($base_tmp_upgrade_dir . "/" . $file . "/" . $package_name) && file_exists($base_tmp_upgrade_dir . "/" . $file . "/scripts") && file_exists($base_tmp_upgrade_dir . "/" . $file . "/manifest.php")) {
                                //echo 'Yeah this the directory '. $base_tmp_upgrade_dir."/".$file;
                                $unzip_dir = $base_tmp_upgrade_dir . "/" . $file;
                                if (file_exists($sugar_config['upload_dir'] . '/upgrades/patch/' . $package_name . '.zip')) {
                                    $_SESSION['install_file'] = $sugar_config['upload_dir'] . '/upgrades/patch/' . $package_name . '.zip';
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        if (!isset($_SESSION['install_file']) || empty($_SESSION['install_file'])) {
            unlinkTempFiles();
            resetUwSession();
            echo 'Upload File not found so redirecting to Upgrade Start ';
            $redirect_new_wizard = $sugar_config['site_url'] . '/index.php?module=UpgradeWizard&action=index';
            echo '<form name="redirect" action="' . $redirect_new_wizard . '"  method="POST">';
            $upgrade_directories_not_found = <<<eoq
\t<table cellpadding="3" cellspacing="0" border="0">
\t\t<tr>
\t\t\t<th colspan="2" align="left">
\t\t\t\t<span class='error'><b>'Upload file missing or has been deleted. Refresh the page to go back to UpgradeWizard start'</b></span>
\t\t\t</th>
\t\t</tr>
\t</table>
eoq;
            $uwMain = $upgrade_directories_not_found;
            return '';
        }
        $install_file = urldecode($_SESSION['install_file']);
        $show_files = true;
        if (empty($unzip_dir)) {
            $unzip_dir = mk_temp_dir($base_tmp_upgrade_dir);
        }
        $zip_from_dir = ".";
        $zip_to_dir = ".";
        $zip_force_copy = array();
        if (!$unzip_dir) {
            logThis('Could not create a temporary directory using mk_temp_dir( $base_tmp_upgrade_dir )');
            die($mod_strings['ERR_UW_NO_CREATE_TMP_DIR']);
        }
        //double check whether unzipped .
        if (file_exists($unzip_dir . "/scripts") && file_exists($unzip_dir . "/manifest.php")) {
            //already unzipped
        } else {
            unzip($install_file, $unzip_dir);
        }
        // assumption -- already validated manifest.php at time of upload
        require_once "{$unzip_dir}/manifest.php";
        if (isset($manifest['copy_files']['from_dir']) && $manifest['copy_files']['from_dir'] != "") {
            $zip_from_dir = $manifest['copy_files']['from_dir'];
        }
        if (isset($manifest['copy_files']['to_dir']) && $manifest['copy_files']['to_dir'] != "") {
            $zip_to_dir = $manifest['copy_files']['to_dir'];
        }
        if (isset($manifest['copy_files']['force_copy']) && $manifest['copy_files']['force_copy'] != "") {
            $zip_force_copy = $manifest['copy_files']['force_copy'];
        }
        if (isset($manifest['version'])) {
            $version = $manifest['version'];
        }
        if (!is_writable("config.php")) {
            return $mod_strings['ERR_UW_CONFIG'];
        }
        $_SESSION['unzip_dir'] = clean_path($unzip_dir);
        $_SESSION['zip_from_dir'] = clean_path($zip_from_dir);
        //logThis('unzip done.');
    } else {
        $unzip_dir = $_SESSION['unzip_dir'];
        $zip_from_dir = $_SESSION['zip_from_dir'];
    }
    //check if $_SESSION['unzip_dir'] and $_SESSION['zip_from_dir'] exist
    if (!isset($_SESSION['unzip_dir']) || !file_exists($_SESSION['unzip_dir']) || !isset($_SESSION['install_file']) || empty($_SESSION['install_file']) || !file_exists($_SESSION['install_file'])) {
        //redirect to start
        unlinkTempFiles();
        resetUwSession();
        echo 'Upload File not found so redirecting to Upgrade Start ';
        $redirect_new_wizard = $sugar_config['site_url'] . '/index.php?module=UpgradeWizard&action=index';
        echo '<form name="redirect" action="' . $redirect_new_wizard . '"  method="POST">';
        $upgrade_directories_not_found = <<<eoq
\t<table cellpadding="3" cellspacing="0" border="0">
\t\t<tr>
\t\t\t<th colspan="2" align="left">
\t\t\t\t<span class='error'><b>'Upload file missing or has been deleted. Refresh the page to go back to UpgradeWizard start'</b></span>
\t\t\t</th>
\t\t</tr>
\t</table>
eoq;
        $uwMain = $upgrade_directories_not_found;
        return '';
    }
    //copy minimum required files
    fileCopy('include/utils/sugar_file_utils.php');
    if (file_exists('include/utils/file_utils.php')) {
    }
    $upgradeFiles = findAllFiles(clean_path("{$unzip_dir}/{$zip_from_dir}"), array());
    $cache_html_files = array();
    if (is_dir("{$GLOBALS['sugar_config']['cache_dir']}layout")) {
        //$cache_html_files = findAllFilesRelative( "cache/layout", array());
    }
    // get md5 sums
    $md5_string = array();
    if (file_exists(clean_path(getcwd() . '/files.md5'))) {
        require clean_path(getcwd() . '/files.md5');
    }
    // file preflight checks
    logThis('verifying md5 checksums for files...');
    foreach ($upgradeFiles as $file) {
        if (in_array(str_replace(clean_path("{$unzip_dir}/{$zip_from_dir}") . "/", '', $file), $uw_files)) {
            continue;
        }
        // skip already loaded files
        if (strpos($file, '.md5')) {
            continue;
        }
        // skip md5 file
        // normalize file paths
        $file = clean_path($file);
        // check that we can move/delete the upgraded file
        if (!is_writable($file)) {
            $errors[] = $mod_strings['ERR_UW_FILE_NOT_WRITABLE'] . ": " . $file;
        }
        // check that destination files are writable
        $destFile = getcwd() . str_replace(clean_path($unzip_dir . '/' . $zip_from_dir), '', $file);
        if (is_file($destFile)) {
            // of course it needs to exist first...
            if (!is_writable($destFile)) {
                $errors[] = $mod_strings['ERR_UW_FILE_NOT_WRITABLE'] . ": " . $destFile;
            }
        }
        ///////////////////////////////////////////////////////////////////////
        ////	DIFFS
        // compare md5s and build up a manual merge list
        $targetFile = clean_path("." . str_replace(getcwd(), '', $destFile));
        $targetMd5 = '0';
        if (is_file($destFile)) {
            if (strpos($targetFile, '.php')) {
                // handle PHP files that were hit with the security regex
                $fp = '';
                if (function_exists('sugar_fopen')) {
                    $fp = sugar_fopen($destFile, 'r');
                } else {
                    $fp = fopen($destFile, 'r');
                }
                $filesize = filesize($destFile);
                if ($filesize > 0) {
                    $fileContents = fread($fp, $filesize);
                    $targetMd5 = md5($fileContents);
                }
            } else {
                $targetMd5 = md5_file($destFile);
            }
        }
        if (isset($md5_string[$targetFile]) && $md5_string[$targetFile] != $targetMd5) {
            logThis('found a file with a differing md5: [' . $targetFile . ']');
            $manualDiff[] = $destFile;
        }
        ////	END DIFFS
        ///////////////////////////////////////////////////////////////////////
    }
    logThis('md5 verification done.');
    $errors['manual'] = $manualDiff;
    return $errors;
}
Exemplo n.º 6
0
/**
 * does post-post-install stuff
 * @param array persistence
 * @return array persistence
 */
function commitAjaxFinalTouches($persistence)
{
    global $current_user;
    global $locale;
    global $mod_strings;
    global $sugar_version;
    if (empty($sugar_version)) {
        require 'sugar_version.php';
    }
    // convert to UTF8 if needed
    if (!empty($persistence['allTables'])) {
        executeConvertTablesSql($db->dbType, $persistence['allTables']);
    }
    // rebuild
    logThis('Performing UWrebuild()...');
    UWrebuild();
    logThis('UWrebuild() done.');
    // upgrade history
    registerUpgrade($persistence);
    // flag to say upgrade has completed
    $persistence['upgrade_complete'] = true;
    // reminders if needed
    ///////////////////////////////////////////////////////////////////////////////
    ////	HANDLE REMINDERS
    if (count($persistence['skipped_files']) > 0) {
        $desc = $mod_strings['LBL_UW_COMMIT_ADD_TASK_OVERVIEW'] . "\n\n";
        $desc .= $mod_strings['LBL_UW_COMMIT_ADD_TASK_DESC_1'];
        $desc .= $persistence['uw_restore_dir'] . "\n\n";
        $desc .= $mod_strings['LBL_UW_COMMIT_ADD_TASK_DESC_2'] . "\n\n";
        foreach ($persistence['skipped_files'] as $file) {
            $desc .= $file . "\n";
        }
        //MFH #13468
        $nowDate = gmdate($timedate->dbDateFormat);
        $nowTime = gmdate($timedate->dbTimeFormat);
        $nowDateTime = $nowDate . ' ' . $nowTime;
        if ($_REQUEST['addTaskReminder'] == 'remind') {
            logThis('Adding Task for admin for manual merge.');
            $task = new Task();
            $task->name = $mod_strings['LBL_UW_COMMIT_ADD_TASK_NAME'];
            $task->description = $desc;
            $task->date_due = $nowDate;
            $task->time_due = $nowTime;
            $task->priority = 'High';
            $task->status = 'Not Started';
            $task->assigned_user_id = $current_user->id;
            $task->created_by = $current_user->id;
            $task->date_entered = $nowDateTime;
            $task->date_modified = $nowDateTime;
            $task->save();
        }
        if ($_REQUEST['addEmailReminder'] == 'remind') {
            logThis('Sending Reminder for admin for manual merge.');
            $email = new Email();
            $email->assigned_user_id = $current_user->id;
            $email->name = $mod_strings['LBL_UW_COMMIT_ADD_TASK_NAME'];
            $email->description = $desc;
            $email->description_html = nl2br($desc);
            $email->from_name = $current_user->full_name;
            $email->from_addr = $current_user->email1;
            $email->to_addrs_arr = $email->parse_addrs($current_user->email1, '', '', '');
            $email->cc_addrs_arr = array();
            $email->bcc_addrs_arr = array();
            $email->date_entered = $nowDateTime;
            $email->date_modified = $nowDateTime;
            $email->send();
            $email->save();
        }
    }
    ////	HANDLE REMINDERS
    ///////////////////////////////////////////////////////////////////////////////
    // clean up
    unlinkTempFiles();
    ob_start();
    echo 'done';
    ob_flush();
    return $persistence;
}
Exemplo n.º 7
0
        fix_dropdown_list();
    }
    set_upgrade_progress('end', 'in_progress', 'end', 'in_progress');
    /////////////////////////Old Logger settings///////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////
    if (function_exists('deleteCache')) {
        set_upgrade_progress('end', 'in_progress', 'deleteCache', 'in_progress');
        @deleteCache();
        set_upgrade_progress('end', 'in_progress', 'deleteCache', 'done');
    }
    ///////////////////////////////////////////////////////////////////////////////
    ////	TAKE OUT TRASH
    if (empty($errors)) {
        set_upgrade_progress('end', 'in_progress', 'unlinkingfiles', 'in_progress');
        logThis('Taking out the trash, unlinking temp files.', $path);
        unlinkTempFiles(true);
        set_upgrade_progress('end', 'in_progress', 'unlinkingfiles', 'done');
    }
    ///////////////////////////////////////////////////////////////////////////////
    ////	HANDLE REMINDERS
    if (empty($errors)) {
        commitHandleReminders($skippedFiles, $path);
    }
    if (file_exists(clean_path(getcwd()) . '/original451files')) {
        rmdir_recursive(clean_path(getcwd()) . '/original451files');
    }
    require_once 'modules/Administration/Administration.php';
}
//Also set the tracker settings if  flavor conversion ce->pro or ce->ent
if (isset($_SESSION['current_db_version']) && isset($_SESSION['target_db_version'])) {
    if ($_SESSION['current_db_version'] == $_SESSION['target_db_version']) {