Coder Social home page Coder Social logo

x2engine / x2crm Goto Github PK

View Code? Open in Web Editor NEW
345.0 68.0 167.0 83.5 MB

X2CRM Open Source CRM - PHP

Home Page: http://www.x2crm.com

Ruby 0.01% CSS 1.47% PHP 86.13% JavaScript 10.53% HTML 0.11% Batchfile 0.01% C++ 0.01% Shell 0.01% Makefile 0.02% Python 0.02% SCSS 1.71%

x2crm's Introduction

NOTE: IF YOU ARE UPDATING FROM <7.0 YOU WILL NEED TO RE-ENTER YOUR THIRD-PARTY APP CREDENTIALS! THIS IS DUE TO THE REMOVAL OF MCRYPT IN PHP 7.2. FOR MORE INFO, PLEASE CONTACT [email protected]

7.1

1/3/2019

  • General Changelog / Developer Notes

    • X2CRM is now compatible with PHP 7.1+
  • Miscellaneous bug fixes

    • Fixed issue with emailing where mail servers which are not configured to use VERP can still send email
    • Removed list option from the reporting module
    • A/B campaigns now work with dynamic lists
    • Fixed issue where 'do not email' settings would get incorrectly set
    • Fixed issue where a 500 error would occur if the 'maxFileSize' attribute was not created correctly
    • Fixed issue where X2Flow would incorrectly reference a workflow ID
    • Fixed issue where logging time on a record would incorrectly calculate time spent
    • Fixed front-end with the complete stage action in X2Workflow where the note textarea was covering the stage selection dropdown

7.0

10/19/2018

  • General Changelog / Developer Notes
    • Accounts, Leads and Opportunities are now listable
    • Contacts can now be converted to leads
    • Campaigns
      • A/B testing for campaigns added
      • Account, Lead and Opportunity lists can now all be used in campaigns
    • Miscellaneous bug fixes

Introduction

Welcome to X2CRM! X2CRM is a next-generation, open source social sales application for small and medium sized businesses. X2CRM was designed to streamline contact and sales actions into one compact blog-style user interface. Add to this contact and colleague social feeds and sales representatives become smarter and more effective resulting in increased sales and higher customer satisfaction.

X2CRM is unique in the crowded Customer Relationship Management (CRM) field with its compact blog-style user interface. Interactive and collaborative tools which users are already familiar with from social networking sites such as
tagging, pictures, docs, web pages, group chat, discussions boards and rich mobile and tablet apps are combined within a compact and fast contact sales management application. Reps are able to make more sales contacts while leveraging the combined social intelligence of peers enabling them to add more value to their customer interactions resulting in higher close rates.

Documentation and Support

System Requirements

  • A web server that can execute PHP
  • A password-protected MySQL database server connection, and a database on which the user of the connection has full permissions rights (i.e. SELECT, DROP, CREATE and UPDATE)
  • PHP 5.3 or later
  • PHP must be run as the same system user that owns the directory where X2CRM will be installed
  • The server must have internet access for automatic updates
  • The server must be publicly accessible for web lead capture, service requests and email tracking to work

X2CRM comes with a requirements check script, requirements.php (also can be found in x2engine/protected/components/views), which can be uploaded by itself to your server. Simply visit the script in your browser to see if your server will run X2CRM.

Installation

  1. Upload X2CRM to the web directory of your choice. Be sure to set your FTP client to use binary mode.
  2. Create a new MySQL database for X2CRM to use
  3. Browse to the x2engine folder and you will be redirected to the installer.
  4. Fill out the form, click install, and that's it!
  5. You are now ready to use X2CRM. If you chose to install Dummy Data, you will have numerous sample records (i.e. about 1100 contacts) to play with.

Languages

Most of the included language packs were produced by copy/paste from Google Translate. If you have any corrections, suggestions or custom language packs, please feel free to post them on community.x2crm.com

We greatly appreciate your input for internationalization!

Tips and Tricks

X2CRM is designed to be intuitive, but we have included a few tips and tricks to get you started!

  • To change the background color, menu color, language or any other setting, click on Profile in the top right and select 'Settings'.
  • The admin's settings can be found from the admin page, as well as a variety of other tools to help you manage the application.
  • Contacts are ordered by most recently updated by default, but this can be changed by clicking on one of the other attributes to sort them differently.
  • It is not recommended to use the Import Data function on the admin tab UNLESS you are importing data that was exported from a prior version. The template is very finnicky and prone to bugs, so if you do it without using properly exported data, we take no responsibility for errors.

