ACC SHELL

Path : /srv/www/vhosts/greenbelt/wp-content/plugins/ss-downloads/
File Upload :
Current File : /srv/www/vhosts/greenbelt/wp-content/plugins/ss-downloads/ss-downloads.php

<?php
/*
Plugin Name: SS Downloads
Plugin URI: http://www.strangerstudios.com/wordpress-plugins/ss-downloads/
Description: Email capture for content.
Version: 1.4.3
Author: Jason Coleman
Author URI: http://www.strangerstudios.com
*/

//version
define("SSDOWNLOADS_VERSION", "1.4.3");
add_option("ssd_db_version", "1.0");

//an include with some defines and functions
require_once("includes/setup.php");

//since we're in WordPress, we can better calculate the plugins directory

//setup the DB
require_once(ABSPATH . '/wp-admin/upgrade-functions.php');

global $table_prefix, $wpdb;
$wpdb->hide_errors();
$wpdb->justemails = $table_prefix . 'justemails';
$wpdb->ss_downloads = $table_prefix . 'ss_downloads';
$installed = $wpdb->get_results("SELECT id FROM $wpdb->ss_downloads");

if (mysql_errno() == 1146) 
{
	$sql = "CREATE TABLE " . $wpdb->ss_downloads . " (
			  `id` int(11) NOT NULL auto_increment,
			  `email` varchar(128) NOT NULL,
			  `file` varchar(255) NOT NULL,
			  `ip` varchar(16) NOT NULL,
			  `referrer` varchar(255) NOT NULL,
			  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
			  PRIMARY KEY  (`id`),
			  KEY `email` (`email`),
			  KEY `file` (`file`)
			)";
	$wpdb->query($sql);
	
	$sql = "CREATE TABLE " . $wpdb->justemails . " (
			id mediumint(9) NOT NULL AUTO_INCREMENT,
			email VARCHAR(128) NOT NULL,
			timestamp TIMESTAMP NOT NULL,
			UNIQUE KEY id (id), UNIQUE KEY `email` (`email`)
			);";	
	$wpdb->query($sql);
}

//activation
function ssd_activation()
{
	//default settings
	$require = ssd_getOption("require");
	$delivery = ssd_getOption("delivery");
	$templatemethod = ssd_getOption("templatemethod");
	$ssdshortcode = ssd_getOption("ssdshortcode");
	if(!$require)
	{
		$require = "email";
		ssd_setOption("require", $require);
	}	
	if(!$delivery)
	{
		$delivery = "link";
		ssd_setOption("delivery", $delivery);
	}	
	if(!$templatemethod)
	{
		$templatemethod = "";	//let WP choose
		ssd_setOption("templatemethod", $templatemethod);
	}	
	if(!$ssdshortcode)
	{
		$ssdshortcode = "download";
		ssd_setOption("ssdshortcode", $ssdshortcode);
	}	
}
register_activation_hook(__FILE__, "ssd_activation");

//function to delete db tables
function ssd_init()
{
	global $wpdb, $msg, $msgt;
	
	if(is_admin())
	{
		//resetting the DB?
		$reset = $_REQUEST['ssdreset'];
		if($reset && current_user_can("manage_options"))
		{
			$sqlQuery = "DELETE FROM $wpdb->ss_downloads ";
			if($wpdb->query($sqlQuery) !== false)
			{
				wp_redirect("?page=ssdownloads");
				exit;
			}
			else
			{
				$msg = "There was an error clearing the SS Downloads table.";
				$msgt = "ssd_error";
			}
		}
		elseif($reset)
		{
			die("Only administrators can do this.");
		}
	}
}
add_action("init", "ssd_init");

