Using SugarBeans outside of Sugar's framework

We need to be able to run PHP code that makes use of Sugar data in scripts that are outside of Sugar - not scheduler tasks or logic hooks or anything. Completely outside of the Sugar world. Based on what I found here I added the following to my script:

if(!defined('sugarEntry')) define('sugarEntry', true);

require_once('data/BeanFactory.php');

That led to a string of error messages and including various other files, and then I started by including the same files in the base index.php from my Sugar installation, but finally I came to an impasse. My error message is:

 

Notice: Undefined index: log in /var/www/html/include/SugarObjects/VardefManager.php on line 1054 Fatal error: Call to a member function debug() on null in /var/www/html/include/SugarObjects/VardefManager.php on line 1054

The code at line 1054 of VardefManager.php is:

$GLOBALS['log']->debug("VardefManager::loadVardef called for module: $module");

I can't find where "log" is being defined in the GLOBALS scope, and anyway, this is starting to look like a lot more than I should have to do to make this work - my current code draft has six require_once statements in it, not to mention several other very hacky details. Is there a better way to do this? Am I missing something?

Sugar 7.8 Professional.

Parents
  • I'm not sure what you mean. The solution in the thread, as far as I can tell, is to use SugarBeans - that's what I'm bending over backward to try to accomplish. If you mean why am I trying to do it outside of Sugar itself - we are a SAAS business, so basically we use Sugar to maintain our customers, and our customers use our portal to do a number of things which we would like to make record of in Sugar. I can of course do direct SQL inserts into the Sugar tables, but I would rather leverage the infrastructure that exists within Sugar to help us maintain data integrity. For example: when I want to insert a record in a table, I would rather let Sugar generate a GUID than generate one myself.

  • Hi Michael Jones,

    This is marked as the Correct Answer to the thread you linked: 

    https://community.sugarcrm.com/thread/26624#comment-77885 

    The comment links to this documentation list:

    http://support.sugarcrm.com/Documentation/Sugar_Developer/Sugar_Developer_Guide_7.9/index.html 

    The REST API is used by many third-party developers to create applications run completely outside of a Sugar instance that create or sync records with Sugar. Using the API, for example, an external application can tell Sugar to create a new Account record, provide desired field content, and it will make that record, generating the unique ID if one is not defined in the API call. The API can also establish relationships between existing records and can pull existing data out of Sugar as well.

    Within the Sugar application, developers can also create custom endpoints if the stock endpoints (found at <instance>/rest/v10/help) cannot achieve what they need.

    If this is completely off base from what you are looking for, I am happy to step back and welcome anyone else in the community who might have a more appropriate response for you. Best of luck!

  • I don't think the original thread is about using the REST API - it is about using SugarBeans directly. I'm not sure I understand why anyone would want to do an http REST call from a machine to itself, which is what I would be doing if I used the REST API, and I'm positive my boss would rather have me do direct table queries than incur http traffic. The code I need to write will reside on the same Web server as the Sugar instance - it just would not be part of it. In other words, it needs to initialize any infrastructure that I need to have available in order to use SugarBeans, independently of the Sugar interface and scheduler. For example:

    HOWTO: Using the bean instead of SQL all the time « Sugar Developer Blog – SugarCRM 

    It is entirely possible that I'm misunderstanding something; I'm not by any means a beginner where Web technologies are concerned, but I am absolutely a beginner when it comes to Sugar!

Reply
  • I don't think the original thread is about using the REST API - it is about using SugarBeans directly. I'm not sure I understand why anyone would want to do an http REST call from a machine to itself, which is what I would be doing if I used the REST API, and I'm positive my boss would rather have me do direct table queries than incur http traffic. The code I need to write will reside on the same Web server as the Sugar instance - it just would not be part of it. In other words, it needs to initialize any infrastructure that I need to have available in order to use SugarBeans, independently of the Sugar interface and scheduler. For example:

    HOWTO: Using the bean instead of SQL all the time « Sugar Developer Blog – SugarCRM 

    It is entirely possible that I'm misunderstanding something; I'm not by any means a beginner where Web technologies are concerned, but I am absolutely a beginner when it comes to Sugar!

Children