Known Issues

  • The .htaccess file may cause issues on some servers. If you get a 500 Internal Server Error when you try to load the installer, delete the .htaccess file (the application will still work without it.)
  • eAccelerator may cause PHP errors on various pages ("Invalid Opcode"). This is due to a bug in eAccelerator, and can be fixed by disabling or updating eAccelerator. Furthermore, eAccelerator causes PHP to fail when using anonymous functions. In general, it is recommended that you disable eAccelerator altogether.
  • Version 2 of the API will not work in a web directory that is password-protected. This is because there can only be one "Auth" header in HTTP requests, and the web server would in this case require an Auth header distinct from the one required to authenticate with the API.

x2crm's People

Contributors

bazicalos avatar deconstrained avatar glisteningcipher avatar isaiah-solo avatar isaiahx2 avatar jhouser avatar kyle-young avatar michael2h4ng avatar pczupil avatar pomazanbohdan avatar r19m89s avatar raymondcolebaugh avatar thechiangsta avatar w4tson442 avatar x2jake avatar x2josef avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

x2crm's Issues

issue after install page?

Hi,
I was wondering if someone could shed some light on the issue im having. After i get the install page i get connection successful after that it says go to login page i get the error 500. Then checked the logs and saw this
Any ideas?
[Mon Dec 31 22:11:25.054219 2018] [php7:error] [pid 16500] [client 192.168.3.5:59091] PHP Fatal error: Declaration of X2WebUser::checkAccess($operation, $params = Array) must be compatible with CWebUser::checkAccess($operation, $params = Array, $allowCaching = true) in /var/www/html/x2crm/protected/components/X2WebUser.php on line 38

Email template "email to" override field not working when used in webforms

Love this tool (but...)
Action

  • create an email template, with "to" field completed with email address (other than user address)
  • create a webform and select the above email template for "user" or "lead"
  • embed form on www, complete it and send
    Expected
  • email alert sent to "to" email address
    Actual
  • email sent to "user" email address

directory owner is not the same as write access

Being the owner of a directory or file is not the only way to have write access.

The requirements.php file checks the directory owner and, if the owner is not the same as the system user which runs PHP, gives a fatal error. However, if the system user which runs PHP is in a group which has write access to the directory, then X2Engine technically also has write access.

Maybe use is_writable() instead of fileowner() ?

Line Items

Hi!
I am totally loving this framework and I would like to expand it with new modules such as contracts, projects, interventions and more. The challenge that I run into is that my contracts and projects modules would require line items. I also explore the possibility of adding line items to certain core modules such deals (opportunities); is there any entry point you can recommend to get this project on the way? Any guidance would be greatly appreciated - Would love to share the end results with you guys for the community. Please advise

Jean Karl

Update to 6.5.2 from 5.0.4

Hello

I'm trying to update from 5.0.4 to 6.5.2 using the web updater but it failed:

The error message given was: SQLSTATE[HY000]: General error: 1005 Can't create table 'demo.#sql-49c_234' (errno: 150)
A database change failed to apply: ALTER TABLE x2_role_exceptions ADD CONSTRAINT x2_role_exceptions_ibfk_1 FOREIGN KEY x2_role_exceptions_ibfk_1 (roleId) REFERENCES x2_roles (id) ON DELETE CASCADE ON UPDATE CASCADE;.

Any tips to solve this issue?

The path defined in session.save_path (unix:/tmp/memcached.sock) is not writable.

I'm installing X2Engine and I get the following error on the install page:

The path defined in session.save_path (unix:/tmp/memcached.sock) is not writable.

# ll /tmp/memcached.sock
srw-rw-rw- 1 memcache memcache 0 Oct  9 17:22 /tmp/memcached.sock=

In /etc/php5/fpm/php.ini I have:

session.save_handler = memcache
session.save_path = unix:/tmp/memcached.sock

Here is /etc/memcached.conf:

# Log memcached's output to /var/log/memcached
logfile /var/log/memcached.log

# Be verbose
# -v

# Be even more verbose (print client commands as well)
# -vv

# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 128

# Default connection port is 11211
# -p 11211

# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u memcache

# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
# -l 127.0.0.1

# Limit the number of simultaneous incoming connections. The daemon default is 1024
# -c 1024

# Lock down all paged memory. Consult with the README and homepage before you do this
# -k

# Return error when memory is exhausted (rather than removing items)
# -M

# Maximize core file limit
# -r

-s /tmp/memcached.sock
-a 666

There is nothing in /var/log/memcached.

This is in Ubuntu Server 12.04, nginx 1.6.2, PHP 5.5, memcached 1.4.13.

leadCapture.php is waiting for a string response, instead it receive JSON and is not working. (SOLVED)