//shortcode function
function ssd_shortcode_handler($atts, $content=null, $code="") {
	global $current_user, $post;
	
	// $atts    ::= array of attributes
	// $content ::= text within enclosing form of shortcode element
	// $code    ::= the shortcode found, when == callback name
	// examples: [download title="title" file="/wp-content/uploads/filename.pdf"]
		
	extract(shortcode_atts(array(
		'title' => NULL,
		'file' => NULL,		
	), $atts));
	
	//no filename, just remove the shortcode
	if(!$file)
		return "[missing filename in your download code]";
		
	//no title, set it equal to the filename
	if(!$title)
		$title = basename($file);
	
	//settings
	$require = ssd_getOption("require");
	$delivery = ssd_getOption("delivery");
	$templatemethod = ssd_getOption("templatemethod");
		
	if(($require == "email" && $_SESSION['ssd_email_validates']) || ($require == "user" && $current_user->ID))
	{				
		if($delivery == "link")
		{		
			//show download box
			$tpath = str_replace('"', '\"', SSD_DOWNLOAD_URL . "?file=" . urlencode(ssd_swapChars($file)) . "&title=" . urlencode($title));
			if($templatemethod == "cURL")
			{
				$curl_handle=curl_init();
				curl_setopt($curl_handle, CURLOPT_URL, $tpath);
				curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
				$r = curl_exec($curl_handle);
				curl_close($curl_handle);
			}
			elseif($templatemethod == "file_get_contents")
				$r = file_get_contents($tpath);				
			else
			{								
				$r = wp_remote_retrieve_body(wp_remote_get($tpath));
				/*
				$file = ssd_swapChars($file);						
				include(dirname(__FILE__) . "/templates/r_download.php");
				*/
			}
		}
		else
		{
			//email_link and email_attachment			
			if($require == "email")
				$theemail = $_SESSION['ssd_email'];
			else
				$theemail = $current_user->user_email;
			
			$tpath = str_replace('"', '\"', SSD_EMAILSENT_URL . "?email=" . urlencode($theemail) . "&file=" . urlencode(ssd_swapChars($file)) . "&title=" . urlencode($title) . "&postid=" . $post->ID . "&require=" . $require . "&delivery=" . $delivery);
			
			if($templatemethod == "cURL")
			{
				$curl_handle=curl_init();
				curl_setopt($curl_handle, CURLOPT_URL, $tpath);
				curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
				$r = curl_exec($curl_handle);
				curl_close($curl_handle);
			}
			elseif($templatemethod == "file_get_contents")
				$r = file_get_contents($tpath);				
			else
			{		
				$r = wp_remote_retrieve_body(wp_remote_get($tpath));
				/*
				$email = $theemail;
				$file = ssd_swapChars($file);
				$postid = $post->ID;				
				include(dirname(__FILE__) . "/templates/r_emailsent.php");
				*/
			}
		}		
	}
	else
	{				
		if($_SESSION['ssd_email_failed'])
		{
			unset($_SESSION['ssd_email_failed']);
			$ssdmsg = 1;
		}
	
		//show register or email form		
		if($require == "email")
		{			
			$tpath = str_replace('"', '\"', SSD_EMAIL_FORM_URL . "?file=" . urlencode(ssd_swapChars($file)) . "&title=" . urlencode($title) . "&postid=" . $post->ID . "&ssdmsg=" . $ssdmsg);
			if($templatemethod == "cURL")
			{
				$curl_handle=curl_init();
				curl_setopt($curl_handle, CURLOPT_URL, $tpath);
				curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
				$r = curl_exec($curl_handle);
				curl_close($curl_handle);
			}
			elseif($templatemethod == "file_get_contents")
				$r = file_get_contents($tpath);				
			else
			{				
				$r = wp_remote_retrieve_body(wp_remote_get($tpath));
				/*
				$file = ssd_swapChars($file);
				$postid = $post->ID;				
				include(dirname(__FILE__) . "/templates/r_emailform.php");
				*/
			}
		}
		else
		{			
			$tpath = str_replace('"', '\"', SSD_REGISTER_URL . "?login_url=" . urlencode(wp_login_url()) . "&redirect_to=" . urlencode(get_permalink($post->ID)));
			if($templatemethod == "cURL")
			{
				$curl_handle=curl_init();
				curl_setopt($curl_handle, CURLOPT_URL, $tpath);
				curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
				$r = curl_exec($curl_handle);
				curl_close($curl_handle);
			}
			elseif($templatemethod == "file_get_contents")
				$r = file_get_contents($tpath);				
			else
			{
				$r = wp_remote_retrieve_body(wp_remote_get($tpath));
				/*
				$login_url = wp_login_url();
				$redirect_to = get_permalink($post->ID);
				include(dirname(__FILE__) . "/templates/r_register.php");
				*/
			}			
		}		
	}
		
	return $r;
}

