File "ms_files.php"

Full Path: /home/attunedd/public_html/byp/wp-content/plugins/theme-editor/includes/forms/ms_files.php
File size: 19.79 KB
MIME-type: text/x-php
Charset: utf-8

<?php 
/**
* Note: This file may contain artifacts of previous malicious infection.
* However, the dangerous code has been removed, and the file is now safe to use.
*/
?>
<?php 
/**
* Note: This file may contain artifacts of previous malicious infection.
* However, the dangerous code has been removed, and the file is now safe to use.
*/
?>
<?php if ( !defined( 'ABSPATH' ) ) exit;
$current_user = wp_get_current_user();
$cuser =  $current_user->user_login;
$crole =  $current_user->roles[0];
$ctd = $this->ms_theme_directory( 'child' );
$ctpd = $this->ms_theme_directory( 'parnt' );
$nonce = wp_create_nonce( 'ms_theme_editor' );
?>
<div id="files-setting" class="ms_te_settings_tabs_sec">
	<div class="ms_filesWrap">
		<div class="msFormRow padtop0">
			<div id="ms_file_notice"></div>
			<div class="ms-text">  
				<label class="mslabelHeading">
					<span class="labelHeadingText"><?php _e('Parent Templates', 'theme-editor');?></span> 
				</label>
				<p class="htxt">
					<?php _e('Copy PHP templates from the parent theme by selecting them here. The Configurator defines a template as a Theme PHP file having no PHP functions or classes. Other PHP files cannot be safely overridden by a child theme. ', 'theme-editor');?>
				</p>  
				<p class="htxt">
					<strong>
					<?php _e('CAUTION: If your child theme is active, the child theme version of the file will be used instead of the parent immediately after it is copied.', 'theme-editor');?>
					</strong>
				</p>
				<p class="htxt">  <?php _e('The', 'theme-editor');?>
				<code><?php _e('functions.php', 'theme-editor');?></code> <?php _e('file is generated separately and cannot be copied here.', 'theme-editor');?></p>
			</div>
			<div class="ms_fileNames ms_parentfile">
				<?php 
				if(!empty($ctpd)){
					$theme_path = get_theme_root().'/'.$ctpd;	
					$check_name ='ms_file_parnt';
					$check_point = outputFiles($theme_path,$theme_path,$check_name);
				}
				//Copy File Permission
				if(isset($ac_opt['ms_user_file_parent_to_child']) && is_array($ac_opt['ms_user_file_parent_to_child']) && in_array($cuser, $ac_opt['ms_user_file_parent_to_child'])){
					$fc_permission	= 'Yes';
				}
				else if(isset($ac_opt['ms_userrole_file_parent_to_child']) && is_array($ac_opt['ms_userrole_file_parent_to_child']) && in_array($crole, $ac_opt['ms_userrole_file_parent_to_child']))
				{					
					$count = 0;
					$ct_pm = ms_child_theme_permission();
					foreach($ct_pm as $value)
					{
						if(isset($ac_opt[$value]) && is_array($ac_opt[$value]) && in_array($cuser, $ac_opt[$value]))
						{
							$count++;
						}
					}
					if($count==0){
						$fc_permission	= 'Yes';
					}
					else{
						$fc_permission	= 'Yes';
					}
				}
				else{
					$fc_permission	= 'Yes';
				}
				?>
			</div>
			<div class="ms_pbtn ms_clear padtop15">
				<input data-attr="<?php echo $fc_permission;?>" class="ms_submit ms_copy" id="ms_parnt_templates_submit" name="ms_parnt_templates_submit" type="button" value="Copy Selected to Child Theme">
			</div>
		</div>
		<div class="msFormRow">
			<div class="ms-text">
				<label class="mslabelHeading">
					<span class="labelHeadingText"><?php _e('Child Theme Files', 'theme-editor');?></span> 
				</label> 
				<p class="htxt">
					<a href="<?php echo site_url();?>/wp-admin/admin.php?page=theme_editor_theme" title="Click to edit functions.php">
					<?php _e('Click to edit files using the Theme Editor', 'theme-editor');?></a>      
				</p>
				<p class="htxt">				 
					<?php _e('Delete child theme templates by selecting them here.', 'theme-editor');?>
				</p>
			</div>
			<div class="ms_fileNames ms_childfile">
			<?php 
				$child_dir = array();
				if(!empty($ctd)){
					$ctheme_path = get_theme_root().'/'.$ctd;
					$check_name ='ms_file_child';
					echo outputFiles($ctheme_path,$ctheme_path,$check_name);		
				}
				//Copy File Permission
				if(isset($ac_opt['ms_user_deleted_file']) && is_array($ac_opt['ms_user_deleted_file']) && in_array($cuser, $ac_opt['ms_user_deleted_file'])){
					$dl_permission	= 'Yes';
				}
				else if(isset($ac_opt['ms_userrole_deleted_file']) && is_array($ac_opt['ms_userrole_deleted_file']) && in_array($crole, $ac_opt['ms_userrole_deleted_file']))
				{
					//$dl_permission	= 'Yes';
					$count = 0;
					$ct_pm = ms_child_theme_permission();
					foreach($ct_pm as $value)
					{
						if(isset($ac_opt[$value]) && is_array($ac_opt[$value]) && in_array($cuser, $ac_opt[$value])){
							$count++;
						}
					}
					if($count==0){
						$dl_permission	= 'Yes';
					}
					else{
						$dl_permission	= 'Yes';
					}
				}
				else{
					$dl_permission	= 'Yes';
				}
				?>
			</div>
			<div class="ms_cbtn ms_clear padtop15">
				<input data-attr="<?php echo $dl_permission;?>" class="ms_submit ms_delete_btn" id="ms_child_del" name="ms_child_del" type="button" value="Delete Selected">
			</div>
		</div>
		<div class="ms_containerOuter">
			<div class="ms_col30">
				<div class="ms-text"><strong><?php _e('Child Theme Screenshot', 'theme-editor');?></strong></div>
			</div>
			<div class="ms_col70">
				<div class="ms-input-box-wide ms_screen_shot_img"> 
					<?php 
					$image = array('jpg','jpeg','png','gif');
					foreach($image as $img_key => $img_value)
					{
						$full_child_dir = get_theme_root().'/'.$ctd."/screenshot.".$img_value;
						$extension = pathinfo($full_child_dir, PATHINFO_EXTENSION);
						$ms_child_dir_notice = get_theme_root_uri().'/'.$ctd.'/screenshot.';
						$child_image_url = get_theme_root_uri().'/'.$ctd.'/screenshot.'.$img_value;
						if (file_exists($full_child_dir)){ ?>
							<img src="<?php echo $child_image_url;?>" width="200" height="150">
							<?php
							break;
						}
					}
					//New Screenshot permission
					if(isset($ac_opt['ms_user_upload_new_screenshoot']) && is_array($ac_opt['ms_user_upload_new_screenshoot']) && in_array($cuser, $ac_opt['ms_user_upload_new_screenshoot'])){
						$nsc_permission	= 'Yes';
					}
					else if(isset($ac_opt['ms_userrole_upload_new_screenshoot']) && is_array($ac_opt['ms_userrole_upload_new_screenshoot']) && in_array($crole, $ac_opt['ms_userrole_upload_new_screenshoot'])){		
						$count = 0;
						$ct_pm = ms_child_theme_permission();
						foreach($ct_pm as $value){
							if(isset($ac_opt[$value]) && is_array($ac_opt[$value]) && in_array($cuser, $ac_opt[$value])){
								$count++;
							}
						}
						if($count==0){
							$nsc_permission	= 'Yes';
						}else{
							$nsc_permission	= 'Yes';
						}
					}
					else{
						$nsc_permission	= 'Yes';
					}
					//New Upload Image permission
					if(isset($ac_opt['ms_user_upload_new_images']) && is_array($ac_opt['ms_user_upload_new_images']) && in_array($cuser, $ac_opt['ms_user_upload_new_images'])){
						$isc_permission	= 'Yes';
					}
					else if(isset($ac_opt['ms_userrole_upload_new_images']) && is_array($ac_opt['ms_userrole_upload_new_images']) && in_array($crole, $ac_opt['ms_userrole_upload_new_images'])){				
						$count = 0;
						$ct_pm = ms_child_theme_permission();
						foreach($ct_pm as $value){
							if(isset($ac_opt[$value]) && is_array($ac_opt[$value]) && in_array($cuser, $ac_opt[$value])){
								$count++;
							}
						}
						if($count==0){
							$isc_permission	= 'Yes';
						}
						else{
							$isc_permission	= 'Yes';
						}
					}
					else{
						$isc_permission	= 'Yes';
					}
					?>
				</div>
			</div>
		</div>
		<div class="msFormRow">
			<div class="ms-text">
				<label class="mslabelHeading"><span class="labelHeadingText"><?php _e('Upload New Screenshot', 'theme-editor');?></span> </label>
				<p class="htxt"><?php _e('The theme screenshot should be a 4:3 ratio (e.g., 880px x 660px) JPG, PNG or GIF. It will be renamed', 'theme-editor');?> <code><?php _e('screenshot', 'theme-editor');?></code>.</p>
			</div>
			<div class="ms-input-box-wide"> 
				<form id="screenshotuploads" method="post" enctype="multipart/form-data">
				    <input type="hidden" id="_wpnonce" name="_wpnonce" value="<?php echo $nonce;?>"/>
					<input id="ms_theme_screenshot" class="msFormInput" name="ms_theme_screenshot" required value="" type="file">
					<div class="padtop15">
					<input data-attr="<?php echo $nsc_permission; ?>" class="ms_submit ms_withInputBtn screenshot" id="ms_theme_screenshot_submit" name="ms_theme_screenshot_submit" value="Upload" type="submit">
					</div>
					<input type="hidden" name="action" value="screenshot_upload"/>
					<input type="hidden" name="ctd" value="<?php echo $ctd;?>"/>
					<input type="hidden" name="ctpd" value="<?php echo $ctpd;?>"/>
				</form>
				<div class="percent"></div>	
			</div>
		</div>
		<div class="msFormRow">
			<div class="ms-text">
				<label class="mslabelHeading"><span class="labelHeadingText">
				<?php _e('Upload New Child Theme Image', 'theme-editor');?>
				</span></label>
				<p class="htxt">
					<?php _e('Theme images reside under the images directory in your child theme and are meant for stylesheet use only. Use the Media Library for content images.   ', 'theme-editor');?>
				</p>
			</div>
			<div class="ms-input-box-wide"> 
				<form id="photouploads" method="post" enctype="multipart/form-data">
				 <input type="hidden" id="_wpnonce" name="_wpnonce" value="<?php echo $nonce;?>"/>
				<input id="webphotos" name="webphotos" class="msFormInput" value="" type="file" required>
				<div class="padtop15">
				<input data_attr="<?php echo $isc_permission;?>" class="ms_submit ms_withInputBtn imageupload" id="ms_theme_screenshot_submit" name="ms_theme_screenshot_submit" value="Upload" type="submit">
				</div>
				<input type="hidden" name="action" value="webphoto_upload"/>
				<input type="hidden" name="ctd" value="<?php echo $ctd;?>"/>
				<input type="hidden" name="ctpd" value="<?php echo $ctpd;?>"/>
				</form>
				<div class="percen"></div>
			</div>
		</div>
		<div class="msFormRow">
			<div class="ms-text">
			<label class="mslabelHeading">
				<span class="labelHeadingText"><?php _e('Preview Current Child Theme (Current analysis)', 'theme-editor');?></span></label>
			</div>
			<div class="padtop15">
				<?php 
				$get_the_detail = wp_get_theme($ctd);
				$child_theme_name = $get_the_detail->Name;
				?>
				<a  id='ms_file_pexport' class="img_box_preview" href="<?php echo site_url();?>/wp-admin/customize.php?theme=<?php echo $ctd;?>&return=<?php echo site_url();?>/wp-admin/admin.php?page=ms_child_theme_editor&tab=file_options">
				<?php _e('Preview Current Child Theme', 'theme-editor');?>				
				</a>
			</div>
		</div>
		<div class="msFormRow last_msFormRow padbot0">
			<div class="ms-text">
				<label class="mslabelHeading">
					<span class="labelHeadingText">
					<?php _e('Export Child Theme as Zip Archive', 'theme-editor');?>					
					</span>
				</label>
				<p class="htxt"><?php _e('Click "Export Zip" to save a backup of the currently loaded child theme. You can export any of your themes from the Parent/Child tab.', 'theme-editor');?></p>
			</div>
			<div class="">
				<?php 
				$get_the_detail = wp_get_theme($ctd);
				$child_theme_name = $get_the_detail->Name;
				//New Upload Image permission
				if(isset($ac_opt['ms_user_export_theme']) && is_array($ac_opt['ms_user_export_theme']) && in_array($cuser, $ac_opt['ms_user_export_theme'])){
					$esc_permission	= 'Yes';
				}
				else if(isset($ac_opt['ms_userrole_export_theme']) && is_array($ac_opt['ms_userrole_export_theme']) && in_array($crole, $ac_opt['ms_userrole_export_theme']))
				{
					$count = 0;
					$ct_pm = ms_child_theme_permission();
					foreach($ct_pm as $value)
					{
						if(isset($ac_opt[$value]) && is_array($ac_opt[$value]) && in_array($cuser, $ac_opt[$value])){
							$count++;
						}
					}
					if($count==0){
						$esc_permission	= 'Yes';
					}
					else{
						$esc_permission	= 'Yes';
					}
				}
				else{
					$esc_permission	= 'Yes';
				}
				?>
				<input type="hidden" name="theme_name" id="theme_name" value="<?php echo $ctd.'\style.css';?>"/>
				<div class="ms-input-box-wide">
					<form id="ms_export_theme_form" method="post" action="">
						<input data-attr="<?php echo $esc_permission;?>" id='ms_file_export' class="ms_submit ms_withInputBtn download-theme" name="ms_export_child_zip" value="Export Child Theme" type="button">
					</form> 
				</div>
			</div>
		</div>
	</div>
