function main(&$errors) { global $config, $_SERWEB; $dh =& Domains::singleton(); if (false === ($domains = $dh->get_all_dids())) { return false; } foreach ($domains as $did) { if (false === update_domain_dir($did)) { return false; } } /* update vhosts dir */ if ($config->apache_vhosts_dir) { $target = realpath($_SERWEB["serwebdir"]); $local_links = array(); /* get list of local symlinks */ $d = dir($config->apache_vhosts_dir); while (false !== ($entry = $d->read())) { if (is_link($config->apache_vhosts_dir . $entry) and realpath(readlink($config->apache_vhosts_dir . $entry)) == $target) { $local_links[] = $entry; } /* this is need for testing on windows if ($entry != "." and $entry != ".."){ $local_links[] = substr($entry, 0, -4); } */ } $d->close(); /* get list of domain names */ $dom_names = array(); if (false === ($domains = $dh->get_domains())) { return false; } foreach ($domains as $k => $v) { $dom_names[] = $k; } /* synchronize links in vhosts dir with DB */ $d_lnk = array_diff($local_links, $dom_names); $c_lnk = array_diff($dom_names, $local_links); foreach ($d_lnk as $v) { remove_vhost_symlink($v); } foreach ($c_lnk as $v) { create_vhost_symlink($v); } } return true; }
/** * Method remove symlinks for domain name (alias) * * Method remove symlinks from directory with domain specific config and * from directory with virtual hosts (for purpose of apache) * * @param string $domain_name name of domain (alias) * @param array $errors array with error messages * @return bool return TRUE on success, FALSE on failure */ function domain_remove_symlinks($domain_name, &$errors) { global $config; if (false === remove_vhost_symlink($domain_name)) { return false; } return true; }