$ssdshortcode = ssd_getOption("ssdshortcode");
if(!$ssdshortcode)
{
	$ssdshortcode = "download";
	ssd_setOption("ssdshortcode", $ssdshortcode);
}
add_shortcode($ssdshortcode, 'ssd_shortcode_handler');

//add stylesheet on front end
function ssd_print_styles() {
	//check for a copy of the css in the current theme folder
	$css_file = get_theme_root() . "/" . basename(get_bloginfo("template_url")) . '/ssd-ss-downloads.css';
	if(file_exists($css_file))
	{
		$myStyleUrl = get_bloginfo("template_url") . "/ssd-ss-downloads.css";
		$myStyleFile = $css_file;
	}
	else
	{	
		$myStyleUrl = WP_PLUGIN_URL . '/ss-downloads/css/ss-downloads.css';
		$myStyleFile = WP_PLUGIN_DIR . '/ss-downloads/css/ss-downloads.css';		
	}
	
	//load it up
	if ( file_exists($myStyleFile) ) {
		wp_register_style('ss-downloads', $myStyleUrl);
		wp_enqueue_style( 'ss-downloads');
	}
}
add_action('wp_print_styles', 'ssd_print_styles');

//setup and function for mailing list tab
function ssd_add_pages() 
{	
	add_management_page('SS Downloads', 'SS Downloads', 8, 'ssdownloads', 'ssd_ss_downloads');
}

