YetiForceCompany / YetiForceCRM

Our team created for you one of the most innovative CRM systems that supports mainly business processes and allows for customization according to your needs. Be ahead of your competition and implement YetiForce!
https://yetiforce.com
Other
1.74k stars 749 forks source link

[Discussion] Manual/Fake Upgrade from 3.4 to v4.0 #4100

Closed ldgbc closed 7 years ago

ldgbc commented 7 years ago

Issue

I along few other are having issue install v4.0. Based on my guess it due to the Server Requirement, in particularly the SQLAND and perhaps the limitation of Shared Hosting. My current host still have another 6 months left I don't want to move hosting yet and is stuck with v3.4 for the meantime.

This Issue is to discuss method of how to Manually Updating your v3.40.

Basically the idea is to copy/paste the v4.0 or the latest development version files to your v3.4 folder. Test it out and hopefully everything work. Use the process of elimination and trial and error to determine what can be change and what cannot be change.

I'll document this overtime as a I (hopefully) make a fake v4.0

Actual Behavior

Blank page or not functionally.

Expected Behavior

Using v3.40 as normal but with update patching.

How to trigger the error

Your Environment

migoi commented 7 years ago

nothing in logfile what causes the problem? I've done two test upgrades here with my non-production yetiforce installation.

ldgbc commented 7 years ago

Thanks @migoi . I notice you been contributing many code changes. Hopefully one of those fixed this issue.

I posted a few logs and no one can help from the look of it. There a few issue/thread lying around that got full of details. Here are some example and relevant topic: #3996 #3910 #4015 #4007 #4028 #4035 There also this interesting Issue: #4058 but I haven't got the chances to look at it yet. I'm curious in trying to Disable SQLAND library and see if I can reproduce it. If it reproducible then it mean that dead end. If it isn't reproducible then it mean that there some other Webserver Requirement I might have missed.

may your installation does not know the filepath (ROOT_DIRECTORY) so it does not see the complete path and thus it fails

Perhaps I need to edit the coding here and a miracle might appear.


Anyway, here is the result of my manual update..

This will add the "Modern" skin/theme. A blue looking type. I like it more than Twilight because it more squeezed so I can see more data. It does have 1 issue from my testing though. There multiple (2 to 7 of them) Loading Animation rather than just 1 when you make edit/change/saving.

/layouts/basic/skins/           This folder can be replaced by v4.0
/modules/Vtiger/helpers/Util.php            This file need to add the new code so the setting appear on your User option 
['twilight' => '#404952', 'blue' => '#00509e', 'modern' => '#0d9605'];

I included the files that include that changes. You can download them if you can't be bother. Two version, one with just that line changed. One with other v4.0 coding.

Util-3-and-4-mixed-code.php.zip Util3-with-modern-theme.php.zip


I want to try the update OpenStreetMap module but that is more difficult. It will cause a Contact Editing/Saving bug loop so I can't use it until I figure out how.


With most of the Module, these two folder need to stay as 3.4 or else you will get a blank page. "/model" and "/view"


DAV module seem to be okay in the sense that I haven't run into any bug yet. However it doesn't work for me. I manage to sync 1 contact from Phone to Yeti but I can't sync more, not sure why. But at least the v.4 fixed the "running" loop in CRON.

Here are the result:

api/
libraries/SabreDAV
modules/API/models/     Leave "DAV.php" as v3.4, If changed to v4 you cannot see/add Key,
modules/API/cron/ 

Documents Module Changing these file didn't add the "Mass Add Document" Icon/Feature.. One of the other folder will mess up the Saving/Adding, so skip this for now (I think this referencing to the code:) : $queryGenerator->setField('filetype'

but I forgot to edit this in my note.

modules/Documents/          model and view probably need code editing. 
modules/Documents/  model/listview.php      this file here, contain this code that will break your Documents module: $queryGenerator->setField('filetype'); So either keep that line the same in v3.4 or don't add it.

modules/Vtiger/uitypes/ DocumentsFileUpload.php     doesn't seem to affect saving or uploading
modules/Vtiger/uitypes/ DocumentsFolder.php     doesn't seem to affect saving or uploading
libraries/jquery/multiplefileupload/            Not relevant as it was last updated 5 months ago
layouts/basic/modules/Documents/            no problem with saving or viewing
/layouts/basic/modules/Vtiger/uitypes/  DocumentsFileUpload.tpl     no problem with saving or viewing
/layouts/basic/modules/Vtiger/uitypes/  DocumentsFolder.tpl     no problem with saving or viewing

Anyway that is it for today. Not much result. Only the "skin" is considered success. The rest is Work-In-Progress.

ldgbc commented 7 years ago

