Customer relationship management system and method
A software-based customer relationship management system and method.
1 . A customer relationship management system, comprising:
a client;
a database containing a plurality of pieces of information;
one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information;
one or more controllers that control access by the client to the one or more modules and the database; and
a query counter connected between the database and the one or more controllers, the query counter having one or more lines of code that determines a number of queries to the database of the user interface.
2 . The system of claim 1 , wherein the query counter further comprises one or more lines of code that determine, for each page of the user interface, a number of queries to the database for the user interface and one or more portions of the user interface.
3 . The system of claim 1 , wherein the query counter further comprises one or more lines of code that displays the number of queries adjacent the portion of the user interface that generated the database queries.
4 . The system of claim 1 , wherein the query counter further comprises one or more lines of code that displays the content of the database queries adjacent to the portion of the user interface that generated the database queries.
5 . The system of claim 1 , wherein the database abstraction layer further comprises one or more lines of code that can record slow queries to a log.
6 . The system of claim 5 , wherein the database abstraction layer further can control which queries are logged based on a threshold set on the actual time required to execute the query.
7 . A customer relationship management method for a customer relationship management system having a client, a database containing a plurality of pieces of information, one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information and one or more controllers that control access by the client to the one or more modules and the database, the method comprising:
performing one or more database queries during display of the user interface; and
counting, using a query counter coupled between the database and the one or more controllers, a number of queries of the database by the user interface.
8 . The method of claim 7 , wherein counting the number of queries further comprises determining, for each page of the user interface, a number of queries to the database for the user interface and one or more portions of the user interface.
9 . The method of claim 7 , wherein counting the number of queries further comprises displaying the number of queries adjacent the portion of the user interface that generated the database queries.
10 . The system of claim 7 , wherein the query counter further comprises one or more lines of code that displays the content of the database queries adjacent to the portion of the user interface that generated the database queries.
11 . The system of claim 7 , wherein the database abstraction layer further comprises one or more lines of code that can record slow queries to a log.
12 . The system of claim 11 , wherein the database abstraction layer further can control which queries are logged based on a threshold set on the actual time required to execute the query.
13 . A customer relationship management system, comprising:
a client;
a database containing a plurality of pieces of information;
one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information;
one or more controllers that control access by the client to the one or more modules and the database; and
a module loader having one or more lines of code that, based on a user instruction, changes the modules that are used for a software application implemented by the one or more modules.
14 . The system of claim 13 , wherein the module loader further comprises one or more lines of code that add a new module to the software application and one or more lines of code that remove a module from the software application.
15 . The system of claim 13 , wherein the module loader further comprises a manifest file that is used to load a component wherein the component is at least one of a module, a user interface theme, a language package and a patch into the software application.
16 . The system of claim 15 , wherein the manifest file further comprises a version variable that indicates a version of the software application to load the component and a flavor variable that indicates a flavor of the software application to load the component wherein the flavor is one or more of an open source flavor, a professional flavor or an enterprise flavor.
17 . The system of claim 16 , wherein the manifest file further comprises a name variable that contains a user readable name of the component, a description variable that contains a description of the component, an author variable containing an author of the component, a published date variable containing a date that the component was published, a version variable indicating a version of the component and a type variable indicating a type of the component.
18 . The system of claim 17 , wherein the manifest file further comprises a copy files variable containing a set of file copy instructions for copying the component.
19 . A method for reconfiguring a software application that is part of a customer relationship management system having a client, a database containing a plurality of pieces of information, one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information and one or more controllers that control access by the client to the one or more modules and the database, the method comprising:
changing, using a module loader, the components of the software application based on a manifest file, the components being one of a module, a user interface theme, a language package and a patch.
20 . The method of claim 19 , wherein changing the components of the software application further comprises adding a component to the software application or removing a component from the software application.
21 . The method of claim 19 , wherein the manifest file further comprises a version variable that indicates a version of the software application to load the component and a flavor variable that indicates a flavor of the software application to load the component wherein the flavor is one or more of an open source flavor, a professional flavor or an enterprise flavor.
22 . The method of claim 21 , wherein the manifest file further comprises a name variable that contains a user readable name of the component, a description variable that contains a description of the component, an author variable containing an author of the component, a published date variable containing a date that the component was published, a version variable indicating a version of the component and a type variable indicating a type of the component.
23 . The method of claim 22 , wherein the manifest file further comprises a copy files variable containing a set of file copy instructions for copying the component.
24 . An upgrade method for an open source software application, the method comprising:
receiving an upgrade package to upgrade an existing open source software application;
identifying, for each file in the upgrade package, if the file does not match a prior version of the file in order to indicate a file in the existing open source software application that has been customized;
automatically upgrading the files in the upgrade package that are not identified as being customized; and
selectively, based on one of user instructions and default logic, upgrading the files identified as being customized so that the customizations from the existing open source software application are not lost during the upgrade process.
25 . The method of claim 24 , wherein identifying the customized file further comprises computing a checksum for each file in the upgrade package and comparing the computed checksum against known checksum values for the file from a previously installed version of the software application.
26 . The method of claim 25 , wherein computing the checksum further comprises computing an MD5 checksum.
27 . The method of claim 25 , wherein computing the checksum further comprises computing an MD5 checksum that is independent of line feeds, source code control system tags, and/or changes to whitespace in the source code.
28 . A customer relationship management system, comprising:
a client;
a database containing a plurality of pieces of information;
one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information;
one or more controllers that control access by the client to the one or more modules and the database; and
a mobile client with periodic connectivity to the server, one or more modules and the one or more controllers wherein the mobile client is bidirectionally synchronized when changes occur in one of the database and modules on the server or changes occur in the data on the mobile client.
29 . The system of claim 28 , wherein the mobile client further comprises an encrypted form of the modules to increase the security of the mobile client.
30 . The system of claim 28 , wherein the mobile client further provides synchronization progress feedback to the user during synchronizations.
31 . A customer relationship management system, comprising:
a client;
a database containing a plurality of pieces of information;
one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information;
one or more controllers that control access by the client to the one or more modules and the database; and
a security source code for securing PHP session security during the operation of the modules.
32 . The system of claim 31 , wherein the security source code generates an application ID for the server during installation and tracks the application ID and IP address for each session wherein a user is denied access to a PHP session with the customer relationship management system when one of the application ID does not match an assigned application ID for the user or the IP address does not match an assigned IP address for the user.
33 . The system of claim 31 , wherein the security source code prevents end users from accessing one of the module files directly as all entry points in the application must be declared.
34 . The system of claim 31 , wherein any breach in security or perceived breach in security will result in the PHP session being destroyed to prevent systematic attacks.
35 . A customer relationship management system, comprising:
a client;
a database containing a plurality of pieces of information;
one or more modules that access the database to pull pieces of information from the database based on a request from the client and display a user interface to the user containing the requested information;
one or more controllers that control access by the client to the one or more modules and the database; and
wherein the one or more modules further comprises a calendar module wherein the calendar module is synchronized with an external calendar program.
36 . The system of claim 35 , wherein the external calendar program is Microsoft Outlook.
37 . The system of claim 35 , wherein the external calendar program further comprises one of Lotus Domino, Google Calendar, Oracle Calendar, SAP Calendar, Zimbra Calendar, Scalix Calendar and Novel Groupwise.