function mainwp_backup() { $this->secure_request('mainwp_backup'); try { if (!isset($_POST['site_id']) || !MainWP_Utility::ctype_digit($_POST['site_id'])) { throw new MainWP_Exception('Invalid request'); } $excludedFolder = trim($_POST['exclude'], "\n"); $excludedFolder = explode("\n", $excludedFolder); $excludedFolder = array_map(array('MainWP_Utility', 'trimSlashes'), $excludedFolder); $excludedFolder = implode(',', $excludedFolder); $result = MainWP_Manage_Sites::backup($_POST['site_id'], $_POST['type'], isset($_POST['subfolder']) ? $_POST['subfolder'] : '', $excludedFolder, $_POST['excludebackup'], $_POST['excludecache'], $_POST['excludenonwp'], $_POST['excludezip'], $_POST['filename'], isset($_POST['fileNameUID']) ? $_POST['fileNameUID'] : '', $_POST['archiveFormat'], $_POST['maximumFileDescriptorsOverride'] == 1, $_POST['maximumFileDescriptorsAuto'] == 1, $_POST['maximumFileDescriptors'], $_POST['loadFilesBeforeZip'], $_POST['pid'], isset($_POST['append']) && $_POST['append'] == 1); die(json_encode(array('result' => $result))); } catch (MainWP_Exception $e) { die(json_encode(array('error' => array('message' => $e->getMessage(), 'extra' => $e->getMessageExtra())))); } }
function mainwp_cronupdatescheck_action() { MainWP_Logger::Instance()->info('CRON :: updates check'); @ignore_user_abort(true); @set_time_limit(0); $mem = '512M'; @ini_set('memory_limit', $mem); @ini_set('max_execution_time', 0); MainWP_Utility::update_option('mainwp_cron_last_updatescheck', time()); $mainwpAutomaticDailyUpdate = get_option('mainwp_automaticDailyUpdate'); $mainwpLastAutomaticUpdate = get_option('mainwp_updatescheck_last'); if ($mainwpLastAutomaticUpdate == date('d/m/Y')) { MainWP_Logger::Instance()->debug('CRON :: updates check :: already updated today'); return; } $websites = MainWP_DB::Instance()->getWebsitesCheckUpdates(4); MainWP_Logger::Instance()->debug('CRON :: updates check :: found ' . count($websites) . ' websites'); $userid = null; foreach ($websites as $website) { $websiteValues = array('dtsAutomaticSyncStart' => time()); if ($userid == null) { $userid = $website->userid; } MainWP_DB::Instance()->updateWebsiteSyncValues($website->id, $websiteValues); } if (count($websites) == 0) { $busyCounter = MainWP_DB::Instance()->getWebsitesCountWhereDtsAutomaticSyncSmallerThenStart(); if ($busyCounter == 0) { MainWP_Logger::Instance()->debug('CRON :: updates check :: got to the mail part'); //Send the email & update all to this time! $mail = ''; $sendMail = false; $sitesCheckCompleted = null; if (get_option('mainwp_backup_before_upgrade') == 1) { $sitesCheckCompleted = get_option('mainwp_automaticUpdate_backupChecks'); if (!is_array($sitesCheckCompleted)) { $sitesCheckCompleted = null; } } $pluginsNewUpdate = get_option('mainwp_updatescheck_mail_update_plugins_new'); if (!is_array($pluginsNewUpdate)) { $pluginsNewUpdate = array(); } $pluginsToUpdate = get_option('mainwp_updatescheck_mail_update_plugins'); if (!is_array($pluginsToUpdate)) { $pluginsToUpdate = array(); } $ignoredPluginsNewUpdate = get_option('mainwp_updatescheck_mail_ignore_plugins_new'); if (!is_array($ignoredPluginsNewUpdate)) { $ignoredPluginsNewUpdate = array(); } $ignoredPluginsToUpdate = get_option('mainwp_updatescheck_mail_ignore_plugins'); if (!is_array($ignoredPluginsToUpdate)) { $ignoredPluginsToUpdate = array(); } if (count($pluginsNewUpdate) != 0 || count($pluginsToUpdate) != 0) { $sendMail = true; $mail .= '<div><strong>WordPress Plugin Updates</strong></div>'; $mail .= '<ul>'; $mail .= $this->print_updates_array_lines($pluginsNewUpdate, null); $mail .= $this->print_updates_array_lines($pluginsToUpdate, $sitesCheckCompleted); // $mail .= $this->print_updates_array_lines( $ignoredPluginsNewUpdate, null ); // $mail .= $this->print_updates_array_lines( $ignoredPluginsToUpdate, null ); $mail .= '</ul>'; } $themesNewUpdate = get_option('mainwp_updatescheck_mail_update_themes_new'); if (!is_array($themesNewUpdate)) { $themesNewUpdate = array(); } $themesToUpdate = get_option('mainwp_updatescheck_mail_update_themes'); if (!is_array($themesToUpdate)) { $themesToUpdate = array(); } $ignoredThemesNewUpdate = get_option('mainwp_updatescheck_mail_ignore_themes_new'); if (!is_array($ignoredThemesNewUpdate)) { $ignoredThemesNewUpdate = array(); } $ignoredThemesToUpdate = get_option('mainwp_updatescheck_mail_ignore_themes'); if (!is_array($ignoredThemesToUpdate)) { $ignoredThemesToUpdate = array(); } if (count($themesNewUpdate) != 0 || count($themesToUpdate) != 0) { $sendMail = true; $mail .= '<div><strong>WordPress Themes Updates</strong></div>'; $mail .= '<ul>'; $mail .= $this->print_updates_array_lines($themesNewUpdate, null); $mail .= $this->print_updates_array_lines($themesToUpdate, $sitesCheckCompleted); // $mail .= $this->print_updates_array_lines( $ignoredThemesNewUpdate, null ); // $mail .= $this->print_updates_array_lines( $ignoredThemesToUpdate, null ); $mail .= '</ul>'; } $coreNewUpdate = get_option('mainwp_updatescheck_mail_update_core_new'); if (!is_array($coreNewUpdate)) { $coreNewUpdate = array(); } $coreToUpdate = get_option('mainwp_updatescheck_mail_update_core'); if (!is_array($coreToUpdate)) { $coreToUpdate = array(); } $ignoredCoreNewUpdate = get_option('mainwp_updatescheck_mail_ignore_core_new'); if (!is_array($ignoredCoreNewUpdate)) { $ignoredCoreNewUpdate = array(); } $ignoredCoreToUpdate = get_option('mainwp_updatescheck_mail_ignore_core'); if (!is_array($ignoredCoreToUpdate)) { $ignoredCoreToUpdate = array(); } if (count($coreNewUpdate) != 0 || count($coreToUpdate) != 0 || count($ignoredCoreNewUpdate) != 0 || count($ignoredCoreToUpdate) != 0) { $sendMail = true; $mail .= '<div><strong>WordPress Core Updates</strong></div>'; $mail .= '<ul>'; $mail .= $this->print_updates_array_lines($coreNewUpdate, null); $mail .= $this->print_updates_array_lines($coreToUpdate, $sitesCheckCompleted); $mail .= $this->print_updates_array_lines($ignoredCoreNewUpdate, null); $mail .= $this->print_updates_array_lines($ignoredCoreToUpdate, null); $mail .= '</ul>'; } $pluginConflicts = get_option('mainwp_updatescheck_mail_pluginconflicts'); if ($pluginConflicts === false) { $pluginConflicts = ''; } if ($pluginConflicts != '') { $sendMail = true; $mail .= '<div><strong>WordPress Plugin Conflicts</strong></div>'; $mail .= '<ul>'; $mail .= $pluginConflicts; $mail .= '</ul>'; } $themeConflicts = get_option('mainwp_updatescheck_mail_themeconflicts'); if ($themeConflicts === false) { $themeConflicts = ''; } if ($themeConflicts != '') { $sendMail = true; $mail .= '<div><strong>WordPress Theme Conflicts</strong></div>'; $mail .= '<ul>'; $mail .= $themeConflicts; $mail .= '</ul>'; } MainWP_Utility::update_option('mainwp_automaticUpdate_backupChecks', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_core_new', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_plugins_new', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_themes_new', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_core', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_plugins', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_themes', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_core', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_plugins', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_themes', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_core_new', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_plugins_new', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_themes_new', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_pluginconflicts', ''); MainWP_Utility::update_option('mainwp_updatescheck_mail_themeconflicts', ''); MainWP_Utility::update_option('mainwp_updatescheck_last', date('d/m/Y')); if (!$sendMail) { MainWP_Logger::Instance()->debug('CRON :: updates check :: sendMail is false'); return; } if ($mainwpAutomaticDailyUpdate !== false && $mainwpAutomaticDailyUpdate != 0) { //Create a nice email to send $email = get_option('mainwp_updatescheck_mail_email'); MainWP_Logger::Instance()->debug('CRON :: updates check :: send mail to ' . $email); if ($email != false && $email != '') { $mail = '<div>We noticed the following updates are available on your MainWP Dashboard. (<a href="' . site_url() . '">' . site_url() . '</a>)</div> <div></div> ' . $mail . ' Update Key: (<strong><span style="color:#008000">Trusted</span></strong>) will be auto updated within 24 hours. (<strong><span style="color:#ff0000">Not Trusted</span></strong>) you will need to log into your Main Dashboard and update <div> </div> <div>If your MainWP is configured to use Auto Updates these upgrades will be installed in the next 24 hours. To find out how to enable automatic updates please see the FAQs below.</div> <div><a href="http://docs.mainwp.com/marking-a-plugin-as-trusted/" style="color:#446200" target="_blank">http://docs.mainwp.com/marking-a-plugin-as-trusted/</a></div> <div><a href="http://docs.mainwp.com/marking-a-theme-as-trusted/" style="color:#446200" target="_blank">http://docs.mainwp.com/marking-a-theme-as-trusted/</a></div> <div><a href="http://docs.mainwp.com/marking-a-sites-wp-core-updates-as-trusted/" style="color:#446200" target="_blank">http://docs.mainwp.com/marking-a-sites-wp-core-updates-as-trusted/</a></div>'; wp_mail($email, 'MainWP - Trusted Updates', MainWP_Utility::formatEmail($email, $mail), array('From: "' . get_option('admin_email') . '" <' . get_option('admin_email') . '>', 'content-type: text/html')); } } } } else { $userExtension = MainWP_DB::Instance()->getUserExtensionByUserId($userid); $decodedIgnoredPlugins = json_decode($userExtension->ignored_plugins, true); if (!is_array($decodedIgnoredPlugins)) { $decodedIgnoredPlugins = array(); } $trustedPlugins = json_decode($userExtension->trusted_plugins, true); if (!is_array($trustedPlugins)) { $trustedPlugins = array(); } $decodedIgnoredThemes = json_decode($userExtension->ignored_themes, true); if (!is_array($decodedIgnoredThemes)) { $decodedIgnoredThemes = array(); } $trustedThemes = json_decode($userExtension->trusted_themes, true); if (!is_array($trustedThemes)) { $trustedThemes = array(); } $coreToUpdateNow = array(); $coreToUpdate = array(); $coreNewUpdate = array(); $ignoredCoreToUpdate = array(); $ignoredCoreNewUpdate = array(); $pluginsToUpdateNow = array(); $pluginsToUpdate = array(); $pluginsNewUpdate = array(); $ignoredPluginsToUpdate = array(); $ignoredPluginsNewUpdate = array(); $themesToUpdateNow = array(); $themesToUpdate = array(); $themesNewUpdate = array(); $ignoredThemesToUpdate = array(); $ignoredThemesNewUpdate = array(); $pluginConflicts = ''; $themeConflicts = ''; $allWebsites = array(); $infoTrustedText = ' (<span style="color:#008000"><strong>Trusted</strong></span>)'; $infoNotTrustedText = ' (<strong><span style="color:#ff0000">Not Trusted</span></strong>)'; foreach ($websites as $website) { $websiteDecodedIgnoredPlugins = json_decode($website->ignored_plugins, true); if (!is_array($websiteDecodedIgnoredPlugins)) { $websiteDecodedIgnoredPlugins = array(); } $websiteDecodedIgnoredThemes = json_decode($website->ignored_themes, true); if (!is_array($websiteDecodedIgnoredThemes)) { $websiteDecodedIgnoredThemes = array(); } //Perform check & update if (!MainWP_Sync::syncSite($website, false, true)) { $websiteValues = array('dtsAutomaticSync' => time()); MainWP_DB::Instance()->updateWebsiteSyncValues($website->id, $websiteValues); continue; } $website = MainWP_DB::Instance()->getWebsiteById($website->id); /** Check core upgrades **/ $websiteLastCoreUpgrades = json_decode(MainWP_DB::Instance()->getWebsiteOption($website, 'last_wp_upgrades'), true); $websiteCoreUpgrades = json_decode(MainWP_DB::Instance()->getWebsiteOption($website, 'wp_upgrades'), true); //Run over every update we had last time.. if (isset($websiteCoreUpgrades['current'])) { $infoTxt = '<a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - ' . $websiteCoreUpgrades['current'] . ' to ' . $websiteCoreUpgrades['new']; $infoNewTxt = '*NEW* <a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - ' . $websiteCoreUpgrades['current'] . ' to ' . $websiteCoreUpgrades['new']; $newUpdate = !(isset($websiteLastCoreUpgrades['current']) && $websiteLastCoreUpgrades['current'] == $websiteCoreUpgrades['current'] && $websiteLastCoreUpgrades['new'] == $websiteCoreUpgrades['new']); if ($website->automatic_update == 1) { if ($newUpdate) { $coreNewUpdate[] = array($website->id, $infoNewTxt, $infoTrustedText); } else { //Check ignore ? $ignoredCoreToUpdate $coreToUpdateNow[] = $website->id; $allWebsites[$website->id] = $website; $coreToUpdate[] = array($website->id, $infoTxt, $infoTrustedText); } } else { if ($newUpdate) { $ignoredCoreNewUpdate[] = array($website->id, $infoNewTxt, $infoNotTrustedText); } else { $ignoredCoreToUpdate[] = array($website->id, $infoTxt, $infoNotTrustedText); } } } /** Check plugins **/ $websiteLastPlugins = json_decode(MainWP_DB::Instance()->getWebsiteOption($website, 'last_plugin_upgrades'), true); $websitePlugins = json_decode($website->plugin_upgrades, true); /** Check themes **/ $websiteLastThemes = json_decode(MainWP_DB::Instance()->getWebsiteOption($website, 'last_theme_upgrades'), true); $websiteThemes = json_decode($website->theme_upgrades, true); $decodedPremiumUpgrades = json_decode(MainWP_DB::Instance()->getWebsiteOption($website, 'premium_upgrades'), true); if (is_array($decodedPremiumUpgrades)) { foreach ($decodedPremiumUpgrades as $slug => $premiumUpgrade) { if ($premiumUpgrade['type'] == 'plugin') { if (!is_array($websitePlugins)) { $websitePlugins = array(); } $websitePlugins[$slug] = $premiumUpgrade; } else { if ($premiumUpgrade['type'] == 'theme') { if (!is_array($websiteThemes)) { $websiteThemes = array(); } $websiteThemes[$slug] = $premiumUpgrade; } } } } //Run over every update we had last time.. foreach ($websitePlugins as $pluginSlug => $pluginInfo) { if (isset($decodedIgnoredPlugins[$pluginSlug]) || isset($websiteDecodedIgnoredPlugins[$pluginSlug])) { continue; } $infoTxt = '<a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - ' . $pluginInfo['Name'] . ' ' . $pluginInfo['Version'] . ' to ' . $pluginInfo['update']['new_version']; $infoNewTxt = '*NEW* <a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - ' . $pluginInfo['Name'] . ' ' . $pluginInfo['Version'] . ' to ' . $pluginInfo['update']['new_version']; $newUpdate = !(isset($websiteLastPlugins[$pluginSlug]) && $pluginInfo['Version'] == $websiteLastPlugins[$pluginSlug]['Version'] && $pluginInfo['update']['new_version'] == $websiteLastPlugins[$pluginSlug]['update']['new_version']); //update this.. if (in_array($pluginSlug, $trustedPlugins)) { //Trusted if ($newUpdate) { $pluginsNewUpdate[] = array($website->id, $infoNewTxt, $infoTrustedText); } else { $pluginsToUpdateNow[$website->id][] = $pluginSlug; $allWebsites[$website->id] = $website; $pluginsToUpdate[] = array($website->id, $infoTxt, $infoTrustedText); } } else { //Not trusted if ($newUpdate) { $ignoredPluginsNewUpdate[] = array($website->id, $infoNewTxt, $infoNotTrustedText); } else { $ignoredPluginsToUpdate[] = array($website->id, $infoTxt, $infoNotTrustedText); } } } //Run over every update we had last time.. foreach ($websiteThemes as $themeSlug => $themeInfo) { if (isset($decodedIgnoredThemes[$themeSlug]) || isset($websiteDecodedIgnoredThemes[$themeSlug])) { continue; } $infoTxt = '<a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - ' . $themeInfo['Name'] . ' ' . $themeInfo['Version'] . ' to ' . $themeInfo['update']['new_version']; $infoNewTxt = '*NEW* <a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - ' . $themeInfo['Name'] . ' ' . $themeInfo['Version'] . ' to ' . $themeInfo['update']['new_version']; $newUpdate = !(isset($websiteLastThemes[$themeSlug]) && $themeInfo['Version'] == $websiteLastThemes[$themeSlug]['Version'] && $themeInfo['update']['new_version'] == $websiteLastThemes[$themeSlug]['update']['new_version']); //update this.. if (in_array($themeSlug, $trustedThemes)) { //Trusted if ($newUpdate) { $themesNewUpdate[] = array($website->id, $infoNewTxt, $infoTrustedText); } else { $themesToUpdateNow[$website->id][] = $themeSlug; $allWebsites[$website->id] = $website; $themesToUpdate[] = array($website->id, $infoTxt, $infoTrustedText); } } else { //Not trusted if ($newUpdate) { $ignoredThemesNewUpdate[] = array($website->id, $infoNewTxt, $infoNotTrustedText); } else { $ignoredThemesToUpdate[] = array($website->id, $infoTxt, $infoNotTrustedText); } } } /** * Show plugin conflicts */ $sitePluginConflicts = json_decode($website->pluginConflicts, true); if (count($sitePluginConflicts) > 0) { $infoTxt = '<a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - '; $pluginConflicts .= '<li>' . $infoTxt; $added = false; foreach ($sitePluginConflicts as $sitePluginConflict) { if ($added) { $pluginConflicts .= ', '; } $pluginConflicts .= $sitePluginConflict; $added = true; } $pluginConflicts .= '</li>' . "\n"; } /** * Show theme conflicts */ $siteThemeConflicts = json_decode($website->themeConflicts, true); if (count($siteThemeConflicts) > 0) { $infoTxt = '<a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . stripslashes($website->name) . '</a> - '; $themeConflicts .= '<li>' . $infoTxt; $added = false; foreach ($siteThemeConflicts as $siteThemeConflict) { if ($added) { $themeConflicts .= ', '; } $themeConflicts .= $siteThemeConflict; $added = true; } $themeConflicts .= '</li>' . "\n"; } //Loop over last plugins & current plugins, check if we need to upgrade them.. $user = get_userdata($website->userid); $email = MainWP_Utility::getNotificationEmail($user); MainWP_Utility::update_option('mainwp_updatescheck_mail_email', $email); MainWP_DB::Instance()->updateWebsiteSyncValues($website->id, array('dtsAutomaticSync' => time())); MainWP_DB::Instance()->updateWebsiteOption($website, 'last_wp_upgrades', json_encode($websiteCoreUpgrades)); MainWP_DB::Instance()->updateWebsiteOption($website, 'last_plugin_upgrades', $website->plugin_upgrades); MainWP_DB::Instance()->updateWebsiteOption($website, 'last_theme_upgrades', $website->theme_upgrades); } if (count($coreNewUpdate) != 0) { $coreNewUpdateSaved = get_option('mainwp_updatescheck_mail_update_core_new'); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_core_new', MainWP_Utility::array_merge($coreNewUpdateSaved, $coreNewUpdate)); } if (count($pluginsNewUpdate) != 0) { $pluginsNewUpdateSaved = get_option('mainwp_updatescheck_mail_update_plugins_new'); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_plugins_new', MainWP_Utility::array_merge($pluginsNewUpdateSaved, $pluginsNewUpdate)); } if (count($themesNewUpdate) != 0) { $themesNewUpdateSaved = get_option('mainwp_updatescheck_mail_update_themes_new'); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_themes_new', MainWP_Utility::array_merge($themesNewUpdateSaved, $themesNewUpdate)); } if (count($coreToUpdate) != 0) { $coreToUpdateSaved = get_option('mainwp_updatescheck_mail_update_core'); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_core', MainWP_Utility::array_merge($coreToUpdateSaved, $coreToUpdate)); } if (count($pluginsToUpdate) != 0) { $pluginsToUpdateSaved = get_option('mainwp_updatescheck_mail_update_plugins'); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_plugins', MainWP_Utility::array_merge($pluginsToUpdateSaved, $pluginsToUpdate)); } if (count($themesToUpdate) != 0) { $themesToUpdateSaved = get_option('mainwp_updatescheck_mail_update_themes'); MainWP_Utility::update_option('mainwp_updatescheck_mail_update_themes', MainWP_Utility::array_merge($themesToUpdateSaved, $themesToUpdate)); } if (count($ignoredCoreToUpdate) != 0) { $ignoredCoreToUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_core'); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_core', MainWP_Utility::array_merge($ignoredCoreToUpdateSaved, $ignoredCoreToUpdate)); } if (count($ignoredCoreNewUpdate) != 0) { $ignoredCoreNewUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_core_new'); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_core_new', MainWP_Utility::array_merge($ignoredCoreNewUpdateSaved, $ignoredCoreNewUpdate)); } if (count($ignoredPluginsToUpdate) != 0) { $ignoredPluginsToUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_plugins'); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_plugins', MainWP_Utility::array_merge($ignoredPluginsToUpdateSaved, $ignoredPluginsToUpdate)); } if (count($ignoredPluginsNewUpdate) != 0) { $ignoredPluginsNewUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_plugins_new'); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_plugins_new', MainWP_Utility::array_merge($ignoredPluginsNewUpdateSaved, $ignoredPluginsNewUpdate)); } if (count($ignoredThemesToUpdate) != 0) { $ignoredThemesToUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_themes'); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_themes', MainWP_Utility::array_merge($ignoredThemesToUpdateSaved, $ignoredThemesToUpdate)); } if (count($ignoredThemesNewUpdate) != 0) { $ignoredThemesNewUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_themes_new'); MainWP_Utility::update_option('mainwp_updatescheck_mail_ignore_themes_new', MainWP_Utility::array_merge($ignoredThemesNewUpdateSaved, $ignoredThemesNewUpdate)); } if ($pluginConflicts != '') { $pluginConflictsSaved = get_option('mainwp_updatescheck_mail_pluginconflicts'); if ($pluginConflictsSaved == false) { $pluginConflictsSaved = ''; } MainWP_Utility::update_option('mainwp_updatescheck_mail_pluginconflicts', $pluginConflictsSaved . $pluginConflicts); } if ($themeConflicts != '') { $themeConflictsSaved = get_option('mainwp_updatescheck_mail_themeconflicts'); if ($themeConflictsSaved == false) { $themeConflictsSaved = ''; } MainWP_Utility::update_option('mainwp_updatescheck_mail_themeconflicts', $themeConflictsSaved . $themeConflicts); } if (count($coreToUpdate) == 0 && count($pluginsToUpdate) == 0 && count($themesToUpdate) == 0 && count($ignoredCoreToUpdate) == 0 && count($ignoredCoreNewUpdate) == 0 && $pluginConflicts == '' && $themeConflicts == '') { return; } if (get_option('mainwp_automaticDailyUpdate') != 1) { return; } //Check if backups are required! if (get_option('mainwp_backup_before_upgrade') == 1) { $sitesCheckCompleted = get_option('mainwp_automaticUpdate_backupChecks'); if (!is_array($sitesCheckCompleted)) { $sitesCheckCompleted = array(); } $websitesToCheck = array(); foreach ($pluginsToUpdateNow as $websiteId => $slugs) { $websitesToCheck[$websiteId] = true; } foreach ($themesToUpdateNow as $websiteId => $slugs) { $websitesToCheck[$websiteId] = true; } foreach ($coreToUpdateNow as $websiteId) { $websitesToCheck[$websiteId] = true; } foreach ($websitesToCheck as $siteId => $bool) { if ($allWebsites[$siteId]->backup_before_upgrade == 0) { $sitesCheckCompleted[$siteId] = true; } if (isset($sitesCheckCompleted[$siteId])) { continue; } $dir = MainWP_Utility::getMainWPSpecificDir($siteId); //Check if backup ok $lastBackup = -1; if (file_exists($dir) && ($dh = opendir($dir))) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { $theFile = $dir . $file; if (MainWP_Utility::isArchive($file) && !MainWP_Utility::isSQLArchive($file) && filemtime($theFile) > $lastBackup) { $lastBackup = filemtime($theFile); } } } closedir($dh); } $backupRequired = $lastBackup < time() - 7 * 24 * 60 * 60 ? true : false; if (!$backupRequired) { $sitesCheckCompleted[$siteId] = true; MainWP_Utility::update_option('mainwp_automaticUpdate_backupChecks', $sitesCheckCompleted); continue; } try { $result = MainWP_Manage_Sites::backup($siteId, 'full', '', '', 0, 0, 0, 0); MainWP_Manage_Sites::backupDownloadFile($siteId, 'full', $result['url'], $result['local']); $sitesCheckCompleted[$siteId] = true; MainWP_Utility::update_option('mainwp_automaticUpdate_backupChecks', $sitesCheckCompleted); } catch (Exception $e) { $sitesCheckCompleted[$siteId] = false; MainWP_Utility::update_option('mainwp_automaticUpdate_backupChecks', $sitesCheckCompleted); } } } else { $sitesCheckCompleted = null; } //Update plugins foreach ($pluginsToUpdateNow as $websiteId => $slugs) { if ($sitesCheckCompleted != null && $sitesCheckCompleted[$websiteId] == false) { continue; } try { MainWP_Utility::fetchUrlAuthed($allWebsites[$websiteId], 'upgradeplugintheme', array('type' => 'plugin', 'list' => urldecode(implode(',', $slugs)))); if (isset($information['sync']) && !empty($information['sync'])) { MainWP_Sync::syncInformationArray($allWebsites[$websiteId], $information['sync']); } } catch (Exception $e) { } } //Update themes foreach ($themesToUpdateNow as $websiteId => $slugs) { if ($sitesCheckCompleted != null && $sitesCheckCompleted[$websiteId] == false) { continue; } try { MainWP_Utility::fetchUrlAuthed($allWebsites[$websiteId], 'upgradeplugintheme', array('type' => 'theme', 'list' => urldecode(implode(',', $slugs)))); if (isset($information['sync']) && !empty($information['sync'])) { MainWP_Sync::syncInformationArray($allWebsites[$websiteId], $information['sync']); } } catch (Exception $e) { } } //Update core foreach ($coreToUpdateNow as $websiteId) { if ($sitesCheckCompleted != null && $sitesCheckCompleted[$websiteId] == false) { continue; } try { MainWP_Utility::fetchUrlAuthed($allWebsites[$websiteId], 'upgrade'); } catch (Exception $e) { } } do_action('mainwp_cronupdatecheck_action', $pluginsNewUpdate, $pluginsToUpdate, $pluginsToUpdateNow, $themesNewUpdate, $themesToUpdate, $themesToUpdateNow, $coreNewUpdate, $coreToUpdate, $coreToUpdateNow); } }
public static function backup($pTaskId, $pSiteId, $pFileNameUID) { $backupTask = MainWP_DB::Instance()->getBackupTaskById($pTaskId); $subfolder = str_replace('%task%', MainWP_Utility::sanitize($backupTask->name), $backupTask->subfolder); if ($backupTask->archiveFormat == 'site') { $loadFilesBeforeZip = false; $maximumFileDescriptorsOverride = false; $maximumFileDescriptorsAuto = false; $maximumFileDescriptors = 150; $archiveFormat = false; } else { if ($backupTask->archiveFormat == 'global') { $loadFilesBeforeZip = false; $maximumFileDescriptorsOverride = false; $maximumFileDescriptorsAuto = false; $maximumFileDescriptors = 150; $archiveFormat = 'global'; } else { $loadFilesBeforeZip = $backupTask->loadFilesBeforeZip; $maximumFileDescriptorsOverride = $backupTask->archiveFormat == 'zip' && $backupTask->maximumFileDescriptorsOverride == 1; $maximumFileDescriptorsAuto = $backupTask->archiveFormat == 'zip' && $backupTask->maximumFileDescriptorsAuto == 1; $maximumFileDescriptors = $backupTask->maximumFileDescriptors; $archiveFormat = $backupTask->archiveFormat; } } return MainWP_Manage_Sites::backup($pSiteId, $backupTask->type, $subfolder, $backupTask->exclude, $backupTask->excludebackup, $backupTask->excludecache, $backupTask->excludenonwp, $backupTask->excludezip, $backupTask->filename, $pFileNameUID, $archiveFormat, $maximumFileDescriptorsOverride, $maximumFileDescriptorsAuto, $maximumFileDescriptors, $loadFilesBeforeZip); }