/** * Deletes a directory recursively, including all files and directories * @param String $dir full path for the directory to delete. * @return Bool true if directory and all contained files/directories were successfully deleted, false otherwise. */ public static function deleteDirectoryRecursively($dir) { $files = array_diff(scandir($dir), array('.', '..')); foreach ($files as $file) { is_dir($dir . DIRECTORY_SEPARATOR . $file) ? \creamy\CRMUtils::deleteDirectoryRecursively($dir . DIRECTORY_SEPARATOR . $file) : unlink($dir . DIRECTORY_SEPARATOR . $file); } return rmdir($dir); }
/** * Deletes a module. */ public function deleteModule($shortName) { if (!$this->enabled) { return false; } // avoid nasty things here... $sanitized = preg_replace("/[^a-zA-Z0-9_\\-]+/", "", $shortName); // remove from active modules. if (($key = array_search($shortName, $this->activeModules)) !== false) { unset($this->activeModules[$key]); } // remove from current entries. if (array_key_exists($sanitized, $this->allModules)) { $moduleDefinition = $this->allModules[$sanitized]; $moduleDefinition->runMethodOnModule("uninstallModule", null); unset($this->allModules[$sanitized]); } // delete files and directory structure. $path = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . CRM_MODULES_BASEDIR . DIRECTORY_SEPARATOR . $sanitized; \creamy\CRMUtils::deleteDirectoryRecursively($path); return true; }