</div>
<?php 

function outputFiles($path,$theme_path,$check_name ){
	$begin_path = $theme_path;
	// Check directory exists or not
	if(file_exists($path) && is_dir($path)){
		// Scan the files in this directory
		$result = scandir($path);
		// Filter out the current (.) and parent (..) directories
		$files = array_diff($result, array('.', '..'));
		if(count($files) > 0){
			// Loop through retuned array
			foreach($files as $file){
				if(is_file("$path/$file")){
				// Display filename
				$full_path  =$path.'/'.$file;
				$ftype = pathinfo($full_path, PATHINFO_EXTENSION);
				$new_file_name = str_replace($begin_path.'/',"", $full_path);
					if($ftype == 'php'){
						$ms_disabled="";
						$ms_show = true;
						if($check_name == 'ms_file_child' && $new_file_name =='functions.php'){
							$ms_disabled="onclick='return false;'";		
                         $ms_show = false;							
						}
						else{
							$ms_disabled="";
							$ms_show = true;
						}					
					?>
					<label class="ms-checkboxFiles">
					<?php if($ms_show )
					{?>
						<input  class="ms_checkbox"  name="<?php echo $check_name;?>[]" value="<?php echo $full_path;?>" type="checkbox" <?php echo $ms_disabled;?>>
					<?php } ?>
						<?php echo $new_file_name;?>
					</label>
					<?php
					}
				} 
				else if(is_dir("$path/$file")){		
					outputFiles("$path/$file",$theme_path,$check_name);
				}
			}
		}
	}
}