in leadCapture.php line #61
https://github.com/X2Engine/X2Engine/blob/master/x2engine/leadCapture.php#L61

the comparison is between the response (supposed to be a string) and a string (the message), but in this new version of X2Engine the response generated in line #59 returns a JSON object. So the comparison always will fail.

SOLUTION (adding the two lines marked as "FIX"):
[php]

....blabla..
$ccResult = curl_exec($ccSession);
curl_close($ccSession);
$tmp = json_decode($ccResult);  // FIX
$ccResult = $tmp["message"];    // FIX
if($ccResult!="No Item found with specified attributes."){
...blabla..

it solve the issue.

In demo error

http://demo.x2engine.com/index.php/profile/updatePost/57?profileId=1

http://demo.x2engine.com/index.php/profile/updatePost/9?profileId=3

Error Code: 500
Error Message: Undefined variable: profileId
Stack Trace: [click to toggle display]

#0 /home/demo/public_html/framework/web/CBaseController.php(130): require() #1 /home/demo/public_html/framework/web/CBaseController.php(95): ProfileController->renderInternal() #2 /home/demo/public_html/framework/zii/widgets/CListView.php(281): ProfileController->renderFile() #3 /home/demo/public_html/framework/zii/widgets/CBaseListView.php(160): CListView->renderItems() #4 unknown(0): CListView->renderSection() #5 /home/demo/public_html/framework/zii/widgets/CBaseListView.php(143): preg_replace_callback() #6 /home/demo/public_html/framework/zii/widgets/CBaseListView.php(128): CListView->renderContent() #7 /home/demo/public_html/framework/web/CBaseController.php(173): CListView->run() #8 /home/demo/public_html/protected/views/profile/updatePost.php(93): ProfileController->widget() #9 /home/demo/public_html/framework/web/CBaseController.php(126): require() #10 /home/demo/public_html/framework/web/CBaseController.php(95): ProfileController->renderInternal() #11 /home/demo/public_html/framework/web/CController.php(869): ProfileController->renderFile() #12 /home/demo/public_html/framework/web/CController.php(782): ProfileController->renderPartial() #13 /home/demo/public_html/protected/controllers/ProfileController.php(123): ProfileController->render() #14 unknown(0): ProfileController->actionUpdatePost() #15 /home/demo/public_html/framework/web/actions/CAction.php(108): ReflectionMethod->invokeArgs() #16 /home/demo/public_html/framework/web/actions/CInlineAction.php(47): CInlineAction->runWithParamsInternal() #17 /home/demo/public_html/framework/web/CController.php(308): CInlineAction->runWithParams() #18 /home/demo/public_html/framework/web/filters/CFilterChain.php(133): ProfileController->runAction() #19 /home/demo/public_html/protected/controllers/x2base.php(1075): CFilterChain->run() #20 /home/demo/public_html/framework/web/filters/CInlineFilter.php(58): ProfileController->filterSetPortlets() #21 /home/demo/public_html/framework/web/filters/CFilterChain.php(130): CInlineFilter->filter() #22 /home/demo/public_html/framework/web/filters/CFilter.php(40): CFilterChain->run() #23 /home/demo/public_html/framework/web/CController.php(1145): CAccessControlFilter->filter() #24 /home/demo/public_html/framework/web/filters/CInlineFilter.php(58): ProfileController->filterAccessControl() #25 /home/demo/public_html/framework/web/filters/CFilterChain.php(130): CInlineFilter->filter() #26 /home/demo/public_html/framework/web/CController.php(291): CFilterChain->run() #27 /home/demo/public_html/framework/web/CController.php(265): ProfileController->runActionWithFilters() #28 /home/demo/public_html/framework/web/CWebApplication.php(282): ProfileController->run() #29 /home/demo/public_html/framework/web/CWebApplication.php(141): X2WebApplication->runController() #30 /home/demo/public_html/framework/base/CApplication.php(169): X2WebApplication->processRequest() #31 /home/demo/public_html/index.php(41): X2WebApplication->run()

X2CRM Version: 3.7.2
PHP Version: 5.3.10-1ubuntu3.8

Fatal error: Uncaught Error: Call to a member function getColumn() on null

This is my output after installation. I was told I needed ssh2, installed it, the message went away. Database was tested all good.

This was on the page when clicking the link to login

Notice: unserialize(): Unexpected end of serialized data in /home/forge/crm.localtech.shop/public/framework/caching/CCache.php on line 108

Notice: unserialize(): Error at offset 0 of 1 bytes in /home/forge/crm.localtech.shop/public/framework/caching/CCache.php on line 108

Notice: unserialize(): Unexpected end of serialized data in /home/forge/crm.localtech.shop/public/framework/caching/CCache.php on line 108

Notice: unserialize(): Error at offset 0 of 1 bytes in /home/forge/crm.localtech.shop/public/framework/caching/CCache.php on line 108

Notice: unserialize(): Unexpected end of serialized data in /home/forge/crm.localtech.shop/public/framework/caching/CCache.php on line 108

Notice: unserialize(): Error at offset 0 of 1 bytes in /home/forge/crm.localtech.shop/public/framework/caching/CCache.php on line 108

Notice: Trying to get property of non-object in /home/forge/crm.localtech.shop/public/framework/db/ar/CActiveRecord.php on line 661

Fatal error: Uncaught Error: Call to a member function getColumn() on null in /home/forge/crm.localtech.shop/public/framework/db/schema/CDbCommandBuilder.php:675 Stack trace: #0 /home/forge/crm.localtech.shop/public/framework/db/ar/CActiveRecord.php(1540): CDbCommandBuilder->createColumnCriteria(NULL, Array, '', Array, 't.') #1 /home/forge/crm.localtech.shop/public/protected/models/X2Model.php(442): CActiveRecord->findAllByAttributes(Array) #2 /home/forge/crm.localtech.shop/public/protected/models/X2Model.php(381): X2Model::getModules() #3 /home/forge/crm.localtech.shop/public/protected/components/behaviors/QuickCreateRelationshipBehavior.php(69): X2Model::getModelNames() #4 /home/forge/crm.localtech.shop/public/protected/components/X2ClientScript.php(847): QuickCreateRelationshipBehavior::getModelsWhichSupportQuickCreate(true) #5 /home/forge/crm.localtech.shop/public/protected/components/X2ClientScript.php(1104): X2ClientScript->registerX2QuickCRUD() #6 /home/forge/crm.localtech.shop/public/protected/views/layouts/main in /home/forge/crm.localtech.shop/public/framework/db/schema/CDbCommandBuilder.php on line 675

Installed successfully but

Installed the latest release successfully, but when I open single product page, it shows following error

Error 500
It looks like the application ran into an unexpected error.

We apologize for the inconvenience and would like to do our best to fix this issue. If you would like to make a post on our forums we can actively interact with you in getting this resolved. If not, simply sending the error report helps us immensely and will only improve the quality of the software. Thanks!
Send Error Report
Here's a quick list of what will be included in the report:

Error Code: 500
Error Message: CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'force.x2_actions.complete' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Stack Trace: [click to toggle display]
CDbException in C:\laragon\www\xcrm\protected\components\sortableWidget\SortableWidget.php(943)
#0 C:\laragon\www\xcrm\framework\db\CDbCommand.php(396): CDbCommand->queryInternal('fetchAll', Array, Array)
#1 C:\laragon\www\xcrm\protected\components\sortableWidget\recordViewWidgets\ActionHistoryChartWidget.php(124): CDbCommand->queryAll()
#2 C:\laragon\www\xcrm\protected\components\sortableWidget\recordViewWidgets\ActionHistoryChartWidget.php(305): ActionHistoryChartWidget::getChartData('1633666403', 1635608869, '5', 'product', NULL)
#3 C:\laragon\www\xcrm\protected\components\sortableWidget\recordViewWidgets\ActionHistoryChartWidget.php(142): ActionHistoryChartWidget->getInitialChartData('1633666403', '5', 'Product', NULL)
#4 C:\laragon\www\xcrm\framework\base\CComponent.php(111): ActionHistoryChartWidget->getSetupScript()
#5 C:\laragon\www\xcrm\protected\components\sortableWidget\SortableWidget.php(943): CComponent->__get('setupScript')
#6 C:\laragon\www\xcrm\protected\components\sortableWidget\SortableWidget.php(911): SortableWidget->renderWidgetContents()
#7 C:\laragon\www\xcrm\protected\components\sortableWidget\views\recordViewWidget.php(44): SortableWidget->renderWidget()
#8 C:\laragon\www\xcrm\framework\web\CBaseController.php(130): require('C:\\laragon\\www\\...')
#9 C:\laragon\www\xcrm\framework\web\CBaseController.php(95): CBaseController->renderInternal('C:\\laragon\\www\\...', Array, false)
#10 C:\laragon\www\xcrm\protected\components\X2Widget.php(83): CBaseController->renderFile('C:\\laragon\\www\\...', Array, false)
#11 C:\laragon\www\xcrm\framework\web\widgets\CWidget.php(244): X2Widget->renderFile('C:\\laragon\\www\\...', Array, false)
#12 C:\laragon\www\xcrm\protected\components\sortableWidget\SortableWidget.php(1056): CWidget->render('application.com...', Array)
#13 C:\laragon\www\xcrm\protected\controllers\x2base.php(832): SortableWidget->run()
#14 C:\laragon\www\xcrm\protected\components\sortableWidget\SortableWidget.php(398): x2base->widget('application.com...', Array)
#15 C:\laragon\www\xcrm\protected\components\sortableWidget\RecordViewWidgetManager.php(126): SortableWidget::instantiateWidget('ActionHistoryCh...', Object(Profile), 'recordView', Array)
#16 C:\laragon\www\xcrm\protected\components\sortableWidget\views\_twoColumnSortableWidgetLayout.php(55): RecordViewWidgetManager->displayWidgets(1)
#17 C:\laragon\www\xcrm\framework\web\CBaseController.php(130): require('C:\\laragon\\www\\...')
#18 C:\laragon\www\xcrm\framework\web\CBaseController.php(95): CBaseController->renderInternal('C:\\laragon\\www\\...', NULL, false)
#19 C:\laragon\www\xcrm\protected\components\X2Widget.php(83): CBaseController->renderFile('C:\\laragon\\www\\...', NULL, false)
#20 C:\laragon\www\xcrm\framework\web\widgets\CWidget.php(244): X2Widget->renderFile('C:\\laragon\\www\\...', NULL, false)
#21 C:\laragon\www\xcrm\protected\components\sortableWidget\TwoColumnSortableWidgetManager.php(110): CWidget->render('_twoColumnSorta...')
#22 C:\laragon\www\xcrm\protected\controllers\x2base.php(832): TwoColumnSortableWidgetManager->run()
#23 C:\laragon\www\xcrm\protected\components\X2WidgetList.php(81): x2base->widget('RecordViewWidge...', Array)
#24 C:\laragon\www\xcrm\protected\controllers\x2base.php(832): X2WidgetList->run()
#25 C:\laragon\www\xcrm\protected\modules\products\views\products\view.php(112): x2base->widget('X2WidgetList', Array)
#26 C:\laragon\www\xcrm\framework\web\CBaseController.php(126): require('C:\\laragon\\www\\...')
#27 C:\laragon\www\xcrm\framework\web\CBaseController.php(95): CBaseController->renderInternal('C:\\laragon\\www\\...', Array, true)
#28 C:\laragon\www\xcrm\framework\web\CController.php(872): CBaseController->renderFile('C:\\laragon\\www\\...', Array, true)
#29 C:\laragon\www\xcrm\protected\controllers\x2base.php(731): CController->renderPartial('view', Array, true)
#30 C:\laragon\www\xcrm\protected\controllers\x2base.php(267): x2base->render('view', Array)
#31 C:\laragon\www\xcrm\protected\modules\products\controllers\ProductsController.php(92): x2base->view(Object(Product))
#32 [internal function]: ProductsController->actionView('5')
#33 C:\laragon\www\xcrm\framework\web\actions\CAction.php(109): ReflectionMethod->invokeArgs(Object(ProductsController), Array)
#34 C:\laragon\www\xcrm\framework\web\actions\CInlineAction.php(47): CAction->runWithParamsInternal(Object(ProductsController), Object(ReflectionMethod), Array)
#35 C:\laragon\www\xcrm\framework\web\CController.php(308): CInlineAction->runWithParams(Array)
#36 C:\laragon\www\xcrm\framework\web\filters\CFilterChain.php(134): CController->runAction(Object(CInlineAction))
#37 C:\laragon\www\xcrm\protected\controllers\x2base.php(581): CFilterChain->run()
#38 C:\laragon\www\xcrm\framework\web\filters\CInlineFilter.php(58): x2base->filterSetPortlets(Object(CFilterChain))
#39 C:\laragon\www\xcrm\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter(Object(CFilterChain))
#40 C:\laragon\www\xcrm\framework\web\filters\CFilter.php(40): CFilterChain->run()
#41 C:\laragon\www\xcrm\framework\web\filters\CFilterChain.php(131): CFilter->filter(Object(CFilterChain))
#42 C:\laragon\www\xcrm\framework\web\filters\CFilter.php(40): CFilterChain->run()
#43 C:\laragon\www\xcrm\framework\web\filters\CFilterChain.php(131): CFilter->filter(Object(CFilterChain))
#44 C:\laragon\www\xcrm\framework\web\CController.php(291): CFilterChain->run()
#45 C:\laragon\www\xcrm\framework\web\CController.php(265): CController->runActionWithFilters(Object(CInlineAction), Array)
#46 C:\laragon\www\xcrm\framework\web\CWebApplication.php(282): CController->run('view')
#47 C:\laragon\www\xcrm\protected\components\X2WebApplication.php(65): CWebApplication->runController('products/produc...')
#48 C:\laragon\www\xcrm\framework\base\CApplication.php(185): X2WebApplication->processRequest()
#49 C:\laragon\www\xcrm\index.php(67): CApplication->run()
#50 {main}
X2Engine Version: 7.1
PHP Version: 7.4.15

Error on Installation

I am trying to install on my laptop.
I am on localhost/installer.php.
I key in wrong credentials for the database and click Test Connection.
I saw no prompt for error on database connection.

The network on Chrome Dev Tools shows that under initialize.php Line 192 an Exception occurred and is not caught.

Contact List Multiple Value Issue

I just installed the latest version of X2ENGINE and found out that:
I changed a Lead Type to "Multiple Select"
And when you create a filter for Contact List you selecting:
"Lead Type" in list "value"
it does not filter.
But if you change Multiple Select to a single one back again - it works perfectly

Update to 2.9.1 from 2.9 not possible

ADMIN - System Settings - Update X2CRM not updating from 2.9.0 to 2.9.1

We updated our systems from 2.8.1 and it is now showing 2.9
We wanted to furthermore update to 2.9.1 but it keep telling us it is up to date. GIT shows 2.9.1 as newest Version - an update to this version is not possible.

Quotes/Invoice Modules

Hi!
How would I disable a module like invoices/Quotes if I do not need it. I love everything about X2CRM but my accounting system already accomplishes any Of the capabilities offered by these two modules.

Any insight or guidance, would be greatly appreciated.

Trying to get in touch regarding a security issue

Hey there!

I'd like to report a security issue but cannot find contact instructions on your repository.

If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.

Thank you for your consideration, and I look forward to hearing from you!

(cc @huntr-helper)

504 on install.php

Hi,

When I try to load the install.php I get a 504 error.

I use php7.4 and nginx.
My nginx config is as followed:

server {
    listen 80;
    listen [::]:80;
    root /var/www/html/x2crm;
    index  index.php;
    server_name  crm.domain.com;

    client_max_body_size 100M;

    location / {
        try_files $uri $uri/ =404;
       }

    location ~ [^/].php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

and in the log I get the following error:

[error]: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: crm.domain.com, request: "GET /install.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.4-fpm.sock", host: "crm.domain.com"

Can anyone help me and tell me, where my error is? Thank you.

Enable redirect links disabled

Version 6.9
PHP

ROLE has all permissions

When creating a campaign, the Enable redirect links box is disabled even though the role has all permissions enabled.

Mail from Opportunities

Sending mail from an opportunity is tied to the field "contact", which is a search field originating from the contact list. But if we load an existing contact there, it acquires the value of the contact's full name. I've found the following rules: mail button only appears if the field is not empty; but only opens the message if the field content is an e-mail. Anyway, to detect those differences it is necessary to reload the page (F5).
The behavior I expected and wish: mail button always visible, because not necessarily related to the "contact" field, and would be useful (in the message window) if the "to" field be a dropdown with ability to add contacts from the list or related to the opportunity.

Currencies do not change

When updating the currencies in "ADMIN - General Settings" the currency symbol in Quotations etc is not changing to THB or the THB Sign

X2CalendarPermissions.php issue

It seems that X2CalendarPermissions.php file is different in the 6.9 branch and in the 6.9 tag (commit 76d58e6).

I got a 500 error using the code in the tar.gz (76d58e6).

https://github.com/X2Engine/X2CRM/blob/76d58e6c7e526579dac46de17ca912824a2d3adf/x2engine/protected/modules/calendar/models/X2CalendarPermissions.php

I was able to fix it by substituting the file with this version:

https://github.com/X2Engine/X2CRM/blob/6.9/x2engine/protected/modules/calendar/models/X2CalendarPermissions.php

[bug] Trim() not happening for fields

This has been a problem forever, I'm not sure if its fixed in the latest.

Our first name and last name (and probably other fields) don't get trimmed of spaces when put in the field. This could be an API thing, an inline edit thing or full edit thing, not sure. This causes nameId to be dumb in a lot of situations.

Integrate X2Engine Core with another project

X2Engine is a CRM, but I think it has a core, which does not have any module or something more specific. If I am correct and this core exists, I can use it for a new application (eg BAP), or integrate it into an existing application already based on Yii Framework?

If the answer is no, would have some plataform to indicate?

dead?

I just discovered this project and while it looks interesting, I suspect it is either dead or dyeing. Maybe because of Covid? I see no mention of updates or anything more recent than last 2019 (it's almost odd now not to see something regarding Covid somewhere on a site tbh).

Anyways, I was exploring Open Source CRM solutions to try out on a project idea. I can't seem to figure out where to start with this one beyond this github.

Hope all is well with everyone.

Incorrect ical format

When exporting a calendar from x2crm, the ical format produced is incorrect. Here are 3 issues I've come across:

  1. Calendar Actions are single day events -- they should not span multiple days. However they seem to use the completeDate field as the end date, which is not updated appropriately. Recommendation is for Actions to use the dueDate field for the end date.

  2. All Day Events are not respected in the ical file because the formatting is incorrect. Recommendation is that all day events should only have the 'Ymd' format, and not include the time ('His'). Additionally, multi-all-day events require the end date to be one day later.

  3. Calendar Actions include mandatory Subject fields that are not reported in the ical. Recommendation is to place the subject in the SUBJECT field and move the description to the DESCRIPTION field.

Here are my recommended code modifcations for render() in /components/Ical.php:

 $start = new DateTime();
 $end = new DateTime();
 $tzOb = new DateTimeZone($tz);
 $start->setTimestamp($action->dueDate);
 $end->setTimestamp((isset($action->type) && $action->type == 'event') ? $action->completeDate : $action->dueDate);
 $start->setTimezone($tzOb);
 $end->setTimezone($tzOb);
 $allDay = isset($action->allDay) && $action->allDay == 1 ? true : false;
 echo "DTSTART;TZID=$tz:".$start->format($allDay?'Ymd':'Ymd\THis')."\r\n";
 echo "DTEND;TZID=$tz:".$end->add(new DateInterval($allDay?'P1D':'P0D'))->format($allDay?'Ymd':'Ymd\THis')."\r\n";
 echo "SUMMARY:".self::escapeText(!empty($action->subject) ? $action->subject : $action->actionText->text)."\r\n";
 echo "DESCRIPTION:".self::escapeText(!empty($action->subject) ? $action->actionText->text : '')."\r\n";
 echo "END:VEVENT\r\n";

Stored XSS in module name

Hi agian

Description :
XSS in module name will prompt in all other pages of X2CRM CE V6.9

Sample Pic:
ezgif-4-97e4273b25ba

Payload to use : "><img src=x onerror=prompt('@darknetguy');>

Tested on Windows 10 Firefox | Google Chrome // Cent-OS 7 Firefox | Chromium

BR,

Milad Fadavvi

Update trigger still fires during creation of contact lists

Thank you kindly for your work on this product.

Changelog for 4.1.6b states:

Update trigger no longer fired during creation of contact lists (this was a bug)

I just installed that version and it looks like the bug is still there:

Error Code: 500
Error Message: X2List and its behaviors do not have a method or closure named "enableUpdateTrigger".
Stack Trace: [click to toggle display]
#0 /var/www/html/x2engine/framework/db/ar/CActiveRecord.php(227): CComponent->__call('enableUpdateTri...', Array)
#1 /var/www/html/x2engine/protected/models/X2Model.php(712): CActiveRecord->__call('enableUpdateTri...', Array)
#2 /var/www/html/x2engine/protected/models/X2Model.php(712): X2List->enableUpdateTrigger()
#3 /var/www/html/x2engine/protected/modules/contacts/controllers/ContactsController.php(1179): X2Model->save()
#4 /var/www/html/x2engine/protected/models/X2Model.php(241): ContactsController->{closure}()
#5 /var/www/html/x2engine/protected/modules/contacts/controllers/ContactsController.php(1180): X2Model->runWithoutBehavior('X2FlowTriggerBe...', Object(Closure))
#6 [internal function]: ContactsController->actionList('1')
#7 /var/www/html/x2engine/framework/web/actions/CAction.php(108): ReflectionMethod->invokeArgs(Object(ContactsController), Array)
#8 /var/www/html/x2engine/framework/web/actions/CInlineAction.php(47): CAction->runWithParamsInternal(Object(ContactsController), Object(ReflectionMethod), Array)
#9 /var/www/html/x2engine/framework/web/CController.php(308): CInlineAction->runWithParams(Array)
#10 /var/www/html/x2engine/framework/web/filters/CFilterChain.php(133): CController->runAction(Object(CInlineAction))
#11 /var/www/html/x2engine/protected/controllers/x2base.php(1126): CFilterChain->run()
#12 /var/www/html/x2engine/framework/web/filters/CInlineFilter.php(58): x2base->filterSetPortlets(Object(CFilterChain))
#13 /var/www/html/x2engine/framework/web/filters/CFilterChain.php(130): CInlineFilter->filter(Object(CFilterChain))
#14 /var/www/html/x2engine/framework/web/filters/CFilter.php(40): CFilterChain->run()
#15 /var/www/html/x2engine/framework/web/filters/CFilterChain.php(130): CFilter->filter(Object(CFilterChain))
#16 /var/www/html/x2engine/framework/web/filters/CFilter.php(40): CFilterChain->run()
#17 /var/www/html/x2engine/framework/web/filters/CFilterChain.php(130): CFilter->filter(Object(CFilterChain))
#18 /var/www/html/x2engine/framework/web/CController.php(291): CFilterChain->run()
#19 /var/www/html/x2engine/framework/web/CController.php(265): CController->runActionWithFilters(Object(CInlineAction), Array)
#20 /var/www/html/x2engine/framework/web/CWebApplication.php(282): CController->run('list')
#21 /var/www/html/x2engine/framework/web/CWebApplication.php(141): CWebApplication->runController('contacts/contac...')
#22 /var/www/html/x2engine/framework/base/CApplication.php(180): CWebApplication->processRequest()
#23 /var/www/html/x2engine/index.php(55): CApplication->run()
#24 {main}

source-less minified javascripts all over the source

All over the source tree there are source-less minified javascript and .css files:

x2engine/js/lib/jquery-migrate-1.2.1.js
x2engine/js/lib/moment-with-locales.min.js
x2engine/js/modcoder_excolor/jquery.modcoder.excolor.js
x2engine/js/jquery-1.6.2.min.js
x2engine/js/jquery-ui-1.8.16.custom.min.js
x2engine/js/jquery.fullscreen-min.js
x2engine/js/jstorage.min.js
x2engine/js/modernizr.custom.66175.js
x2engine/css/bootstrap/bootstrap.min.css

and many others. Minified javascripts (and .css) are effectively the same as pre-compiled binaries -- un-readable, non-modifiable and non-distributable in Debian.
It is a bad practice to commit minified files just like it is a bad practice to commit other pre-compiled binaries.

Some of those minified files are redundant (when original uncompressed file exist) and some appears to be customised (not the same as original 3rd party file) but without source.

Please consider removing all minified files and replacing them with original uncompressed files.

Thanks.

phone home ip is not responding

this program does a phone home to 52.33.121.218 but it doesn't seem to be responding. (could be temporary?)
install hangs forever until 504 timeout, loading the web site hangs forever as well. commenting out the phone home check in protected/components/views/requirements.php lets the site function again.

Maybe should use a domain name instead of an ip address? Maybe should set a shorter timeout and report an error about the software not being able to phone home if this is a requirement of operation.

Stored XSS in Contact firsname and last name

Hi,

Description :

Create a contact with

first name: test"><img src=x onerror=prompt('@darknetguy');>

and
last name : test2"><img src=x onerror=prompt('@darknetguy');>

( you can even delete the contact its worst!) XSS will run in to all pages than activity feed is present. ( in X2CRM CE V6.9)

Sample Pic:
2018-11-06_14-33-13

Payload to use : "><img src=x onerror=prompt('@darknetguy');>

Tested on Windows 10 Firefox | Google Chrome // Cent-OS 7 Firefox | Chromium

BR,

Milad Fadavvi

non-free images

According to LICENSE.txt files in x2engine/images/* are licensed under non-free CC-BY-NC-ND-3.0 license prohibiting commercial use and modification. Presence of such files makes the whole source archive non-distributable. Therefore X2Engine is not suitable for inclusion to Debian.

Please consider re-licensing those image under free license like CC-BY-SA-3.0 (or higher version). Alternatively those proprietary logos can be removed from source tree.

Let me stress the importance of this issue again: presence of images with non-commercial restriction in source archive makes X2Engine community edition non-free which invalidates the claim that the latter is "free and open source".

unable to define outbound email address different to mailbox user

I got such setup:

mailbox user [email protected]
email alias [email protected]

when I define above in smtp section I cannot define such mailbox as imap mailbox (user unknown to email server as [email protected] is only alias and app uses it as IMAP login)

when i define email as [email protected] IMAP works fine but sending mails from mail client does not allow me to choose which mailbox to use and sends them showing [email protected] as sender. I wanted it to use as sender my alias.

When I enter contact and then create email I can choose which mailbox to use and then it uses my alias as sender. This should work the same in both places.

500 error on new install

/index.php/products/lists

Error Code: 500
Error Message: CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'modelName' in 'where clause'
Stack Trace: [click to toggle display]
X2Engine Version: 7.1
PHP Version: 7.0.33-0ubuntu0.16.04.7

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.