public static function render()
    {
        if (!mainwp_current_user_can('dashboard', 'manage_offline_checks')) {
            mainwp_do_not_have_permissions(__('manage offline checks', 'mainwp'));
            return;
        }
        $websites = MainWP_DB::Instance()->query(MainWP_DB::Instance()->getSQLWebsitesForCurrentUser());
        $statusses = array('hourly', '2xday', 'daily', 'weekly');
        do_action('mainwp-pageheader-settings', 'OfflineChecks');
        ?>
        <div class="mainwp_info-box-red">
        <strong>IMPORTANT:</strong> This feature is being retired and replaced by the Free MainWP Advanced Uptime Monitor Extension which provides more advanced monitoring system.<br/>
        <a href="https://mainwp.com/extension/advanced-uptime-monitor/">Get the Free MainWP Advanced Uptime Monitor Extension here!</a>
        </div>
		<div class="mainwp_info-box">
			<strong><?php 
        _e('Notifications will be sent to', 'mainwp');
        ?>
				<i><?php 
        echo MainWP_Utility::getNotificationEmail();
        ?>
</i> (<a href="<?php 
        echo admin_url();
        ?>
admin.php?page=Settings"><?php 
        _e('change', 'mainwp');
        ?>
</a>)</strong>
			<br/><br/><?php 
        _e('MainWP performs two tests when checking your site for up-time.', 'mainwp');
        ?>
			<br/>
			<?php 
        _e('The first test we do is to check that the domain is valid.', 'mainwp');
        ?>
			<br/>
			<?php 
        _e('If this test passes we use a browser emulator to visit the website, this sends out a user agent (just like your web browser from your computer) and waits for a status message.', 'mainwp');
        ?>
			<br/>
			<?php 
        _e('We report any http status code from 200-399 as a success. Any other http status code returned is considered "offline" which is treated as a failure.', 'mainwp');
        ?>
		</div>
		<table class="wp-list-table widefat fixed" id="mainwp_offlinechecks">
			<thead>
			<tr>
				<th scope="col" class="manage-column" style="text-align: left"><?php 
        _e('Site', 'mainwp');
        ?>
</th>
				<th scope="col" id="col_status" class="manage-column"><?php 
        _e('Status', 'mainwp');
        ?>
</th>
				<th scope="col" id="col_disabled" class="manage-column">
					<a href="#" class="mainwp_offline_check_bulk" value="disabled"><?php 
        _e('Disabled', 'mainwp');
        ?>
</a>
				</th>
				<th scope="col" id="col_hourly" class="manage-column">
					<a href="#" class="mainwp_offline_check_bulk" value="hourly"><?php 
        _e('Hourly', 'mainwp');
        ?>
</a>
				</th>
				<th scope="col" id="col_2timesday" class="manage-column">
					<a href="#" class="mainwp_offline_check_bulk" value="2xday"><?php 
        _e('2x Day', 'mainwp');
        ?>
</a>
				</th>
				<th scope="col" id="col_daily" class="manage-column">
					<a href="#" class="mainwp_offline_check_bulk" value="daily"><?php 
        _e('Daily', 'mainwp');
        ?>
</a>
				</th>
				<th scope="col" id="col_weekly" class="manage-column">
					<a href="#" class="mainwp_offline_check_bulk" value="weekly"><?php 
        _e('Weekly', 'mainwp');
        ?>
</a>
				</th>
				<th scope="col" id="col_test" class="manage-column">
					<a href="#" class="button button-primary" id="mainwp_offline_check_check_all"><?php 
        _e('Check All', 'mainwp');
        ?>
</a>
				</th>
			</tr>
			</thead>
			<tbody id="the-list">
			<?php 
        while ($websites && ($website = @MainWP_DB::fetch_object($websites))) {
            ?>
				<tr>
					<input type="hidden" name="offline_check_website_id" id="offline_check_website_id"
						value="<?php 
            echo $website->id;
            ?>
"/>
					<td class="url">
						<a href="admin.php?page=managesites&dashboard=<?php 
            echo $website->id;
            ?>
"><?php 
            echo stripslashes($website->name);
            ?>
</a>
						<span class="offline_check_saved"><?php 
            _e('Saved', 'mainwp');
            ?>
</span></td>
					<td>
                        <i class="fa fa-exclamation-circle fa-2x mwp-red" title="Site Offline" <?php 
            echo $website->offline_check_result == -1 ? '' : 'style="display:none;"';
            ?>
></i>
                        <i class="fa fa-check-circle fa-2x mwp-l-green" title="Site Online" <?php 
            echo $website->offline_check_result == 1 ? '' : 'style="display:none;"';
            ?>
></i>
                   </td>
					<td class="column-rating">
						<input type="radio" id="disabled" class="mainwp_offline_check" value="disabled"
							name="offline_check_<?php 
            echo $website->id;
            ?>
"
							<?php 
            echo !in_array($website->offline_checks, $statusses) ? 'checked="true"' : '';
            ?>
 />
					</td>
					<td><input type="radio" id="hourly" class="mainwp_offline_check" value="hourly"
							name="offline_check_<?php 
            echo $website->id;
            ?>
"
							<?php 
            echo $website->offline_checks == 'hourly' ? 'checked="true"' : '';
            ?>
 /></td>
					<td><input type="radio" id="2xday" class="mainwp_offline_check" value="2xday"
							name="offline_check_<?php 
            echo $website->id;
            ?>
"
							<?php 
            echo $website->offline_checks == '2xday' ? 'checked="true"' : '';
            ?>
 /></td>
					<td><input type="radio" id="daily" class="mainwp_offline_check" value="daily"
							name="offline_check_<?php 
            echo $website->id;
            ?>
"
							<?php 
            echo $website->offline_checks == 'daily' ? 'checked="true"' : '';
            ?>
 /></td>
					<td><input type="radio" id="weekly" class="mainwp_offline_check" value="weekly"
							name="offline_check_<?php 
            echo $website->id;
            ?>
"
							<?php 
            echo $website->offline_checks == 'weekly' ? 'checked="true"' : '';
            ?>
 /></td>
					<td><a href="#" class="mainwp_offline_check_check"><?php 
            _e('Check', 'mainwp');
            ?>
</a></td>
				</tr>
				<?php 
        }
        ?>
			</tbody>
		</table>
		<?php 
        do_action('mainwp-pagefooter-settings', 'OfflineChecks');
    }