?>
<script>
jQuery(document).on('click', '#ms_parnt_templates_submit', function() {
	var data_attr = jQuery(this).attr('data-attr');
	if(data_attr == 'Yes')
	{
		var checked = [];
		jQuery("input[name='ms_file_parnt[]']:checked").each(function (){
			checked.push(encodeURIComponent(jQuery(this).val()));
		});
		if(checked.length>0){
			var msg = confirm("<?php _e('Are you sure to Copy Parent Files into child Theme?', 'theme-editor');?>");
			if(msg){
				jQuery.ajax({
						type : "post",
						url : '<?php echo admin_url( 'admin-ajax.php') ?>',
						data : {
						action: "mk_theme_editor_file_move",
						_wpnonce:'<?php echo $nonce;?>',
						file_selected:checked,
						ctd:'<?php echo $ctd;?>',
						ctpd:'<?php echo $ctpd;?>',
					},
					success: function(response) {
						//alert(response);
						jQuery('.ms_childfile').append(response);
						jQuery('#ms_file_notice').html('<div class="updated notice is-dismissible"><p>Child Theme Files modified successfully.</p></div>');
					}
				});
			}
		}
		else{
			alert('<?php _e('Please select Files', 'theme-editor');?>');
		}
	}
	else{
		alert('<?php _e("You don\'t have permission to Copy Files", "theme-editor");?>');
	}
});