This is result from Day 2. Probably won't touch the next folder until next weekend.


/config/modules/        Accounts.php        add the new code
/config/modules/        Calendar.php        add the new code
/config/modules/        Export.php      Add the file
/config/modules/        Import.php      Add the file
/config/modules/        Mail.php        Add the file
/config/modules/        SQuotes.php     Add the file
/config/modules/        SSalesProcesses.php     Add the file
/config/modules/        ModTracker.php      add the new code
/config/modules/        OSSMail.php     Replaced it
\config     api.php     Kept 3.4 for Mobile and Yetiportal
\config     config.php      leave it alone since there isn't much coding and not worth server breaking
\config     config.db.php       the 'type' have been remove. Could this be the reason Updating not working??? There also a slight change in DB code. Maybe I can try to use v3.4 config.db.php and may be able to upgrade.
\config     config.inc.php      blank
\config     config.template.php     There is a new type, "test" I'll just add this code so I might be able to use Test mode. Most likely not.
\config     csrf_config.php     too complex. Don't touch yet
\config     debug.php       Seem okay to replace the whole file
\config     developer.php       match
\config     mimetypes.php       match
\config     parent_tabdata.php      match
\config     performance.php     Seem okay to replace the whole file. Few added lines and some lines are just moved/order different.
\config     relation.php        match
\config     search.php      only new code so replace should be okay
\config     secret_keys.php     backup key was remove. Keep 3.4 for now
\config     security.php        only new code so replace should be okay
\config     sounds.php      match
\config     version.php     Manual code change for those version (lib) as I probably will be copy/paste those module sometime in the future.
cron\modules\com_vtiger_workflow        com_vtiger_workflow.service     too complex. Don't touch yet
cron\modules\com_vtiger_workflow        com_vtiger_workflow.php     too complex. Don't touch yet
cron\modules\Import     ScheduledImport.service     too much code was remove. Don't touch yet
cron\modules\Import     ScheduledImport.php     too much code was remove. Don't touch yet
\cron\modules\Reports       ScheduleReports.service     match
\cron\modules\Reports       ScheduleReports.php     match
\cron\      AddressBook.php     The folder seem to change from include to App. So I better copy/paste these App folder if I want to make the switch. I don't see where it was put though. Anyway it too complex.
\cron\      backup.service      was remove. So keep it there
\cron\      Cache.php       blank file. But maybe it populate later, so upload it
\cron\      executecron.sh      
\cron\      HandlerUpdater.php      new file. Upload it. This one might cause me an issue
\cron\      LabelUpdater.php        too complex. Don't touch yet
\cron\      Mailer.php      new file. Upload it
\cron\      MultiReference.php      too complex. Don't touch yet. Could I wonder if I replace all these \App\db\Query back to PearDatabase it will work. These App\db\Query must be the MYSQLND table stuff???
\cron\      PrivilegesUpdater.php       too complex. Don't touch yet. More \App\Db\Query stuff here
\cron\      schtasks.exe        match
\cron\      SendReminder.php        original file was .service, not it a .php. Should be fine to upload this and any reference to this .php will work. Same with MultiRef from the look of it.
\cron\      SendReminder.service        v3.4
\cron\      vtigercron.bat      match
\cron\      vtigercron.php      Seem okay to do mix coding. But look like v3.4 already have these \App\ so it would make sense that if my server can read these \App folder in v3.4 it should be able to  in v4.
\cron\      vtigercron.sh       match
\include                many files was removed in this folder. And v4.0 Complete is missing this Composer folder too. I remember someone with an Issue saying composer was missing. One of Yeti staff said composer is include in v4.0. Well that doesn't seem to be the case. Maybe the files get add later on. Or this v4 complete as been update and I'm using older version
\include\database       PearDatabase.php        So this is the database many of the coding referencing to. It seem like I can do a mixed code in this one. Could this be why I cannot log in? ';charset=utf8'
\include\database       PearDatabase.php        Mix coding in this probably going to crash my server. But it the weekend I can take the risk. And it did break. Lucky I hit the refresh before moving the next one.
\include\database       PearDatabase.php    Breaking Code:  PDO::ATTR_TIMEOUT => 5
\include\database       PearDatabase.php        It mess up with the Account Record view and the Contact association is. So don't mix code. Leave it alone
\include\events     include.inc     same as above. These new php file seem to just be rename. Just upload them
\include\events     SqlResultIterator.inc       
\include\events     VTBatchData.inc     
\include\events     VTBatchEventTrigger.inc     
\include\events     VTEntityData.inc        
\include\events     VTEntityDelta.php       
\include\events     VTEntityType.inc        
\include\events     VTEventCondition.php        
\include\events     VTEventConditionParserLexer.php     
\include\events     VTEventConditionParserParser.php        
\include\events     VTEventConditionSymbol.php      
\include\events     VTEventHandler.inc      
\include\events     VTEventsManager.inc     
\include\events     VTEventTrigger.inc      
\include\events     VTWSEntityType.inc      
\include\events     include.php added in v4 
\include\events     SqlResultIterator.php   added in v5 
\include\events     VTBatchData.php added in v6 
\include\events     VTEntityData.php    added in v7 
\include\events     VTEntityType.php    added in v8 
\include\events     VTEventHandler.php  added in v9 
\include\events     VTWSEntityType.php  added in v10    
\include\exceptions     AppException.php        match
\include\exceptions     Csrf.php        \app folder, leave it
\include\exceptions     NoPermitted.php     \app folder, leave it
\include\exceptions     NoPermittedForAdmin.php     \app folder, leave it
\include\exceptions     NoPermittedToApi.php        \app folder, leave it
\include\exceptions     NoPermittedToRecord.php     \app folder, leave it
\include\exceptions     NotAllowedMethod.php        match
\include\fields     CurrencyField.php       Most code seem okay until the bottom I saw this: $id = (new \App\Db\Query()). Guess I leave it alone. I don't use Currency Module very often so I won't be able to test.
\include\fields     DateTimeField.php       Seem like this file can be overwrite but I don't want to risk it. It seem like the Logs file just change how it is logged.
\include\fields     DateTimeRange.php       Added the next15days code in v3.4 as it shouldn't break the system (hopefully)
\include\fields     Email.php       removed in v4
\include\fields     File.php        removed in v4
\include\fields     Owner.php       removed in v4
\include\fields     Picklist.php        removed in v4
\include\fields     RecordNumber.php        removed in v4
\include\http       Request.php     massive changed in here. Not touching
\include\http       Response.php        \app folder, leave it
\include\http       Session.php     match
\include\ListView               removed in v4
\include\main       WebUI.php   Blank page  This look like an interesting file. I'm gonna replace it and see how much it will break. Blank page so didn't get very far. I start adding the "tag" blank page" maybe if I replace these blank page file from v3.4 to v4 it might work.
\include\runtime\cache      Connector.php       match
\include\runtime\cache      Connectors.php      match
\include\runtime\       BaseModel.php       \app folder, leave it
\include\runtime\       Cache.php       only removed code. Leave it
\include\runtime\       Controller.php      Added this code to v3.4 it might break the system or an "logo not found" error log:   $viewer->assign('COMPANY_LOGO', \App\Company::getInstanceById()->getLogo()); 
\include\runtime\       Controller.php      Not sure what this is, but I added it too: if ($moduleName === 'Settings:Users')
\include\runtime\       Controller.php      That logo code actually break the system. Could not made any changed to the Record view. Tab was gone.
\include\runtime\       EntryPoint.php      match
\include\runtime\       Globals.php     match
\include\runtime\       JavaScript.php      minor code
\include\runtime\       LanguageHandler.php     minor code
\include\runtime\       Layout.php      match
\include\runtime\       Theme.php       minor code
\include\runtime\       Viewer.php      NOTE: to_html is being used as data-extraction depends on this
\include\runtime\       Viewer.php      Does that mean I need to change this code and all these \App\Purifier will work (from exisitng code of to_html)
\include\runtime\       Viewer.php      Added the Template coding from v4. and it break the system
\include\utils      CommonUtils.php     \app folder, leave it
\include\utils      ConfigReader.php        match
\include\utils      DetailViewUtils.php     match
\include\utils      EmailTemplate.php       Here they start referencing those .php files. I wonder if it will break. Can't really test email template as my Mail module not working. Leave it for now
\include\utils      encryption.php      removed in v4
\include\utils      ExportUtils.php     changing this going to break my system from the look of it
\include\utils      GetGroupUsers.php       match
\include\utils      GetParentGroups.php     match
\include\utils      GetUserGroups.php       too many code removed
\include\utils      Icon.php        removed in v4
\include\utils      InventoryUtils.php      too many code removed
\include\utils      Json.php        removed in v4
\include\utils      ListViewUtils.php       too many code removed
\include\utils      RecurringType.php       removed in v4
\include\utils      SearchUtils.php     match (blank file)
\include\utils      UserInfoUtil.php        too many code removed. Too complex. More App\ folder
\include\utils      utils.php       "Added these code: require_once 'modules/Users/Users.php';
require_once 'include/Webservices/Utils.php';"
\include\utils      utils.php       Was going to add the Event code but I don’t want risk it
\include\utils      VTCacheUtils.php        \app folder, leave it
\include\utils      VtlibUtils.php      too many code removed
\include\Webservices\Custom     ChangePassword.php      match
\include\Webservices\Custom     DeleteUser.php      only reference file is change
\include\Webservices\Custom     VtigerCompanyDetails.php        removed in v4
\include\Webservices        AuthToken.php       match
\include\Webservices        ConvertLead.php     \app folder, leave it
\include\Webservices        Create.php      match
\include\Webservices        DataTransform.php       code removed and changed
\include\Webservices        Delete.php      match
\include\Webservices        DescribeObject.php      match
\include\Webservices        DescribeObjectPartial.php       match
\include\Webservices        EntityMeta.php      minor code
\include\Webservices        ExtendSession.php       match
\include\Webservices        GetUpdates.php      add code:  return 'Currently not supported';
\include\Webservices        History.php     minor code
\include\Webservices        Login.php       match
\include\Webservices        Logout.php      minor code
\include\Webservices        ModuleTypes.php     \app folder, leave it
\include\Webservices        OperationManager.php        \app folder, leave it
\include\Webservices        PreserveGlobal.php      match
\include\Webservices        Query.php       match
\include\Webservices        QueryParser.php     minor code
\include\Webservices        QueryRelated.php        minor code
\include\Webservices        RelatedModuleMeta.php       removed in v4
\include\Webservices        RelatedTypes.php        minor code
\include\Webservices        Relation.php        removed in v4
\include\Webservices        Retrieve.php        minor code
\include\Webservices        RetrieveRelated.php     match
\include\Webservices        Revise.php      match
\include\Webservices        SessionManager.php      minor code
\include\Webservices        State.php       minor code
\include\Webservices        Update.php      minor code
\include\Webservices        Utils.php       too complex. Don’t touch
\include\Webservices        VtigerActorOperation.php        match
\include\Webservices        VtigerCRMActorMeta.php      match
\include\Webservices        VtigerCRMObject.php     \app folder, leave it
\include\Webservices        VtigerCRMObjectMeta.php     \app folder, leave it. Code removed too
\include\Webservices        VtigerModuleOperation.php       \app folder, leave it. Code removed too
\include\Webservices        VtigerWebserviceObject.php      \app folder, leave it. Code removed too
\include\Webservices        VTQL_Lexer.php      minor code
\include\Webservices        VTQL_Parser.php     minor code
\include\Webservices        WebserviceEntityOperation.php       match
\include\Webservices        WebServiceError.php     minor code
\include\Webservices        WebServiceErrorCode.php     match
\include\Webservices        WebserviceField.php     \app folder, leave it. Code removed too
\include        autoload.php        moved to \vendor and minor code changed
\include        ConfigUtils.php     add mainkey code
\include        CRMEntity.php       too complex
\include        CustomFieldUtil.php     match (blank file)
\include        deprecated.txt      a note here that many of these field will be removed  or move
\include        Language.php        removed in v4
\include        Loader.php      leave it alone since there isn't much coding and not worth server breaking
\include        Modules.php     removed in v4
\include        Record.php      removed in v4
\include        RelatedListView.php     removed in v4
\include        RequirementsValidation.php      match
\include        SystemWarnings.php      removed in v4
\include        Tracker.php     too many code removed
mariuszkrzaczkowski commented 7 years ago