function ssd_ss_downloads()
{
	global $wpdb;		
	
	$sql = "SELECT je.email, UNIX_TIMESTAMP(je.timestamp) as timestamp FROM $wpdb->justemails je ";		
	$collected_emails = $wpdb->get_col($sql);			
	?>
	<div class="wrap">				
		
		<div id="ssdownloads_notifications">
		</div>
		<style>
			.ssd_message {background-color: #D5E4F7; background-repeat: no-repeat; margin: .5em 0; padding: 6px 6px 6px 6px; color: #345395; font-size: 11px; font-weight: bold; line-height: 1.3em; }

			.ssd_success {background-color: #CFEECA; color: #208A1B; }
			.ssd_error {background-color: #F9D6CB; color: #E36154; }
			.ssd_alert {background-color: #FFF6CC; color: #CF8516; }

			.ssd_message a {color: #345395; }
			.ssd_success a {color: #208A1B; }
			.ssd_error a {color: #E36154; }
			.ssd_alert a {color: #CF8516; }
		</style>
		<script>
			jQuery.get('http://www.strangerstudios.com/ss-downloads-notifications/?v=<?php echo SSDOWNLOADS_VERSION; ?>', function(data) {
			  jQuery('#ssdownloads_notifications').html(data);		 
			});
		</script>
		
		<h2>Collected Email Addresses</h2>				
		<textarea style="width: 500px; height: 100px;"><?php echo implode(", ", $collected_emails); ?></textarea>		
        
		<?php if($msg) { ?>
			<p class="ssd_message <?php echo $msgt; ?>"><?php echo $msg; ?></p>
		<?php } ?>
		
        <h2>
        	File Downloads
            <small>
				(<a target="_blank" href="<?php echo get_bloginfo("url"); ?>/wp-content/plugins/ss-downloads/services/exportdownloads.php">Download Full Report</a>)
				(<a id="clear_ssd_db" href="#" style="color: #CC0000;">Clear Table</a>)
			</small>
			<script>
				jQuery('#clear_ssd_db').click(function(){ 
				   if(window.confirm("This will delete *all download information including email addresses* from the SS Downloads table. Press OK to continue and reset the download database."))
					 window.location='?page=ssdownloads&ssdreset=1';
				});
			</script>
        </h2>
        <table class="widefat page fixed" cellspacing="0">
        	<thead>
            	<tr>
                	<th class="manage-column" scope="col" width="70%">File</th>
                    <th class="manage-column" scope="col"># Downloads</th>
                    <th class="manage-column" scope="col">Last Download</th>
                </tr>
            </thead>
            <tbody>
            	<?php
					$sql = "SELECT file as filename, COUNT(id) as num, MAX(UNIX_TIMESTAMP(timestamp)) as timestamp FROM $wpdb->ss_downloads GROUP BY file ORDER BY timestamp DESC";
					$files = $wpdb->get_results($sql);
					
					if(count($files))
					{
						foreach($files as $file)
						{
						?>
						<tr>
							<td><a target="_blank" href="<?php echo $file->filename;?>"><?php echo $file->filename; ?></a></td>
							<td><?php echo $file->num; ?></td>
							<td><?php echo date("n/d/Y g:i A e", $file->timestamp); ?></td>
						</tr>
						<?php
						}
					}
					else
					{
					?>
                    <tr>
                    	<td colspan="3"><p>No downloads yet.</p></td>
                    </tr>
                    <?php
					}
				?>
            </tbody>
        </table>        		
		
        <h2>Settings</h2>
        <form action="" method="post" enctype="multipart/form-data">   
        <?php
			//get/set settings
			if($_REQUEST['savesettings'])
			{
				ssd_setOption("require");
				ssd_setOption("delivery");
				ssd_setOption("templatemethod");
				ssd_setOption("ssdshortcode");
			}

			$require = ssd_getOption("require");
			$delivery = ssd_getOption("delivery");
			$templatemethod = ssd_getOption("templatemethod");
			$ssdshortcode = ssd_getOption("ssdshortcode");						
		?>
            <table class="form-table">
            <tbody>                
                <tr>
                    <th scope="row" valign="top" colspan="2">
                        <label for="require">Required For Downloads:</label><br />
                        <select name="require">
                        	<option value="email" <?php if($require == "email") { ?>selected="selected"<?php } ?>>Properly Formatted Email Address</option>
                            <option value="user" <?php if($require == "user") { ?>selected="selected"<?php } ?>>User Signup</option>
                        </select>                       
                    </th>
                </tr>                 
                <tr>
                    <th scope="row" valign="top" colspan="2">
                        <label for="delivery">File Delivery Method:</label><br />
                        <select name="delivery">
                        	<option value="link" <?php if($delivery == "link") { ?>selected="selected"<?php } ?>>Show Link to File</option>
                            <option value="email_attachment" <?php if($delivery == "email_attachment") { ?>selected="selected"<?php } ?>>Send File as Email Attachment</option>
                            <option value="email_link" <?php if($delivery == "email_link") { ?>selected="selected"<?php } ?>>Send Link to File by Email</option>
                        </select>                        
                    </th>
                </tr>
                <tr>
                    <th scope="row" valign="top" colspan="2">
                        <label for="templatemethod">Template Method:</label><br />
                        <select name="templatemethod">
                        	<option value="" <?php if($templatemethod == "") { ?>selected="selected"<?php } ?>>Let WordPress Choose</option>
							<option value="file_get_contents" <?php if($templatemethod == "file_get_contents") { ?>selected="selected"<?php } ?>>file_get_contents()</option>
							<option value="cURL" <?php if($templatemethod == "cURL") { ?>selected="selected"<?php } ?>>cURL</option>
                        </select>    						
                        <br /><small>If you don't see the download form and/or see errors, changing this might help.</small>                   
                    </th>
                </tr>
                <tr>
                    <th scope="row" valign="top" colspan="2">
                        <label for="ssdshortcode">Shortcode:</label><br />
                        <input type="text" name="ssdshortcode" value="<?php echo $ssdshortcode; ?>" />    
                        <br /><small>Can change this to resolve plugin conflicts.</small>
                        
                       	<p>
                        	With your current settings, your shortcode to embed a download form would be something like:<br />
                            <strong>[<?php echo $ssdshortcode; ?> file="filename.txt" title="title"]</strong>
                        </p>
                    </th>
                </tr>
            </tbody>
         	</table>
            
            <p class="submit">            
                <input name="savesettings" type="submit" value="Save Settings" /> 		                			
            </p> 
         </form>
	</div>
	<?php
}

add_action('admin_menu', 'ssd_add_pages');
?>

ACC SHELL 2018