gouchaoer
V2EX  ›  PHP

基于 SuiteCRM 进行二次开发一些总结

  •  
  •   gouchaoer · Jul 18, 2020 · 2825 views
    This topic created in 2151 days ago, the information mentioned may be changed or developed.
    最近公司需要一款 CRM (或者 ERP )系统来管理客户关系以及分发资料, 调研了 Salesforce 、SharePoint 、Dynamic 以及开源的方案之后,打算先基于开源的 SuiteCRM 先尝试开发看看效果。我也是第一次接触 CRM 管理系统,因为 SuiteCRM 是基于 PHP 写的,我写了很多 PHP 所以二次开发起来还算顺利。这里把我二次开发的一些经验和坑记录一下。

    搭建 SuiteCRM 还好,为了方便我写了一个 Dockerfile,在里面装上 nginx+fpm,然后基于 GitHub 上官方文档进行安装,这个还是比较 easy 的。接下来就是流程业务问题了,我们的需求主要是给用户分发资料文档,分发的这些资料的方式有自己的一点特殊需求,然后资料文档的上线内部用户有审核机制(虽然目前看上去比较简单,但是后期可能会添加一些功能)。然后遇到的第一个难点就是熟悉 SuiteCRM 的用户权限系统,然后把这个权限系统拿来套我们自己的业务。官方的文档以及一些中文资源我也看了,看了蛮长时间的,有些功能选项我到现在还是没有搞清楚,但是基本的功能用法已经够用了。

    在二次开发的时候说说我的一点经验,因为我们只是做一点改动来满足自己的需求,所以完全没有必要去理解 SuiteCRM 的那一套框架开发方法,只需要找到渲染对应组件的地方往里面塞自己的代码逻辑就 OK 了。把 XDEBUG 单步调试打开,便 debug 便写搞起来很快。

    然后官方商店有一些付费的插件可以大幅度减轻我的工作量,我买了一个插件装上,然后去审计代码的时候发现里面全是 sql 注入漏洞,总之非常震惊。详情见:
    https://www.reddit.com/r/PHP/comments/h06fxs/find_sql_injection_where_after_paid_a_suitecrm/。最后没办法只有自己基于官方的一个 joomla 插件二次开发了,就是这个插件: https://github.com/salesagility/SuiteCRM-Portal-Joomla

    然后我又安装了一个 joomla,然后把插件装上发现功能蛮简陋的,需要做一些定制才行。后来发现可能是 SuiteCRM 版本更新了,有个函数变了但是这个插件没有更新,于是新建 Case 的时候部分信息会丢掉。我提了个 PR 给官方,见: https://github.com/salesagility/SuiteCRM/pull/8824,不过这个插件 N 年没人维护,所以有的用就不错了。由于这个 joomla 插件和 SuiteCRM 是通过 Rest API 来通信的,导致 XDEBUG 不太好调试,我最后摸索出来一个办法就是这个 Rest API 是 curl 写的,只需要在 curl 设置我本机的 fiddler 代理,就能抓到这些 http 的 api 请求了。然后用 fiddler 的重放功能触发 XDEBUG 就能很方便的调试了。

    还有就是 SuiteCRM 内部的邮件系统需要去调整很久才能满足可用的状态,有时候还比较 tricky 。
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3164 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:52 · PVG 20:52 · LAX 05:52 · JFK 08:52
    ♥ Do have faith in what you're doing.