check 3.4.1427_to_4.0.0_v2.zip

skramanzia commented 7 years ago

Same issue in V2.

skramanzia commented 7 years ago

@mariuszkrzaczkowski Why fresh install work correctly, but Update has display 500 error?

bpabiszczak commented 7 years ago

500 is apache error not YetiForce. You must check apache logs. https://yetiforce.com/en/administrator-documentation/errors/227-apache-500-internal-server-error-2.html

ldgbc commented 7 years ago

Found this info here: #4160

I'll try to see if this setting is something I can changed on my share hosting.

mariuszkrzaczkowski commented 7 years ago

check 3.4.1427_to_4.0.0_v3.zip

kabelo38 commented 7 years ago

I was on version 3.4.273

I tried to upgrade 3 times and it failed, until I gathered hints and put them together.

Firstly opened config/version.php and changed only 'appVersion' => '3.4.273' to '3.4.0'

Secondly edited my .htaccess file and removed this condition

<IfModule fcgid_module.c>
  FcgidIOTimeout 600
  FcgidConnectTimeout 600
  FcgidBusyTimeout 600
  FcgidIdleTimeout 600
</IfModule>

enable php_flag log_errors On then downloaded 3.4.0_to_3.4.1427_v4.zip upgrade worked very well.

after installing 3.4.1427 i installed 3.4.1427_to_4.0.0_v4.zip

And its working well for my side.