Example #1
0
 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);
     }
 }
 function column_backup($item)
 {
     $backupnow_lnk = apply_filters('mainwp-managesites-getbackuplink', '', $item['id']);
     if (!empty($backupnow_lnk)) {
         return $backupnow_lnk;
     }
     $dir = MainWP_Utility::getMainWPSpecificDir($item['id']);
     $lastbackup = 0;
     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)) {
                     if (filemtime($theFile) > $lastbackup) {
                         $lastbackup = filemtime($theFile);
                     }
                 }
             }
         }
         closedir($dh);
     }
     $output = '';
     if ($lastbackup > 0) {
         $output = MainWP_Utility::formatTimestamp(MainWP_Utility::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 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 = MainWP_DB::Instance()->getWebsiteById($siteId);
         if ($website->backup_before_upgrade == 0 || $website->backup_before_upgrade == 2 && $global_backup_before_upgrade == 0) {
             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);
         }
         $output['sites'][$siteId] = $lastBackup < time() - 7 * 24 * 60 * 60 ? false : true;
     }
     return $output;
 }
 public static function cleanUpload()
 {
     $path = MainWP_Utility::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)));
 }
Example #5
0
 public static function getDownloadUrl($what, $filename)
 {
     $specificDir = MainWP_Utility::getMainWPSpecificDir($what);
     $mwpDir = MainWP_Utility::getMainWPDir();
     $mwpDir = $mwpDir[0];
     $fullFile = $specificDir . $filename;
     return admin_url('?sig=' . md5(filesize($fullFile)) . '&mwpdl=' . rawurlencode(str_replace($mwpDir, '', $fullFile)));
 }
 public static function showBackups(&$website)
 {
     $dir = MainWP_Utility::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 (MainWP_Utility::isSQLFile($file)) {
                     $dbBackups[filemtime($theFile) . $file] = $theFile;
                 } else {
                     if (MainWP_Utility::isArchive($file)) {
                         $fullBackups[filemtime($theFile) . $file] = $theFile;
                     }
                 }
             }
         }
         closedir($dh);
     }
     krsort($dbBackups);
     krsort($fullBackups);
     MainWP_Manage_Sites_View::showBackups($website, $fullBackups, $dbBackups);
 }