function CopyAddonDir($fromDir, $toDir) { $dh = @opendir($fromDir); if (!$dh) { return false; } if (!gpFiles::CheckDir($toDir)) { message('Copy failed: ' . $fromDir . ' to ' . $toDir . ' (1)'); return false; } while (($file = readdir($dh)) !== false) { if (strpos($file, '.') === 0) { continue; } $fullFrom = $fromDir . '/' . $file; $fullTo = $toDir . '/' . $file; //directories if (is_dir($fullFrom)) { if (!admin_addon_install::CopyAddonDir($fullFrom, $fullTo)) { closedir($dh); return false; } continue; } //files //If the destination file already exists, it will be overwritten. if (!copy($fullFrom, $fullTo)) { message('Copy failed: ' . $fullFrom . ' to ' . $fullTo . ' (2)'); closedir($dh); return false; } } closedir($dh); return true; }
function ChangeInstallConfirmed(&$addonName) { global $dataDir, $langmessage; $installFolder = $dataDir . '/data/_addoncode/' . $addonName; $fromFolder = $dataDir . '/addons/' . $addonName; if (!file_exists($installFolder)) { message($langmessage['OOPS']); return; } if (!file_exists($fromFolder)) { message($langmessage['OOPS']); return; } if (is_link($installFolder)) { unlink($installFolder); if (!admin_addon_install::CopyAddonDir($fromFolder, $installFolder)) { message($langmessage['OOPS']); return; } } else { gpFiles::RmAll($installFolder); if (!symlink($fromFolder, $installFolder)) { message($langmessage['OOPS']); return; } } message('Install Type Changed'); }