Example #2
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);
     }
 }
Example #3
0
    public static function renderSettings()
    {
        $userExtension = MainWP_DB::Instance()->getUserExtension();
        $pluginDir = $userExtension == null || ($userExtension->pluginDir == null || $userExtension->pluginDir == '') ? 'default' : $userExtension->pluginDir;
        $user_email = MainWP_Utility::getNotificationEmail();
        $siteview = $userExtension->site_view;
        $snAutomaticDailyUpdate = get_option('mainwp_automaticDailyUpdate');
        $backup_before_upgrade = get_option('mainwp_backup_before_upgrade');
        $lastAutomaticUpdate = MainWP_DB::Instance()->getWebsitesLastAutomaticSync();
        if ($lastAutomaticUpdate == 0) {
            $nextAutomaticUpdate = 'Any minute';
        } else {
            if (MainWP_DB::Instance()->getWebsitesCountWhereDtsAutomaticSyncSmallerThenStart() > 0 || MainWP_DB::Instance()->getWebsitesCheckUpdatesCount() > 0) {
                $nextAutomaticUpdate = 'Processing your websites.';
            } else {
                $nextAutomaticUpdate = MainWP_Utility::formatTimestamp(MainWP_Utility::getTimestamp(mktime(0, 0, 0, date('n'), date('j') + 1)));
            }
        }
        if ($lastAutomaticUpdate == 0) {
            $lastAutomaticUpdate = 'Never';
        } else {
            $lastAutomaticUpdate = MainWP_Utility::formatTimestamp(MainWP_Utility::getTimestamp($lastAutomaticUpdate));
        }
        ?>
		<div class="postbox" id="mainwp-hide-child-plugin-settings">
			<h3 class="mainwp_box_title">
				<span><i class="fa fa-cog"></i> <?php 
        _e('Network Optimization', 'mainwp');
        ?>
</span></h3>

			<div class="inside">
				<div class="mainwp_info-box-red" style="margin-top: 5px;"><?php 
        _e('<strong>STOP BEFORE TURNING ON!</strong> Hiding the Child Plugin does require the plugin to make changes to your .htaccess file that in rare instances or server configurations could cause problems.', 'mainwp');
        ?>
</div>
				<table class="form-table">
					<tbody>
					<tr>
						<th scope="row"><?php 
        _e('Hide MainWP Child Plugin from Search Engines', 'mainwp');
        ?>
<br/>
							<em style="font-size: 12px;">(<?php 
        _e('does not hide from users', 'mainwp');
        ?>
)</em>
						</th>
						<td>
							<table>
								<tr>
									<td valign="top" style="padding-left: 0; padding-right: 5px; padding-top: 0px; padding-bottom: 0px; vertical-align: top;">
										<div class="mainwp-checkbox">
											<input type="checkbox" value="hidden" name="mainwp_options_footprint_plugin_folder" id="mainwp_options_footprint_plugin_folder_default" <?php 
        echo $pluginDir == 'hidden' ? 'checked="true"' : '';
        ?>
/><label for="mainwp_options_footprint_plugin_folder_default"></label>
										</div>
									</td>
									<td valign="top" style="padding: 0">
										<label for="mainwp_options_footprint_plugin_folder_default">
											<em><?php 
        _e('This will make anyone including Search Engines trying find your Child Plugin encounter a 404 page. Hiding the Child Plugin does require the plugin to make changes to your .htaccess file that in rare instances or server configurations could cause problems.', 'mainwp');
        ?>
</em>
										</label>
									</td>
								</tr>
							</table>
						</td>
					</tr>
					<tr>
						<th scope="row"><?php 
        _e('Optimize for Shared Hosting or Big Networks', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip(__('Updates will be cached for quick loading. A manual refresh from the Dashboard is required to view new plugins, themes, pages or users. Recommended for Networks over 50 sites.', 'mainwp'));
        ?>
</th>
						<td>
							<div class="mainwp-checkbox">
								<input type="checkbox" name="mainwp_optimize"
									   id="mainwp_optimize" <?php 
        echo get_option('mainwp_optimize') == 1 ? 'checked="true"' : '';
        ?>
 />
								<label for="mainwp_optimize"></label>
							</div>
						</td>
					</tr>
					</tbody>
				</table>
			</div>
		</div>

		<div class="postbox" id="mainwp-global-options-settings">
			<h3 class="mainwp_box_title">
				<span><i class="fa fa-cog"></i> <?php 
        _e('Global Options', 'mainwp');
        ?>
</span></h3>

			<div class="inside">
				<table class="form-table">
					<tbody>
					<tr>
						<th scope="row"><?php 
        _e('Notification Email', 'mainwp');
        MainWP_Utility::renderToolTip(__('This address is used to send monitoring alerts.', 'mainwp'));
        ?>
</th>
						<td>
							<input type="text" class="" name="mainwp_options_email" size="35" value="<?php 
        echo $user_email;
        ?>
"/><span class="mainwp-form_hint"><?php 
        _e('This address is used to send monitoring alerts.', 'mainwp');
        ?>
</span>
						</td>
					</tr>
					<tr>
						<th scope="row"><?php 
        _e('Use WP-Cron', 'mainwp');
        MainWP_Utility::renderToolTip(__('When not using WP-Cron you will need to set up a cron job via your hosting.', 'mainwp'), 'http://docs.mainwp.com/disable-wp-cron/');
        ?>
</th>
						<td>
							<div class="mainwp-checkbox">
								<input type="checkbox" name="mainwp_options_wp_cron"
									id="mainwp_options_wp_cron" <?php 
        echo get_option('mainwp_wp_cron') == 1 || get_option('mainwp_wp_cron') === false ? 'checked="true"' : '';
        ?>
/>
								<label for="mainwp_options_wp_cron"></label>
							</div>
						</td>
					</tr>
					<?php 
        if (MainWP_Utility::isAdmin()) {
            ?>
						<tr>
							<th scope="row"><?php 
            _e('Show Basic SEO Stats', 'mainwp');
            MainWP_Utility::renderToolTip(__('This requires your Dashboard to query the Google servers for this information.', 'mainwp'));
            ?>
</th>
							<td>
								<div class="mainwp-checkbox">
									<input type="checkbox" name="mainwp_seo"
										id="mainwp_seo" <?php 
            echo get_option('mainwp_seo') == 1 ? 'checked="true"' : '';
            ?>
/>
									<label for="mainwp_seo"></label>
								</div>
							</td>
						</tr>
					<?php 
        }
        ?>
					</tbody>
				</table>
			</div>
		</div>

		<div class="postbox" id="mainwp-upgrade-options-settings">
			<h3 class="mainwp_box_title">
				<span><i class="fa fa-cog"></i> <?php 
        _e('Upgrade Options', 'mainwp');
        ?>
</span></h3>

			<div class="inside">
				<table class="form-table">
					<tbody>
					<tr>
						<th scope="row"><?php 
        _e('Require Backup Before Upgrade', 'mainwp');
        MainWP_Utility::renderToolTip(__('With this option enabled, when you try to upgrade a plugin, theme or WordPress core, MainWP will check if there is a full backup created for the site(s) you are trying to upgrade in last 7 days. If you have a fresh backup of the site(s) MainWP will proceed to the upgrade process, if not it will ask you to create a full backup.', 'mainwp'));
        ?>
</th>
						<td>
							<div class="mainwp-checkbox">
								<input type="checkbox" name="mainwp_backup_before_upgrade" id="mainwp_backup_before_upgrade" size="35" <?php 
        echo $backup_before_upgrade == 1 ? 'checked="true"' : '';
        ?>
/>
								<label for="mainwp_backup_before_upgrade"></label>
							</div>
						</td>
					</tr>
					<tr>
						<th scope="row"><?php 
        _e('Automatic Daily Update', 'mainwp');
        MainWP_Utility::renderToolTip(__('Choose to have MainWP install updates, or notify you by email of available updates.  Updates apply to WordPress Core files, Plugins and Themes.', 'mainwp'));
        ?>
</th>
						<td>
							<table class="mainwp-nomarkup">
								<tr>
									<td valign="top">
										<span class="mainwp-select-bg">
											<select name="mainwp_automaticDailyUpdate" id="mainwp_automaticDailyUpdate">
												<option value="2" <?php 
        if ($snAutomaticDailyUpdate === false || $snAutomaticDailyUpdate == 2) {
            ?>
selected<?php 
        }
        ?>
>E-mail Notifications of New Updates</option>
												<option value="1" <?php 
        if ($snAutomaticDailyUpdate == 1) {
            ?>
selected<?php 
        }
        ?>
>Install Trusted Updates</option>
												<option value="0" <?php 
        if ($snAutomaticDailyUpdate !== false && $snAutomaticDailyUpdate == 0) {
            ?>
selected<?php 
        }
        ?>
>Off</option>
											</select>
											<label></label>
										</span>
										<br/><em><?php 
        _e('Last run: ', 'mainwp');
        echo $lastAutomaticUpdate;
        ?>
</em>
										<br /><em><?php 
        _e('Next run: ', 'mainwp');
        echo $nextAutomaticUpdate;
        ?>
</em>
									</td>
								</tr>
							</table>
						</td>
					</tr>
					<tr>
						<th scope="row"><?php 
        _e('Abandoned Plugins/Thems Tolerance', 'mainwp');
        MainWP_Utility::renderToolTip(__("In case the plugin or theme author didn't release an update for the set number of days, the plugin/theme will be marked and Possibly Abandoned.", 'mainwp'));
        ?>
</th>
						<td>
							<input type="text" name="mainwp_numberdays_Outdate_Plugin_Theme" class=""
								id="mainwp_numberdays_Outdate_Plugin_Theme" value="<?php 
        echo get_option('mainwp_numberdays_Outdate_Plugin_Theme') === false ? 365 : get_option('mainwp_numberdays_Outdate_Plugin_Theme');
        ?>
"/>
						</td>
					</tr>

					</tbody>
				</table>
			</div>
		</div>

		<div class="postbox" id="mainwp-date-return-options-settings">
			<h3 class="mainwp_box_title"><span><i class="fa fa-cog"></i> <?php 
        _e('Data Return Options', 'mainwp');
        ?>
</span>
			</h3>

			<div class="inside">
				<table class="form-table">
					<tbody>
					<tr>
						<th scope="row"><?php 
        _e('Maximum Number of Posts/Pages', 'mainwp');
        MainWP_Utility::renderToolTip(__('0 for unlimited, CAUTION: a large amount will decrease the speed and might crash the communication.', 'mainwp'));
        ?>
</th>
						<td>
							<input type="text" name="mainwp_maximumPosts" class=""
								id="mainwp_maximumPosts" value="<?php 
        echo get_option('mainwp_maximumPosts') === false ? 50 : get_option('mainwp_maximumPosts');
        ?>
"/>
						</td>
					</tr>
					<tr>
						<th scope="row"><?php 
        _e('Maximum Number of Comments', 'mainwp');
        MainWP_Utility::renderToolTip(__('0 for unlimited, CAUTION: a large amount will decrease the speed and might crash the communication.', 'mainwp'));
        ?>
</th>
						<td>
							<input type="text" name="mainwp_maximumComments" class=""
								id="mainwp_maximumComments" value="<?php 
        echo get_option('mainwp_maximumComments') === false ? 50 : get_option('mainwp_maximumComments');
        ?>
"/>
						</td>
					</tr>
					</tbody>
				</table>
			</div>
		</div>
		<?php 
    }
    public static function renderAllSites(&$website, $updated, $groups, $statusses, $pluginDir)
    {
        if (!mainwp_current_user_can('dashboard', 'edit_sites')) {
            mainwp_do_not_have_permissions(__('edit sites', 'mainwp'));
            return;
        }
        $remote_destinations = apply_filters('mainwp_backups_remote_get_destinations', null, array('website' => $website->id));
        $hasRemoteDestinations = $remote_destinations == null ? $remote_destinations : count($remote_destinations);
        ?>
        <div class="error below-h2" style="display: none;" id="ajax-error-zone"></div>
        <div id="ajax-information-zone" class="updated" style="display: none;"></div>
        <?php 
        if ($updated) {
            ?>
            <div id="mainwp_managesites_edit_message" class="updated"><p><?php 
            _e('Website updated.', 'mainwp');
            ?>
</p></div>
            <?php 
        }
        ?>
        <form method="POST" action="" id="mainwp-edit-single-site-form" enctype="multipart/form-data">
            <div class="postbox">
            <h3 class="mainwp_box_title"><i class="fa fa-cog"></i> <?php 
        _e('General Options', 'mainwp');
        ?>
</h3>
            <div class="inside">
            <table class="form-table">
                <tbody>
                <tr>
                    <th scope="row"><?php 
        _e('Site Name', 'mainwp');
        ?>
</th>
                    <td><input type="text" name="mainwp_managesites_edit_sitename"
                               value="<?php 
        echo stripslashes($website->name);
        ?>
" class="regular-text"/></td>
                </tr>
                <tr>
                    <th scope="row"><?php 
        _e('Site URL', 'mainwp');
        ?>
</th>
                    <td><select id="mainwp_managesites_edit_siteurl_protocol" name="mainwp_managesites_edit_siteurl_protocol"><option <?php 
        echo MainWP_Utility::startsWith($website->url, 'http:') ? 'selected' : '';
        ?>
 value="http">http://</option><option <?php 
        echo MainWP_Utility::startsWith($website->url, 'https:') ? 'selected' : '';
        ?>
 value="https">https://</option></select> <input type="text" id="mainwp_managesites_edit_siteurl" disabled="disabled"
                               value="<?php 
        echo MainWP_Utility::removeHttpPrefix($website->url, true);
        ?>
" class="regular-text" /> <span
                            class="mainwp-form_hint-display"><?php 
        _e('Site URL cannot be changed.', 'mainwp');
        ?>
</span></td>
                </tr>
                <tr>
                    <th scope="row"><?php 
        _e('Administrator Username', 'mainwp');
        ?>
</th>
                    <td><input type="text" name="mainwp_managesites_edit_siteadmin"
                               id="mainwp_managesites_edit_siteadmin"
                               value="<?php 
        echo $website->adminname;
        ?>
"
                               class="regular-text"/></td>
                </tr>
                <tr>
                    <th scope="row"><?php 
        _e('Groups', 'mainwp');
        ?>
</th>
                    <td>
                        <input type="text" name="mainwp_managesites_edit_addgroups"
                               id="mainwp_managesites_edit_addgroups" value=""
                               class="regular-text"/> <span
                            class="mainwp-form_hint"><?php 
        _e('Separate groups by commas (e.g. Group 1, Group 2).', 'mainwp');
        ?>
</span>

                        <div id="selected_groups" style="display: block; width: 25em">
                            <?php 
        if (count($groups) == 0) {
            echo 'No groups added yet.';
        }
        $groupsSite = MainWP_DB::Instance()->getGroupsByWebsiteId($website->id);
        foreach ($groups as $group) {
            echo '<div class="mainwp_selected_groups_item"><input type="checkbox" name="selected_groups[]" value="' . $group->id . '" ' . (isset($groupsSite[$group->id]) && $groupsSite[$group->id] ? 'checked' : '') . ' />&nbsp' . stripslashes($group->name) . '</div>';
        }
        ?>
                        </div>
                        <span class="description"><?php 
        _e('Or assign existing groups.', 'mainwp');
        ?>
</span>
                    </td>
                </tr>
                <tr>
                    <th scope="row"><?php 
        _e('Offline Checks', 'mainwp');
        ?>
</th>
                    <td>
                        <input type="radio" name="offline_checks" id="check_disabled" value="disabled"
                            <?php 
        echo !in_array($website->offline_checks, $statusses) ? 'checked="true"' : '';
        ?>
 /> <?php 
        _e('Disabled', 'mainwp');
        ?>
 &nbsp;&nbsp;&nbsp;
                        <input type="radio" name="offline_checks" id="check_hourly"
                               value="hourly" <?php 
        echo $website->offline_checks == 'hourly' ? 'checked="true"' : '';
        ?>
/> <?php 
        _e('Hourly', 'mainwp');
        ?>
 &nbsp;&nbsp;&nbsp;
                        <input type="radio" name="offline_checks" id="check_2xday"
                               value="2xday" <?php 
        echo $website->offline_checks == '2xday' ? 'checked="true"' : '';
        ?>
/> <?php 
        _e('2x Day', 'mainwp');
        ?>
 &nbsp;&nbsp;&nbsp;
                        <input type="radio" name="offline_checks" id="check_daily"
                               value="daily" <?php 
        echo $website->offline_checks == 'daily' ? 'checked="true"' : '';
        ?>
/> <?php 
        _e('Daily', 'mainwp');
        ?>
 &nbsp;&nbsp;&nbsp;
                        <input type="radio" name="offline_checks" id="check_weekly" value="weekly"
                            <?php 
        echo $website->offline_checks == 'weekly' ? 'checked="true"' : '';
        ?>
/>
                        Weekly  &nbsp;
                    <span class="mainwp-form_hint-display"><?php 
        _e('Notifications are sent to:', 'mainwp');
        ?>
 <?php 
        echo MainWP_Utility::getNotificationEmail();
        ?>
                        (<?php 
        _e('this address can be changed', 'mainwp');
        ?>
 <a
                                href="<?php 
        echo get_admin_url();
        ?>
admin.php?page=Settings"><?php 
        _e('here', 'mainwp');
        ?>
</a>)</span>
                    </td>
                </tr>
                <tr>
                    <th scope="row"><?php 
        _e('Client Plugin Folder Option', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip('Default, files/folders on the child site are viewable.<br />Hidden, when attempting to view files a 404 file will be returned, however a footprint does still exist.<br /><strong>Hiding the Child Plugin does require the plugin to make changes to your .htaccess file that in rare instances or server configurations could cause problems.</strong>');
        ?>
</th>
                    <td>
                        <div class="mainwp-radio" style="float: left;">
                          <input type="radio" value="" name="mainwp_options_footprint_plugin_folder" id="mainwp_options_footprint_plugin_folder_global" <?php 
        echo $pluginDir == '' ? 'checked="true"' : '';
        ?>
"/>
                          <label for="mainwp_options_footprint_plugin_folder_global"></label>
                        </div>Global Setting (<a href="<?php 
        echo admin_url('admin.php?page=Settings#network-footprint');
        ?>
">Change Here</a>)<br/>
                        <div class="mainwp-radio" style="float: left;">
                          <input type="radio" value="default" name="mainwp_options_footprint_plugin_folder" id="mainwp_options_footprint_plugin_folder_default" <?php 
        echo $pluginDir == 'default' ? 'checked="true"' : '';
        ?>
"/>
                          <label for="mainwp_options_footprint_plugin_folder_default"></label>
                        </div>Default<br/>
                        <div class="mainwp-radio" style="float: left;">
                          <input type="radio" value="hidden" name="mainwp_options_footprint_plugin_folder" id="mainwp_options_footprint_plugin_folder_hidden" <?php 
        echo $pluginDir == 'hidden' ? 'checked="true"' : '';
        ?>
/>
                          <label for="mainwp_options_footprint_plugin_folder_hidden"></label>
                        </div>Hidden (<strong>Note: </strong><i>If the heatmap is turned on, the heatmap javascript will still be visible.</i>) <br/>
                    </td>
                </tr>               
                <tr>
                    <th scope="row"><?php 
        _e('Require Backup Before Upgrade', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip(__('Backup only works when enabled in the global settings as well.', 'mainwp'), admin_url('admin.php?page=Settings'));
        ?>
</th>
                    <td>
                         <select id="mainwp_backup_before_upgrade" name="mainwp_backup_before_upgrade">
                             <option <?php 
        echo $website->backup_before_upgrade == 1 ? 'selected' : '';
        ?>
 value="1"><?php 
        _e('Yes', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->backup_before_upgrade == 0 ? 'selected' : '';
        ?>
 value="0"><?php 
        _e('No', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->backup_before_upgrade == 2 ? 'selected' : '';
        ?>
 value="2"><?php 
        _e('Use Global Setting', 'mainwp');
        ?>
</option>
                         </select> <i>(<?php 
        _e('Default', 'mainwp');
        ?>
: <?php 
        _e('Use Global Setting', 'mainwp');
        ?>
)</i>
                         
                    </td>
                </tr>
                 <tr>
                    <th scope="row"><?php 
        _e('Auto Update Core', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip('Auto update only works when enabled in the global settings as well.', admin_url('admin.php?page=Settings'));
        ?>
</th>
                    <td>
                        <div class="mainwp-checkbox">
                        <input type="checkbox" name="mainwp_automaticDailyUpdate"
                               id="mainwp_automaticDailyUpdate" <?php 
        echo $website->automatic_update == 1 ? 'checked="true"' : '';
        ?>
 />
                        <label for="mainwp_automaticDailyUpdate"></label>
                        </div>
                    </td>
                </tr>
                <?php 
        if (mainwp_current_user_can('dashboard', 'ignore_unignore_updates')) {
            ?>
                <tr>
                    <th scope="row"><?php 
            _e('Ignore Core Updates', 'mainwp');
            ?>
 <?php 
            MainWP_Utility::renderToolTip('Set to YES if you want to Ignore Core Updates.');
            ?>
</th>
                    <td>
                        <div class="mainwp-checkbox">
                        <input type="checkbox" name="mainwp_is_ignoreCoreUpdates"
                               id="mainwp_is_ignoreCoreUpdates" <?php 
            echo $website->is_ignoreCoreUpdates == 1 ? 'checked="true"' : '';
            ?>
 />
                        <label for="mainwp_is_ignoreCoreUpdates"></label>
                        </div>
                    </td>
                </tr>  
                <tr>
                    <th scope="row"><?php 
            _e('Ignore All Plugin Updates', 'mainwp');
            ?>
 <?php 
            MainWP_Utility::renderToolTip('Set to YES if you want to Ignore All Plugin Updates.');
            ?>
</th>
                    <td>
                        <div class="mainwp-checkbox">
                        <input type="checkbox" name="mainwp_is_ignorePluginUpdates"
                               id="mainwp_is_ignorePluginUpdates" <?php 
            echo $website->is_ignorePluginUpdates == 1 ? 'checked="true"' : '';
            ?>
 />
                        <label for="mainwp_is_ignorePluginUpdates"></label>
                        </div>
                    </td>
                </tr>  
                <tr>
                    <th scope="row"><?php 
            _e('Ignore All Theme Updates', 'mainwp');
            ?>
 <?php 
            MainWP_Utility::renderToolTip('Set to YES if you want to Ignore All Theme Updates.');
            ?>
</th>
                    <td>
                        <div class="mainwp-checkbox">
                        <input type="checkbox" name="mainwp_is_ignoreThemeUpdates"
                               id="mainwp_is_ignoreThemeUpdates" <?php 
            echo $website->is_ignoreThemeUpdates == 1 ? 'checked="true"' : '';
            ?>
 />
                        <label for="mainwp_is_ignoreThemeUpdates"></label>
                        </div>
                    </td>
                </tr>
                <?php 
        }
        ?>
                <?php 
        do_action('mainwp_extension_sites_edit_tablerow', $website);
        ?>
                </tbody>
            </table>
            </div>
            </div>
            <div class="clear"></div>
            <div class="postbox">
            <h3 class="mainwp_box_title"><span><i class="fa fa-cog"></i> <?php 
        _e('Advanced Options', 'mainwp');
        ?>
</span></h3>
            <div class="inside">
            <table class="form-table" style="width: 100%">
                <?php 
        $disabled_unique = empty($website->uniqueId) ? true : false;
        ?>
                <tr class="form-field form-required">
                    <th scope="row"><?php 
        _e('Child Unique Security ID ', 'mainwp');
        MainWP_Utility::renderToolTip('The Unique Security ID adds additional protection between the Child plugin and your Main Dashboard. The Unique Security ID will need to match when being added to the Main Dashboard. This is additional security and should not be needed in most situations.');
        ?>
</th>
                    <td><input type="text" id="mainwp_managesites_edit_uniqueId" style="width: 350px;" <?php 
        echo $disabled_unique ? 'disabled="disabled"' : '';
        ?>
                             name="mainwp_managesites_edit_uniqueId" value="<?php 
        echo $website->uniqueId;
        ?>
" class=""/><span class="mainwp-form_hint">The Unique Security ID adds additional protection between the Child plugin and your Main Dashboard. The Unique Security ID will need to match when being added to the Main Dashboard. This is additional security and should not be needed in most situations.</span></td>
                </tr>                
                 <tr class="form-field form-required">
                    <th scope="row"><?php 
        _e('Verify Certificate', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip(__('Verify the childs SSL certificate. This should be disabled if you are using out of date or self signed certificates.', 'mainwp'));
        ?>
</th>
                    <td>
                        <select id="mainwp_managesites_edit_verifycertificate" name="mainwp_managesites_edit_verifycertificate">
                             <option <?php 
        echo $website->verify_certificate == 1 ? 'selected' : '';
        ?>
 value="1"><?php 
        _e('Yes', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->verify_certificate == 0 ? 'selected' : '';
        ?>
 value="0"><?php 
        _e('No', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->verify_certificate == 2 ? 'selected' : '';
        ?>
 value="2"><?php 
        _e('Use Global Setting', 'mainwp');
        ?>
</option>
                         </select> <i>(Default: Yes)</i>
                    </td>
                </tr>
                <tr class="form-field form-required">
                   <th scope="row"><?php 
        _e('SSL Version', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip(__('Prefered SSL Version to connect to your site.', 'mainwp'));
        ?>
</th>
                    <td>
                        <select id="mainwp_managesites_edit_ssl_version" name="mainwp_managesites_edit_ssl_version">
                             <option <?php 
        echo $website->ssl_version == 'auto' ? 'selected' : '';
        ?>
 value="auto"><?php 
        _e('Auto detect', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->ssl_version == '1.x' ? 'selected' : '';
        ?>
 value="1.x"><?php 
        _e('TLS v1.x', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->ssl_version == '2' ? 'selected' : '';
        ?>
 value="2"><?php 
        _e('SSL v2', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->ssl_version == '3' ? 'selected' : '';
        ?>
 value="3"><?php 
        _e('SSL v3', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->ssl_version == '1.0' ? 'selected' : '';
        ?>
 value="1.0"><?php 
        _e('TLS v1.0', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->ssl_version == '1.1' ? 'selected' : '';
        ?>
 value="1.1"><?php 
        _e('TLS v1.1', 'mainwp');
        ?>
</option>
                             <option <?php 
        echo $website->ssl_version == '1.2' ? 'selected' : '';
        ?>
 value="1.2"><?php 
        _e('TLS v1.2', 'mainwp');
        ?>
</option>
                         </select> <em>(<?php 
        _e('Default: Auto detect', 'mainwp');
        ?>
)</em>
                    </td>
                </tr>

                <!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
                <input style="display:none" type="text" name="fakeusernameremembered"/>
                <input style="display:none" type="password" name="fakepasswordremembered"/>

                <tr>
                    <td colspan="2"><div class="mainwp_info-box"><?php 
        _e('If your Child Site is protected with HTTP basic authentication, please set the username and password for authentication here.', 'mainwp');
        ?>
</div></td>
                </tr>

                <tr class="form-field form-required">
                     <th scope="row"><?php 
        _e('HTTP username ', 'mainwp');
        ?>
</th>
                     <td><input type="text" id="mainwp_managesites_edit_http_user" style="width: 350px;" name="mainwp_managesites_edit_http_user" value="<?php 
        echo empty($website->http_user) ? '' : $website->http_user;
        ?>
" class=""/></td>
                </tr>
                <tr class="form-field form-required">
                     <th scope="row"><?php 
        _e('HTTP password ', 'mainwp');
        ?>
</th>
                     <td><input type="password" id="mainwp_managesites_edit_http_pass" style="width: 350px;" name="mainwp_managesites_edit_http_pass" value="<?php 
        echo empty($website->http_pass) ? '' : $website->http_pass;
        ?>
" class=""/></td>
                </tr>
            </table>
            </div>
            </div>
            
            <div class="clear"></div>
            <div class="postbox">
            <h3 class="mainwp_box_title"><span><i class="fa fa-cog"></i> <?php 
        _e('Backup Settings', 'mainwp');
        ?>
</span></h3>
            <div class="inside">
            <table class="form-table" style="width: 100%">
                <?php 
        $globalArchiveFormat = get_option('mainwp_archiveFormat');
        if ($globalArchiveFormat == false) {
            $globalArchiveFormat = 'tar.gz';
        }
        if ($globalArchiveFormat == 'zip') {
            $globalArchiveFormatText = 'Zip';
        } else {
            if ($globalArchiveFormat == 'tar') {
                $globalArchiveFormatText = 'Tar';
            } else {
                if ($globalArchiveFormat == 'tar.gz') {
                    $globalArchiveFormatText = 'Tar GZip';
                } else {
                    if ($globalArchiveFormat == 'tar.bz2') {
                        $globalArchiveFormatText = 'Tar BZip2';
                    }
                }
            }
        }
        $backupSettings = MainWP_DB::Instance()->getWebsiteBackupSettings($website->id);
        $archiveFormat = $backupSettings->archiveFormat;
        $useGlobal = $archiveFormat == 'global';
        ?>
                <tr>
                    <th scope="row"><?php 
        _e('Archive Format', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip(__('', 'mainwp'));
        ?>
</th>
                    <td>
                        <table class="mainwp-nomarkup">
                            <tr>
                                <td valign="top">
                                    <span class="mainwp-select-bg"><select name="mainwp_archiveFormat" id="mainwp_archiveFormat">
                                        <option value="global" <?php 
        if ($useGlobal) {
            ?>
selected<?php 
        }
        ?>
>Global setting (<?php 
        echo $globalArchiveFormatText;
        ?>
)</option>
                                        <option value="zip" <?php 
        if ($archiveFormat == 'zip') {
            ?>
selected<?php 
        }
        ?>
>Zip</option>
                                        <option value="tar" <?php 
        if ($archiveFormat == 'tar') {
            ?>
selected<?php 
        }
        ?>
>Tar</option>
                                        <option value="tar.gz" <?php 
        if ($archiveFormat == 'tar.gz') {
            ?>
selected<?php 
        }
        ?>
>Tar GZip</option>
                                        <option value="tar.bz2" <?php 
        if ($archiveFormat == 'tar.bz2') {
            ?>
selected<?php 
        }
        ?>
>Tar BZip2</option>
                                    </select><label></label></span>
                                </td>
                                <td>
                                    <i>
                                    <span id="info_global" class="archive_info" <?php 
        if (!$useGlobal) {
            ?>
style="display: none;"<?php 
        }
        ?>
><?php 
        if ($globalArchiveFormat == 'zip') {
            ?>
Uses PHP native Zip-library, when missing, the PCLZip library included in Wordpress will be used. (Good compression, fast with native zip-library)<?php 
        } elseif ($globalArchiveFormat == 'tar') {
            ?>
Uses PHP native Zip-library, when missing, the PCLZip library included in Wordpress will be used. (Good compression, fast with native zip-library)<?php 
        } elseif ($globalArchiveFormat == 'tar.gz') {
            ?>
Creates a GZipped tar-archive. (Good compression, fast, low memory usage)<?php 
        } elseif ($globalArchiveFormat == 'tar.bz2') {
            ?>
Creates a BZipped tar-archive. (Best compression, fast, low memory usage)<?php 
        }
        ?>
</span>
                                    <span id="info_zip" class="archive_info" <?php 
        if ($archiveFormat != 'zip') {
            ?>
style="display: none;"<?php 
        }
        ?>
>Uses PHP native Zip-library, when missing, the PCLZip library included in Wordpress will be used. (Good compression, fast with native zip-library)</span>
                                    <span id="info_tar" class="archive_info" <?php 
        if ($archiveFormat != 'tar') {
            ?>
style="display: none;"<?php 
        }
        ?>
>Creates an uncompressed tar-archive. (No compression, fast, low memory usage)</span>
                                    <span id="info_tar.gz" class="archive_info" <?php 
        if ($archiveFormat != 'tar.gz') {
            ?>
style="display: none;"<?php 
        }
        ?>
>Creates a GZipped tar-archive. (Good compression, fast, low memory usage)</span>
                                    <span id="info_tar.bz2" class="archive_info" <?php 
        if ($archiveFormat != 'tar.bz2') {
            ?>
style="display: none;"<?php 
        }
        ?>
>Creates a BZipped tar-archive. (Best compression, fast, low memory usage)</span>
                                    </i>
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>

                <?php 
        $maximumFileDescriptorsOverride = $website->maximumFileDescriptorsOverride == 1;
        $maximumFileDescriptorsAuto = $website->maximumFileDescriptorsAuto == 1;
        $maximumFileDescriptors = $website->maximumFileDescriptors;
        ?>
                <tr class="archive_method archive_zip" <?php 
        if ($archiveFormat != 'zip') {
            ?>
style="display: none;"<?php 
        }
        ?>
>
                    <th scope="row"><?php 
        _e('Maximum File Descriptors on Child', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip('The maximum number of open file descriptors on the child hosting.', 'http://docs.mainwp.com/maximum-number-of-file-descriptors/');
        ?>
</th>
                    <td>
                        <div class="mainwp-radio" style="float: left;">
                          <input type="radio" value="" name="mainwp_options_maximumFileDescriptorsOverride" id="mainwp_options_maximumFileDescriptorsOverride_global" <?php 
        echo !$maximumFileDescriptorsOverride ? 'checked="true"' : '';
        ?>
"/>
                          <label for="mainwp_options_maximumFileDescriptorsOverride_global"></label>
                        </div>Global Setting (<a href="<?php 
        echo admin_url('admin.php?page=Settings');
        ?>
">Change Here</a>)<br/>
                        <div class="mainwp-radio" style="float: left;">
                          <input type="radio" value="override" name="mainwp_options_maximumFileDescriptorsOverride" id="mainwp_options_maximumFileDescriptorsOverride_override" <?php 
        echo $maximumFileDescriptorsOverride ? 'checked="true"' : '';
        ?>
"/>
                          <label for="mainwp_options_maximumFileDescriptorsOverride_override"></label>
                        </div>Override<br/><br />

                        <div style="float: left">Auto Detect:&nbsp;</div><div class="mainwp-checkbox"><input type="checkbox" id="mainwp_maximumFileDescriptorsAuto" name="mainwp_maximumFileDescriptorsAuto" <?php 
        echo $maximumFileDescriptorsAuto ? 'checked="checked"' : '';
        ?>
 /> <label for="mainwp_maximumFileDescriptorsAuto"></label></div><div style="float: left"><i>(<?php 
        _e('Enter a fallback value because not all hosts support this function.', 'mainwp');
        ?>
)</i></div><div style="clear:both"></div>
                        <input type="text" name="mainwp_options_maximumFileDescriptors" id="mainwp_options_maximumFileDescriptors"
                               value="<?php 
        echo $maximumFileDescriptors;
        ?>
"/><span class="mainwp-form_hint"><?php 
        _e('The maximum number of open file descriptors on the child hosting.  0 sets unlimited.', 'mainwp');
        ?>
</span>
                    </td>
                </tr>
                <tr class="archive_method archive_zip" <?php 
        if ($archiveFormat != 'zip') {
            ?>
style="display: none;"<?php 
        }
        ?>
>
                    <th scope="row"><?php 
        _e('Load Files in Memory Before Zipping', 'mainwp');
        ?>
 <?php 
        MainWP_Utility::renderToolTip('This causes the files to be opened and closed immediately, using less simultaneous I/O operations on the disk. For huge sites with a lot of files we advise to disable this, memory usage will drop but we will use more file handlers when backing up.', 'http://docs.mainwp.com/load-files-memory/');
        ?>
</th>
                    <td>
                        <input type="radio" name="mainwp_options_loadFilesBeforeZip" id="mainwp_options_loadFilesBeforeZip_global" value="1" <?php 
        if ($website->loadFilesBeforeZip == false || $website->loadFilesBeforeZip == 1) {
            ?>
checked="true"<?php 
        }
        ?>
/> Global setting (<a href="<?php 
        echo admin_url('admin.php?page=Settings');
        ?>
">Change Here</a>)<br />
                        <input type="radio" name="mainwp_options_loadFilesBeforeZip" id="mainwp_options_loadFilesBeforeZip_yes" value="2" <?php 
        if ($website->loadFilesBeforeZip == 2) {
            ?>
checked="true"<?php 
        }
        ?>
/> Yes<br />
                        <input type="radio" name="mainwp_options_loadFilesBeforeZip" id="mainwp_options_loadFilesBeforeZip_no" value="0" <?php 
        if ($website->loadFilesBeforeZip == 0) {
            ?>
checked="true"<?php 
        }
        ?>
/> No<br />
                    </td>
                </tr>
                <?php 
        if ($hasRemoteDestinations !== null) {
            do_action('mainwp_backups_remote_settings', array('website' => $website->id, 'hide' => 'no'));
        }
        ?>
            </table>
            </div>
            </div>
            
            <?php 
        $plugin_upgrades = json_decode($website->plugin_upgrades, true);
        if (!is_array($plugin_upgrades)) {
            $plugin_upgrades = array();
        }
        $userExtension = MainWP_DB::Instance()->getUserExtension();
        $globalIgnoredPluginConflicts = json_decode($userExtension->ignored_pluginConflicts, true);
        ?>
            <?php 
        do_action('mainwp-extension-sites-edit', $website);
        ?>
<p class="submit"><input type="submit" name="submit" id="submit" class="button-primary button button-hero"
                                     value="<?php 
        _e('Update Site', 'mainwp');
        ?>
"/></p>
        </form>       
        <?php 
    }
    public function mwp_setup_notification()
    {
        $important_notification = get_option('mwp_setup_importantNotification', false);
        $user_email = MainWP_Utility::getNotificationEmail();
        ?>
		<h1><?php 
        _e('Notification', 'mainwp');
        ?>
</h1>
		<form method="post">
			<table class="form-table">
				<tr>
					<th scope="row"><?php 
        _e('Do you want to receive important email notifications from your dashboard?', 'mainwp');
        ?>
</th>
					<td>
						<div class="mainwp-checkbox">
							<input type="checkbox" name="mwp_setup_options_important_notification"
							       id="mwp_setup_options_important_notification" <?php 
        echo $important_notification == 1 ? 'checked="true"' : '';
        ?>
 />
							<label for="mwp_setup_options_important_notification"></label>
						</div>
						<br /><br />
						<em>
							<?php 
        _e('These are emails from your MainWP Dashboard notifying you of available updates and other maintenance related messages. You can change this later in your MainWP Settings tab.', 'mainwp');
        ?>
							<br />
							<?php 
        _e('These are NOT emails from the MainWP team and this does NOT sign you up for any mailing lists.', 'mainwp');
        ?>
						</em>
					</td>
				</tr>
				<tr>
					<th scope="row"><?php 
        _e('Enter Your Email Address', 'mainwp');
        ?>
</th>
					<td>
						<input type="email"  class="" name="mwp_setup_options_email" size="35" value="<?php 
        echo esc_attr($user_email);
        ?>
"/>
					</td>
				</tr>
			</table>
			<p class="mwp-setup-actions step">
				<input type="submit" class="button-primary button button-large" value="<?php 
        esc_attr_e('Continue', 'mainwp');
        ?>
" name="save_step" />
				<a href="<?php 
        echo esc_url($this->get_next_step_link());
        ?>
" class="button button-large"><?php 
        _e('Skip this step', 'mainwp');
        ?>
</a>
				<a href="<?php 
        echo esc_url($this->get_back_step_link());
        ?>
" class="button button-large"><?php 
        _e('Back', 'mainwp');
        ?>
</a>
				<?php 
        wp_nonce_field('mwp-setup');
        ?>
			</p>
		</form>
		<?php 
    }