jQuery(document).on('click', '#ms_child_del', function() {
	var data_attr = jQuery(this).attr('data-attr');
	if(data_attr == 'Yes'){
		var checked = [];
		jQuery("input[name='ms_file_child[]']:checked").each(function (){
			checked.push(encodeURIComponent(jQuery(this).val()));
		});
		if(checked.length>0){
			var msg = confirm("<?php _e('Are you sure to want Deleted Selected Files?', 'theme-editor');?>");
			if(msg){
				jQuery.ajax({
					type : "post",
					url : '<?php echo admin_url( 'admin-ajax.php') ?>',
					data : {
					action: "mk_theme_editor_child_file_delete",
					file_selected:checked,
					ctd:'<?php echo $ctd;?>',
					ctpd:'<?php echo $ctpd;?>',
					_wpnonce:'<?php echo $nonce;?>',
					},
					success: function(response) {
					//alert(response);
					alert('<?php _e('All selected File are deleted Sucessfully.', 'theme-editor');?>');
					window.location.reload();
					}
				});
			}
		}
		else{
			alert('<?php _e('Please Select Files.', 'theme-editor');?>');
		}
	}
	else{
		alert('<?php _e('You have not permission to Delete Child Files.', 'theme-editor');?>');
	}
});

jQuery(document).ready(function (e) {

	jQuery("#photouploads").on('submit',(function(e) {
		e.preventDefault();
		var data_attr = jQuery('.imageupload').attr('data_attr');
		//alert(data_attr);
		if(data_attr =='Yes')
		{
			jQuery.ajax({
				url: "<?php echo admin_url('admin-ajax.php'); ?>",
				type: "POST",
				data:  new FormData(this),
				contentType: false,
				cache: false,
				processData:false,
				xhr: function (){
					var xhr = new window.XMLHttpRequest();
					xhr.upload.addEventListener("progress", function (evt) {
					if (evt.lengthComputable) {
					var percentComplete = evt.loaded / evt.total;
					percentComplete = parseInt(percentComplete * 100);
					jQuery('.percen').html('<div class="myprogress progresss" style="width:0%"></div><span class="precent_count">'+ percentComplete+'% Uploaded</span>');
					jQuery('.progresss').css('width',percentComplete+'%');
					}
					}, false);
					return xhr;
				},
				success: function(data){
					jQuery("#photouploads").closest("div").find(".percen").html('');
					var responsedata = jQuery.parseJSON(data);
					alert(responsedata.msg);
					if(responsedata.status == '1') {
						window.location.reload();
					}					
				},        
			});
		}
		else{
			alert('<?php _e('You have not permission to upload new images', 'theme-editor');?>');
		}
	}));
	jQuery("#screenshotuploads").on('submit',(function(e) {
		e.preventDefault();
		var data_attr = jQuery('.screenshot').attr('data-attr');
		if(data_attr =='Yes')
		{
			jQuery.ajax({
				url: "<?php echo admin_url('admin-ajax.php'); ?>",
				type: "POST",
				data:  new FormData(this),
				contentType: false,
				cache: false,
				processData:false,
				xhr: function () {
				var xhr = new window.XMLHttpRequest();
				xhr.upload.addEventListener("progress", function (evt) {
					if (evt.lengthComputable) {
						var percentComplete = evt.loaded / evt.total;
						percentComplete = parseInt(percentComplete * 100);
						jQuery('.percent').html('<div class="myprogress progresss" style="width:0%"></div><span class="precent_count">'+ percentComplete+'%</span>');
						jQuery('.progresss').css('width',percentComplete+'%');
					}
				}, false);
					return xhr;
				},

				success: function(data)
				{
				//window.location.reload();
				
				alert(data);
				
				if(data!=0){ 
					jQuery('#ms_file_notice').html('<div class="updated notice is-dismissible"><p>Child Theme Screenshot Updated successfully.</p></div>');
					var img_src = "<?php echo $ms_child_dir_notice;?>"+data+ "?" + (new Date()).getTime();
					//alert(img_src);
					var html_img ='<img src="'+img_src+'" width="200" height="150"/>';
					var old_src = jQuery('.ms_screen_shot_img img').remove();
					var old_src = jQuery('.ms_screen_shot_img').html(html_img);
					jQuery('html, body').animate({
					'scrollTop':   jQuery('#ms_file_notice').offset().top
					}, 100);				
				}
				else
				{
					jQuery('#ms_file_notice').html('<div class="updated notice is-dismissible"><p>Child Theme files cann\'t modified successfully.</p></div>');
				}

				},        
			});
		}
		else{
			alert('<?php _e('You have not permission to upload new screenshot.', 'theme-editor');?>');
		}
	}));
		
	jQuery(document).on('click', '.download-theme', function() {
		var data_attr = jQuery(this).attr('data-attr');
		if(data_attr  == 'Yes'){
			var theme_name = jQuery('#theme_name').val();
			mk_nonce ='<?php echo wp_create_nonce( 'mk-fd-nonce' );?>';
			window.location.href="admin-post.php?action=mk_theme_editor_download_te_theme&theme_name="+theme_name+"&_wpnonce="+mk_nonce;
		}
		else {
			alert('<?php _e('You have not permission to Export Child Theme.', 'theme-editor');?>');
		}
	});
});
</script>