$file = "{$unzip_dir}/" . constant('SUGARCRM_POST_INSTALL_FILE');
     if (is_file($file)) {
         //set_upgrade_progress('commit','in_progress','post_install','in_progress');
         $progArray['post_install'] = 'in_progress';
         post_install_progress($progArray, 'set');
         global $moduleList;
         include $file;
         post_install();
         // cn: only run conversion if admin selects "Sugar runs SQL"
         if (!empty($_SESSION['allTables']) && $_SESSION['schema_change'] == 'sugar') {
             executeConvertTablesSql($_SESSION['allTables']);
         }
         //set process to done
         $progArray['post_install'] = 'done';
         //set_upgrade_progress('commit','in_progress','post_install','done');
         post_install_progress($progArray, 'set');
     }
 }
 //clean vardefs
 logThis('Performing UWrebuild()...', $path);
 ob_start();
 @UWrebuild();
 ob_end_clean();
 logThis('UWrebuild() done.', $path);
 logThis('begin check default permissions .', $path);
 checkConfigForPermissions();
 logThis('end check default permissions .', $path);
 logThis('begin check logger settings .', $path);
 checkLoggerSettings();
 logThis('begin check logger settings .', $path);
 logThis('begin check lead conversion settings .', $path);
Example #2
0
function parseAndExecuteSqlFile($sqlScript, $forStepQuery = '', $resumeFromQuery = '')
{
    global $sugar_config;
    $alterTableSchema = '';
    $sqlErrors = array();
    if (!isset($_SESSION['sqlSkippedQueries'])) {
        $_SESSION['sqlSkippedQueries'] = array();
    }
    $db =& DBManagerFactory::getInstance();
    $is_mysql = false;
    if ($sugar_config['dbconfig']['db_type'] == 'mysql') {
        $is_mysql = true;
    }
    if ($sugar_config['dbconfig']['db_type'] == 'oci8') {
        $db->query("CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB)\n\t\t\t\t\tRETURN CLOB\n\t\t\t\t\tAS\n\t\t\t\t\t  v_clob    CLOB;\n\t\t\t\t\t  v_varchar VARCHAR2(32767);\n\t\t\t\t\t  v_start   PLS_INTEGER := 1;\n\t\t\t\t\t  v_buffer  PLS_INTEGER := 32767;\n\t\t\t\t\tBEGIN\n\t\t\t\t\t  DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);\n\t\t\t\t\t  \n\t\t\t\t\t  FOR i IN 1..CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer)\n\t\t\t\t\t  LOOP\n\t\t\t\t\t    \n\t\t\t\t\t     v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start));\n\t\t\t\t\t \n\t\t\t\t\t           DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);\n\t\t\t\t\t \n\t\t\t\t\t        v_start := v_start + v_buffer;\n\t\t\t\t\t    END LOOP;\n\t\t\t\t\t    \n\t\t\t\t\t   RETURN v_clob;\n\t\t\t\t\t  \n\t\t\t\t\tEND blob_to_clob;");
    }
    if (strpos($resumeFromQuery, ",") != false) {
        $resumeFromQuery = explode(",", $resumeFromQuery);
        if (is_array($resumeFromQuery)) {
            //print_r('RES ARRAY '.$resumeFromQuery[0].'</br>');
        }
    }
    if (file_exists($sqlScript)) {
        $fp = fopen($sqlScript, 'r');
        $contents = fread($fp, filesize($sqlScript));
        $anyScriptChanges = $contents;
        $resumeAfterFound = false;
        if (rewind($fp)) {
            $completeLine = '';
            $count = 0;
            while ($line = fgets($fp)) {
                if (strpos($line, '--') === false) {
                    $completeLine .= " " . trim($line);
                    if (strpos($line, ';') !== false) {
                        $query = '';
                        $query = str_replace(';', '', $completeLine);
                        //if resume from query is not null then find out from where
                        //it should start executing the query.
                        if ($query != null && $resumeFromQuery != null) {
                            if (!$resumeAfterFound) {
                                if (strpos($query, ",") != false) {
                                    $queArray = array();
                                    $queArray = explode(",", $query);
                                    for ($i = 0; $i < sizeof($resumeFromQuery); $i++) {
                                        if (strcmp(strtolower(trim($resumeFromQuery[$i])), strtolower(trim($queArray[$i]))) == 0) {
                                            //echo 'mat found '.$queArray[$i].'</br>';
                                            $resumeAfterFound = true;
                                        } else {
                                            $resumeAfterFound = false;
                                            break;
                                        }
                                    }
                                    //for
                                } elseif (strcmp(strtolower(trim($resumeFromQuery)), strtolower(trim($query))) == 0) {
                                    $resumeAfterFound = true;
                                }
                            }
                            if ($resumeAfterFound) {
                                $count++;
                            }
                            // if $count=1 means it is just found so skip the query. Run the next one
                            if ($query != null && $resumeAfterFound && $count > 1) {
                                $tableName = '';
                                if ($is_mysql) {
                                    $tableName = getAlterTable($query);
                                    if (!empty($tableName)) {
                                        $db->query('ALTER TABLE ' . $tableName . ' DISABLE KEYS');
                                    }
                                }
                                $db->query($query);
                                if (!empty($tableName)) {
                                    $db->query('ALTER TABLE ' . $tableName . ' ENABLE KEYS');
                                }
                                $progQuery[$forStepQuery] = $query;
                                post_install_progress($progQuery, $action = 'set');
                                if ($db->checkError()) {
                                    //put in the array to use later on
                                    $_SESSION['sqlSkippedQueries'][] = $query;
                                }
                            }
                            //if
                        } elseif ($query != null) {
                            $tableName = '';
                            if ($is_mysql) {
                                $tableName = getAlterTable($query);
                                if (!empty($tableName)) {
                                    $db->query('ALTER TABLE ' . $tableName . ' DISABLE KEYS');
                                }
                            }
                            $db->query($query);
                            if (!empty($tableName)) {
                                $db->query('ALTER TABLE ' . $tableName . ' ENABLE KEYS');
                            }
                            $progQuery[$forStepQuery] = $query;
                            post_install_progress($progQuery, $action = 'set');
                            if ($db->checkError()) {
                                //put in the array to use later on
                                $_SESSION['sqlSkippedQueries'][] = $query;
                            }
                        }
                        $completeLine = '';
                    }
                }
            }
            //while
        }
    }
}
Example #3
0
function parseAndExecuteSqlFile($sqlScript, $forStepQuery = '', $resumeFromQuery = '')
{
    global $sugar_config;
    $alterTableSchema = '';
    $sqlErrors = array();
    if (!isset($_SESSION['sqlSkippedQueries'])) {
        $_SESSION['sqlSkippedQueries'] = array();
    }
    $db = DBManagerFactory::getInstance();
    $disable_keys = $db->dbType == "mysql";
    // have to use old way for now for upgrades
    if (strpos($resumeFromQuery, ",") != false) {
        $resumeFromQuery = explode(",", $resumeFromQuery);
    }
    if (file_exists($sqlScript)) {
        $fp = fopen($sqlScript, 'r');
        $contents = stream_get_contents($fp);
        $anyScriptChanges = $contents;
        $resumeAfterFound = false;
        if (rewind($fp)) {
            $completeLine = '';
            $count = 0;
            while ($line = fgets($fp)) {
                if (strpos($line, '--') === false) {
                    $completeLine .= " " . trim($line);
                    if (strpos($line, ';') !== false) {
                        $query = '';
                        $query = str_replace(';', '', $completeLine);
                        //if resume from query is not null then find out from where
                        //it should start executing the query.
                        if ($query != null && $resumeFromQuery != null) {
                            if (!$resumeAfterFound) {
                                if (strpos($query, ",") != false) {
                                    $queArray = explode(",", $query);
                                    for ($i = 0; $i < sizeof($resumeFromQuery); $i++) {
                                        if (strcasecmp(trim($resumeFromQuery[$i]), trim($queArray[$i])) == 0) {
                                            $resumeAfterFound = true;
                                        } else {
                                            $resumeAfterFound = false;
                                            break;
                                        }
                                    }
                                    //for
                                } elseif (strcasecmp(trim($resumeFromQuery), trim($query)) == 0) {
                                    $resumeAfterFound = true;
                                }
                            }
                            if ($resumeAfterFound) {
                                $count++;
                            }
                            // if $count=1 means it is just found so skip the query. Run the next one
                            if ($query != null && $resumeAfterFound && $count > 1) {
                                $tableName = getAlterTable($query);
                                if ($disable_keys) {
                                    handleExecuteSqlKeys($db, $tableName, true);
                                }
                                $db->query($query);
                                if ($db->checkError()) {
                                    //put in the array to use later on
                                    $_SESSION['sqlSkippedQueries'][] = $query;
                                }
                                if ($disable_keys) {
                                    handleExecuteSqlKeys($db, $tableName, false);
                                }
                                $progQuery[$forStepQuery] = $query;
                                post_install_progress($progQuery, $action = 'set');
                            }
                            //if
                        } elseif ($query != null) {
                            $tableName = getAlterTable($query);
                            if ($disable_keys) {
                                handleExecuteSqlKeys($db, $tableName, true);
                            }
                            $db->query($query);
                            if ($disable_keys) {
                                handleExecuteSqlKeys($db, $tableName, false);
                            }
                            $progQuery[$forStepQuery] = $query;
                            post_install_progress($progQuery, $action = 'set');
                            if ($db->checkError()) {
                                //put in the array to use later on
                                $_SESSION['sqlSkippedQueries'][] = $query;
                            }
                        }
                        $completeLine = '';
                    }
                }
            }
            //while
        }
    }
}
function post_install()
{
    global $unzip_dir;
    global $sugar_config;
    global $sugar_version;
    global $path;
    global $_SESSION;
    if (!isset($_SESSION['sqlSkippedQueries'])) {
        $_SESSION['sqlSkippedQueries'] = array();
    }
    initialize_session_vars();
    if (!isset($unzip_dir) || $unzip_dir == null) {
        $unzip_dir = $_SESSION['unzip_dir'];
    }
    _logThis('Entered post_install function.', $path);
    $self_dir = "{$unzip_dir}/scripts";
    ///////////////////////////////////////////////////////////////////////////
    ////	PUT DATABASE UPGRADE SCRIPT HANDLING HERE
    $new_sugar_version = getUpgradeVersion();
    $post_action = status_post_install_action('sql_query');
    if ($post_action != null) {
        if ($post_action != 'done') {
            //continue from where left in previous run
            runSqlFiles($sugar_version, $new_sugar_version, 'sql_query', $post_action);
            $currProg['sql_query'] = 'done';
            post_install_progress($currProg, 'set');
        }
    } else {
        //never ran before
        runSqlFiles($sugar_version, $new_sugar_version, 'sql_query');
        $currProg['sql_query'] = 'done';
        post_install_progress($currProg, 'set');
    }
    genericFunctions();
    upgradeDbAndFileVersion($new_sugar_version);
    //Remove jssource/src_files sub-directories if they still exist
    $jssource_dirs = array('jssource/src_files/include/javascript/ext-2.0', 'jssource/src_files/include/javascript/ext-1.1.1', 'jssource/src_files/include/javascript/yui');
    foreach ($jssource_dirs as $js_dir) {
        if (file_exists($js_dir)) {
            _logThis("Remove {$js_dir} directory");
            rmdir_recursive($js_dir);
            _logThis("Finished removing {$js_dir} directory");
        }
    }
}