public static function checkBackups() { //if (get_option('mainwp_backup_before_upgrade') != 1) return true; if (!is_array($_POST['sites'])) { return true; } $global_backup_before_upgrade = get_option('mainwp_backup_before_upgrade'); $output = array(); foreach ($_POST['sites'] as $siteId) { $website = MainWPDB::Instance()->getWebsiteById($siteId); if ($website->backup_before_upgrade == 0 || $website->backup_before_upgrade == 2 && $global_backup_before_upgrade == 0) { continue; } $dir = MainWPUtility::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 (MainWPUtility::isArchive($file) && !MainWPUtility::isSQLArchive($file) && filemtime($theFile) > $lastBackup) { $lastBackup = filemtime($theFile); } } } closedir($dh); } $output['sites'][$siteId] = $lastBackup < time() - 7 * 24 * 60 * 60 ? false : true; } return $output; }
function mainwp_cronupdatescheck_action() { MainWPLogger::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); MainWPUtility::update_option('mainwp_cron_last_updatescheck', time()); $mainwpAutomaticDailyUpdate = get_option('mainwp_automaticDailyUpdate'); $mainwpLastAutomaticUpdate = get_option('mainwp_updatescheck_last'); if ($mainwpLastAutomaticUpdate == date('d/m/Y')) { MainWPLogger::Instance()->debug('CRON :: updates check :: already updated today'); return; } $websites = MainWPDB::Instance()->getWebsitesCheckUpdates(4); MainWPLogger::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; } MainWPDB::Instance()->updateWebsiteSyncValues($website->id, $websiteValues); } if (count($websites) == 0) { $busyCounter = MainWPDB::Instance()->getWebsitesCountWhereDtsAutomaticSyncSmallerThenStart(); if ($busyCounter == 0) { MainWPLogger::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 || count($ignoredPluginsNewUpdate) != 0 || count($ignoredPluginsToUpdate) != 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 || count($ignoredThemesNewUpdate) != 0 || count($ignoredThemesToUpdate) != 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>'; } MainWPUtility::update_option('mainwp_automaticUpdate_backupChecks', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_update_core_new', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_update_plugins_new', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_update_themes_new', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_update_core', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_update_plugins', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_update_themes', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_core', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_plugins', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_themes', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_core_new', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_plugins_new', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_themes_new', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_pluginconflicts', ''); MainWPUtility::update_option('mainwp_updatescheck_mail_themeconflicts', ''); MainWPUtility::update_option('mainwp_updatescheck_last', date('d/m/Y')); if (!$sendMail) { MainWPLogger::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'); MainWPLogger::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', MainWPUtility::formatEmail($email, $mail), array('From: "' . get_option('admin_email') . '" <' . get_option('admin_email') . '>', 'content-type: text/html')); } } } } else { $userExtension = MainWPDB::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 (!MainWPSync::syncSite($website, false, true)) { $websiteValues = array('dtsAutomaticSync' => time()); MainWPDB::Instance()->updateWebsiteSyncValues($website->id, $websiteValues); continue; } $website = MainWPDB::Instance()->getWebsiteById($website->id); /** Check core upgrades **/ $websiteLastCoreUpgrades = json_decode(MainWPDB::Instance()->getWebsiteOption($website, 'last_wp_upgrades'), true); $websiteCoreUpgrades = json_decode(MainWPDB::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) . '">' . $website->name . '</a> - ' . $websiteCoreUpgrades['current'] . ' to ' . $websiteCoreUpgrades['new']; $infoNewTxt = '*NEW* <a href="' . admin_url('admin.php?page=managesites&dashboard=' . $website->id) . '">' . $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(MainWPDB::Instance()->getWebsiteOption($website, 'last_plugin_upgrades'), true); $websitePlugins = json_decode($website->plugin_upgrades, true); /** Check themes **/ $websiteLastThemes = json_decode(MainWPDB::Instance()->getWebsiteOption($website, 'last_theme_upgrades'), true); $websiteThemes = json_decode($website->theme_upgrades, true); $decodedPremiumUpgrades = json_decode(MainWPDB::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) . '">' . $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) . '">' . $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) . '">' . $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) . '">' . $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) . '">' . $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) . '">' . $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 = MainWPUtility::getNotificationEmail($user); MainWPUtility::update_option('mainwp_updatescheck_mail_email', $email); MainWPDB::Instance()->updateWebsiteSyncValues($website->id, array('dtsAutomaticSync' => time())); MainWPDB::Instance()->updateWebsiteOption($website, 'last_wp_upgrades', json_encode($websiteCoreUpgrades)); MainWPDB::Instance()->updateWebsiteOption($website, 'last_plugin_upgrades', $website->plugin_upgrades); MainWPDB::Instance()->updateWebsiteOption($website, 'last_theme_upgrades', $website->theme_upgrades); } if (count($coreNewUpdate) != 0) { $coreNewUpdateSaved = get_option('mainwp_updatescheck_mail_update_core_new'); MainWPUtility::update_option('mainwp_updatescheck_mail_update_core_new', MainWPUtility::array_merge($coreNewUpdateSaved, $coreNewUpdate)); } if (count($pluginsNewUpdate) != 0) { $pluginsNewUpdateSaved = get_option('mainwp_updatescheck_mail_update_plugins_new'); MainWPUtility::update_option('mainwp_updatescheck_mail_update_plugins_new', MainWPUtility::array_merge($pluginsNewUpdateSaved, $pluginsNewUpdate)); } if (count($themesNewUpdate) != 0) { $themesNewUpdateSaved = get_option('mainwp_updatescheck_mail_update_themes_new'); MainWPUtility::update_option('mainwp_updatescheck_mail_update_themes_new', MainWPUtility::array_merge($themesNewUpdateSaved, $themesNewUpdate)); } if (count($coreToUpdate) != 0) { $coreToUpdateSaved = get_option('mainwp_updatescheck_mail_update_core'); MainWPUtility::update_option('mainwp_updatescheck_mail_update_core', MainWPUtility::array_merge($coreToUpdateSaved, $coreToUpdate)); } if (count($pluginsToUpdate) != 0) { $pluginsToUpdateSaved = get_option('mainwp_updatescheck_mail_update_plugins'); MainWPUtility::update_option('mainwp_updatescheck_mail_update_plugins', MainWPUtility::array_merge($pluginsToUpdateSaved, $pluginsToUpdate)); } if (count($themesToUpdate) != 0) { $themesToUpdateSaved = get_option('mainwp_updatescheck_mail_update_themes'); MainWPUtility::update_option('mainwp_updatescheck_mail_update_themes', MainWPUtility::array_merge($themesToUpdateSaved, $themesToUpdate)); } if (count($ignoredCoreToUpdate) != 0) { $ignoredCoreToUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_core'); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_core', MainWPUtility::array_merge($ignoredCoreToUpdateSaved, $ignoredCoreToUpdate)); } if (count($ignoredCoreNewUpdate) != 0) { $ignoredCoreNewUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_core_new'); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_core_new', MainWPUtility::array_merge($ignoredCoreNewUpdateSaved, $ignoredCoreNewUpdate)); } if (count($ignoredPluginsToUpdate) != 0) { $ignoredPluginsToUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_plugins'); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_plugins', MainWPUtility::array_merge($ignoredPluginsToUpdateSaved, $ignoredPluginsToUpdate)); } if (count($ignoredPluginsNewUpdate) != 0) { $ignoredPluginsNewUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_plugins_new'); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_plugins_new', MainWPUtility::array_merge($ignoredPluginsNewUpdateSaved, $ignoredPluginsNewUpdate)); } if (count($ignoredThemesToUpdate) != 0) { $ignoredThemesToUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_themes'); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_themes', MainWPUtility::array_merge($ignoredThemesToUpdateSaved, $ignoredThemesToUpdate)); } if (count($ignoredThemesNewUpdate) != 0) { $ignoredThemesNewUpdateSaved = get_option('mainwp_updatescheck_mail_ignore_themes_new'); MainWPUtility::update_option('mainwp_updatescheck_mail_ignore_themes_new', MainWPUtility::array_merge($ignoredThemesNewUpdateSaved, $ignoredThemesNewUpdate)); } if ($pluginConflicts != '') { $pluginConflictsSaved = get_option('mainwp_updatescheck_mail_pluginconflicts'); if ($pluginConflictsSaved == false) { $pluginConflictsSaved = ''; } MainWPUtility::update_option('mainwp_updatescheck_mail_pluginconflicts', $pluginConflictsSaved . $pluginConflicts); } if ($themeConflicts != '') { $themeConflictsSaved = get_option('mainwp_updatescheck_mail_themeconflicts'); if ($themeConflictsSaved == false) { $themeConflictsSaved = ''; } MainWPUtility::update_option('mainwp_updatescheck_mail_themeconflicts', $themeConflictsSaved . $themeConflicts); } if (count($coreToUpdate) == 0 && count($pluginsToUpdate) == 0 && count($themesToUpdate) == 0 && count($ignoredCoreToUpdate) == 0 && count($ignoredCoreNewUpdate) == 0 && count($ignoredPluginsToUpdate) == 0 && count($ignoredPluginsNewUpdate) == 0 && count($ignoredThemesToUpdate) == 0 && count($ignoredThemesNewUpdate) == 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 = MainWPUtility::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 (MainWPUtility::isArchive($file) && !MainWPUtility::isSQLArchive($file) && filemtime($theFile) > $lastBackup) { $lastBackup = filemtime($theFile); } } } closedir($dh); } $backupRequired = $lastBackup < time() - 7 * 24 * 60 * 60 ? true : false; if (!$backupRequired) { $sitesCheckCompleted[$siteId] = true; MainWPUtility::update_option('mainwp_automaticUpdate_backupChecks', $sitesCheckCompleted); continue; } try { $result = MainWPManageSites::backup($siteId, 'full', '', '', 0, 0, 0, 0); MainWPManageSites::backupDownloadFile($siteId, 'full', $result['url'], $result['local']); $sitesCheckCompleted[$siteId] = true; MainWPUtility::update_option('mainwp_automaticUpdate_backupChecks', $sitesCheckCompleted); } catch (Exception $e) { $sitesCheckCompleted[$siteId] = false; MainWPUtility::update_option('mainwp_automaticUpdate_backupChecks', $sitesCheckCompleted); } } } else { $sitesCheckCompleted = null; } //Update plugins foreach ($pluginsToUpdateNow as $websiteId => $slugs) { if ($sitesCheckCompleted != null && $sitesCheckCompleted[$websiteId] == false) { continue; } try { MainWPUtility::fetchUrlAuthed($allWebsites[$websiteId], 'upgradeplugintheme', array('type' => 'plugin', 'list' => urldecode(implode(',', $slugs)))); if (isset($information['sync']) && !empty($information['sync'])) { MainWPSync::syncInformationArray($allWebsites[$websiteId], $information['sync']); } } catch (Exception $e) { } } //Update themes foreach ($themesToUpdateNow as $websiteId => $slugs) { if ($sitesCheckCompleted != null && $sitesCheckCompleted[$websiteId] == false) { continue; } try { MainWPUtility::fetchUrlAuthed($allWebsites[$websiteId], 'upgradeplugintheme', array('type' => 'theme', 'list' => urldecode(implode(',', $slugs)))); if (isset($information['sync']) && !empty($information['sync'])) { MainWPSync::syncInformationArray($allWebsites[$websiteId], $information['sync']); } } catch (Exception $e) { } } //Update core foreach ($coreToUpdateNow as $websiteId) { if ($sitesCheckCompleted != null && $sitesCheckCompleted[$websiteId] == false) { continue; } try { MainWPUtility::fetchUrlAuthed($allWebsites[$websiteId], 'upgrade'); } catch (Exception $e) { } } do_action('mainwp_cronupdatecheck_action', $pluginsNewUpdate, $pluginsToUpdate, $pluginsToUpdateNow, $themesNewUpdate, $themesToUpdate, $themesToUpdateNow, $coreNewUpdate, $coreToUpdate, $coreToUpdateNow); } }
public static function cleanUpload() { $path = MainWPUtility::getMainWPSpecificDir('bulk'); if (file_exists($path) && ($dh = opendir($path))) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { @unlink($path . $file); } } closedir($dh); } die(json_encode(array('ok' => true))); }
public static function showBackups(&$website) { $dir = MainWPUtility::getMainWPSpecificDir($website->id); if (!file_exists($dir . 'index.php')) { @touch($dir . 'index.php'); } $dbBackups = array(); $fullBackups = array(); if (file_exists($dir) && ($dh = opendir($dir))) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { $theFile = $dir . $file; if (MainWPUtility::isSQLFile($file)) { $dbBackups[filemtime($theFile) . $file] = $theFile; } else { if (MainWPUtility::isArchive($file)) { $fullBackups[filemtime($theFile) . $file] = $theFile; } } } } closedir($dh); } krsort($dbBackups); krsort($fullBackups); MainWPManageSitesView::showBackups($website, $fullBackups, $dbBackups); }
function column_backup($item) { $backupnow_lnk = apply_filters('mainwp-managesites-getbackuplink', "", $item['id']); if (!empty($backupnow_lnk)) { return $backupnow_lnk; } $dir = MainWPUtility::getMainWPSpecificDir($item['id']); $lastbackup = 0; if (file_exists($dir) && ($dh = opendir($dir))) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { $theFile = $dir . $file; if (MainWPUtility::isArchive($file) && !MainWPUtility::isSQLArchive($file)) { if (filemtime($theFile) > $lastbackup) { $lastbackup = filemtime($theFile); } } } } closedir($dh); } $output = ''; if ($lastbackup > 0) { $output = MainWPUtility::formatTimestamp(MainWPUtility::getTimestamp($lastbackup)) . '<br />'; } else { $output = '<span class="mainwp-red">Never</span><br/>'; } if (mainwp_current_user_can("dashboard", "execute_backups")) { $output .= sprintf('<a href="admin.php?page=managesites&backupid=%s">' . '<i class="fa fa-hdd-o"></i> ' . __('Backup Now', 'mainwp') . '</a>', $item['id']); } return $output; }
public static function getDownloadUrl($what, $filename) { $specificDir = MainWPUtility::getMainWPSpecificDir($what); $mwpDir = MainWPUtility::getMainWPDir(); $mwpDir = $mwpDir[0]; $fullFile = $specificDir . $filename; return admin_url('?sig=' . md5(filesize($fullFile)) . '&mwpdl=' . rawurlencode(str_replace($mwpDir, "", $fullFile))); }