<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>There is often a need to uninstall a module, community vtiger (6.2) does not have a built in way to do this.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>There is some code here…<o:p></o:p></p><p class=MsoNormal><a href="https://discussions.vtiger.com/index.php?p=/discussion/28895/how-to-uninstall-one-module/p1">https://discussions.vtiger.com/index.php?p=/discussion/28895/how-to-uninstall-one-module/p1</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I thought I’d improve on the code a little bit and include it here for others with the need<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please remember to delete the file after uninstalling the module it is definitely a security risk!!!<o:p></o:p></p><p class=MsoNormal>An additional test would be to ensure only a logged in admin could run this file but as the need is so low I didn’t think it was worth the extra effort<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Call it like thus…<o:p></o:p></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>Mydomain.moc/vtigerfolder/deletemodule.php?modulename=MyRss<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Chris<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>deletemodule.php<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-family:"Courier New"'><?php<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>/*<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * Delete a vtiger module<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> *<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * based on code at<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * https://discussions.vtiger.com/index.php?p=/discussion/28895/how-to-uninstall-one-module/p1<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> *<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * assumes it is being called from a webbrowser<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> * modifications are required if called from the CLI<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> *<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'> */<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>error_reporting(E_ALL); // & ~E_STRICT & ~E_DEPRECATED & ~E_NOTICE);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>ini_set('display_errors', 1);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>require_once('vtlib/Vtiger/Module.php');<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// we need these functions to continue<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>if (!function_exists('vtlib_isModuleActive') || !class_exists('Vtiger_Module')) {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    die("Unable to process request; unmet needs");<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// get the name from the commandline<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>$modulename = (!empty($_GET['modulename'])) ? $_GET['modulename'] : null;<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// have we been provided a name?<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>if (!$modulename) {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    die("modulename is required");<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// is the name valid(ish)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>if (preg_match('/[^a-zA-Z_-]/', $modulename)) {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    die("modulename {$modulename} not valid");<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// load the module<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>$module = Vtiger_Module::getInstance($modulename);<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>if ($module) {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// check if the module is active if so it cant be deleted<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    if (vtlib_isModuleActive($modulename)) {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>        die("You cannot delete an active module");<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    }<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    echo "Module {$modulename} is about to be deleted<br/>\n";<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>// Delete from system<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    $module->delete();<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    echo "Module {$modulename} deleted!<br/>\n";<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    echo "Please manually delete the source files for {$modulename}, Do not forget layout files, language files and other possible files";<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>} else {<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>    echo "Module {$modulename} was not found and could not be deleted!";<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>}<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>