Example #1
0
 /** 
  * 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);
 }
Example #2
0
 /** 
  * 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;
 }