Exemple #1
0
 public function uninstall()
 {
     PHPWS_Cache::clearCache();
     $content = array();
     if (!$this->isModules()) {
         return PHPWS_Error::get(BOOST_NO_MODULES_SET, 'boost', 'install');
     }
     foreach ($this->modules as $title => $mod) {
         unset($GLOBALS['Modules'][$title]);
         $title = trim($title);
         if ($this->getStatus($title) == BOOST_DONE) {
             continue;
         }
         if ($this->getCurrent() != $title && $this->getStatus($title) == BOOST_NEW) {
             $this->setCurrent($title);
             $this->setStatus($title, BOOST_START);
         }
         // H 0120
         $content[] = dgettext('boost', 'Uninstalling') . ' - ' . $mod->getProperName();
         // $content[] = '<b>' . dgettext('boost', 'Uninstalling') . ' - ' . $mod->getProperName() .'</b>';
         if ($this->getStatus($title) == BOOST_START && $mod->isImportSQL()) {
             $uninstall_file = $mod->getDirectory() . 'boost/uninstall.sql';
             if (!is_file($uninstall_file)) {
                 $content[] = dgettext('boost', 'Uninstall SQL not found.');
             } else {
                 $content[] = dgettext('boost', 'Importing SQL uninstall file.');
                 $result = PHPWS_Boost::importSQL($uninstall_file);
                 if (PHPWS_Error::isError($result)) {
                     PHPWS_Error::log($result);
                     $content[] = dgettext('boost', 'An import error occurred.');
                     $content[] = dgettext('boost', 'Check your logs for more information.');
                     return implode('<br />', $content);
                 } else {
                     $content[] = dgettext('boost', 'Import successful.');
                 }
             }
         }
         $result = (bool) $this->onUninstall($mod, $content);
         // ensure translate path
         if ($result === true) {
             $this->setStatus($title, BOOST_DONE);
             $this->removeDirectories($mod, $content);
             $this->unregisterModule($mod, $content);
             $this->removeDependencies($mod);
             $this->removeKeys($mod);
             // H 0120
             // $content[] = '<hr />';
             $content[] = dgettext('boost', 'Finished uninstalling module!');
             break;
         } elseif ($result == -1) {
             $this->setStatus($title, BOOST_DONE);
             $this->removeDirectories($mod, $content);
             $this->unregisterModule($mod, $content);
             $this->removeDependencies($mod);
             $this->removeKeys($mod);
         } elseif ($result === false) {
             $this->setStatus($title, BOOST_PENDING);
             break;
         } elseif (PHPWS_Error::isError($result)) {
             $content[] = dgettext('boost', 'There was a problem in the installation file:');
             $content[] = '<b>' . $result->getMessage() . '</b>';
             $content[] = '<br />';
             PHPWS_Error::log($result);
         }
     }
     // H 0120 + place into boost log also
     $this->addLog($title, implode("\n", str_replace('<br />', "\n", $content)));
     return implode('<br />', $content);
 }