Forum Replies Created

Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter Chris Zenzel

    (@czenzel)

    Under pwebonedrive.php I had to change all instances of were the establishment of admin_url was being used (that actually was using HTTPS causing images not to load because of my self-signed certificate) and had to add three or four lines in different sections to make the files and images visible.

    Sorry I couldn’t do a “diff” / compare here. Please let me know if this information is helpful for HTTPS admins.

    Sorry about the code edits and posting the full code file back up here. I just wanted to make sure all the edits were visible.

    <?php
    /**
     * Plugin Name: Perfect OneDrive Gallery & File
     * Plugin URI: http://www.perfect-web.co/wordpress/microsoft-onedrive-gallery-file
     * Description: Share easily your photos and files stored on Microsoft OneDrive. You can display a gallery with your photos or a link to a file for download.
     * Version: 1.2.5.1-dev-ssl (Custom for File to prevent Auto-Update)
     * Text Domain: pwebonedrive
     * Author: Piotr Moćko
     * Author URI: http://www.perfect-web.co
     * License: GPLv3
     */
    
    // No direct access
    function_exists('add_action') or die;
    
    if (!defined('PWEB_ONEDRIVE_DEBUG')) define('PWEB_ONEDRIVE_DEBUG', WP_DEBUG);
    
    function pweb_onedrive_init()
    {
    	load_plugin_textdomain( 'pwebonedrive', false, basename(dirname(__FILE__)).'/languages' );
    
    	wp_register_style('pweb_onedrive_file_style', plugins_url('css/onedrivefile.css', __FILE__));
    	wp_register_style('pweb_onedrive_gallery_style', plugins_url('css/onedrivegallery.css', __FILE__));
    
    	wp_register_style('pweb_onedrive_prettyphoto_style', plugins_url('css/prettyPhoto.css', __FILE__));
    	wp_register_script('pweb_onedrive_prettyphoto_script', plugins_url('js/jquery.prettyPhoto'.(PWEB_ONEDRIVE_DEBUG ? '' : '.min').'.js', __FILE__), array('jquery'));
    }
    add_action('init', 'pweb_onedrive_init');
    
    require_once dirname( __FILE__ ) . '/liveconnect.php';
    
    if ( is_admin() ) {
    	require_once dirname( __FILE__ ) . '/admin.php';
    	require_once dirname( __FILE__ ) . '/admin-buttons.php';
    }
    
    function pweb_onedrive_gallery_assets()
    {
    	wp_enqueue_style('pweb_onedrive_gallery_style');
    
    	// Load prettyPhoto
    	wp_enqueue_style('pweb_onedrive_prettyphoto_style');
    	wp_enqueue_script('pweb_onedrive_prettyphoto_script');
    
    	// Init prettyPhoto
    	add_action('wp_footer', 'pweb_onedrive_prettyphoto_init');
    }
    
    function pweb_onedrive_prettyphoto_init()
    {
    	if (!defined('PRETTYPHOTOINIT'))
    	{
    		define('PRETTYPHOTOINIT', 1);
    
    		$options = array('deeplinking:false,social_tools:false');
    		//if ($this->params->get('gallery_theme')) $options[] = 'theme:"'.$this->params->get('gallery_theme').'"';
    		//if (!$this->params->get('gallery_overlay', 1)) $options[] = 'overlay_gallery:false';
    
    		echo '<script type="text/javascript">'
    			.'var oneDrivePrettyPhotoConfig={'.implode(',', $options).'};'
    			.'jQuery(document).ready(function($){'
    				.'$("a[rel^=\'onedrivegallery\']").prettyPhoto(oneDrivePrettyPhotoConfig)'
    			.'});'
    			.'</script>';
    	}
    }
    
    function pweb_onedrive_file_assets()
    {
    	wp_enqueue_style('pweb_onedrive_file_style');
    }
    
    add_shortcode('onedrivegallery', 'pweb_onedrive_galery_shortcode');
    function pweb_onedrive_galery_shortcode($atts, $content = null, $tag)
    {
    	extract( shortcode_atts( array (
    		'id' 		=> '',
    		'thumbnail' => 'thumbnail', //TODO gallery_thumnail_size
    		'full' 		=> 'normal', //TODO gallery_image_size
    		'class' 	=> ''
    	), $atts ) );
    
    	$output = '';
    
    	if (!$id) return $output;
    
    	pweb_onedrive_gallery_assets();
    
    	$images = pweb_onedrive_get_gallery($id);
    	if (is_object($images) AND isset($images->data))
    	{
    		if (count($images->data))
    		{
    			// Display gallery
    			if (!in_array($full, array('normal', 'full')))
    				$full = 'normal'; //TODO load option gallery_image_size
    
    			// Select thumbnail image size
    			switch ($thumbnail) {
    				case 'album':
    					$index = 1;
    					break;
    				case 'thumbnail':
    				default:
    					$index = 2;
    			}
    
    			if ($class)
    				$class = ' '.$class;
    
    			$galleryId = md5($id);
    
    			// Output gallery
    			$output = '<span id="onedrivegallery-'.$galleryId.'" class="onedrivegallery'.$class.(PWEB_ONEDRIVE_DEBUG ? ' debug' : '').'">';
    			foreach ($images->data as $image)
    			{
    				// File extension
    				$dot = strrpos($image->name, '.') + 1;
    				$image->ext = substr($image->name, $dot);
    
    				// Image url
    				$url = admin_url('admin-ajax.php?action=pweb_onedrive_display_photo&aid='.$images->access_id.'&code='.base64_encode($image->id.'/picture?type='.$full).'#'.$image->ext);
    				$src = admin_url('admin-ajax.php?action=pweb_onedrive_display_photo&aid='.$images->access_id.'&code='.base64_encode($image->id.'/picture?type='.$thumbnail));
    
    				// Image URL Fix
    				if (!is_ssl()) { $url = set_url_scheme($url, 'http'); $src = set_url_scheme($src, 'http'); }
    
    				// Output image
    				$output .=
    					 '<a href="'.$url.'"'
    					 .' rel="onedrivegallery['.$galleryId.']"'.($image->description ? ' title="'.htmlentities($image->description, ENT_QUOTES, 'UTF-8').'"' : '').'>'
    					.'<img src="'.$src.'"'
    					.' width="'.$image->images[$index]->width.'" height="'.$image->images[$index]->height.'"'
    					.' alt="'.($image->description ? htmlentities($image->description, ENT_QUOTES, 'UTF-8') : '').'" />'
    					.'</a>';
    			}
    			$output .= '</span>';
    		}
    		else
    		{
    			// Output message about no images
    			$output = '<span class="onedrivegallery-error">'.__('There are no images in this gallery!', 'pwebonedrive').'</span>';
    		}
    	}
    	else
    	{
    		// Output message about error
    		$output = '<span class="onedrivegallery-error">'.__('Can not load images!', 'pwebonedrive').(is_string($images) ? ' '.$images : '').'</span>';
    	}
    
    	return $output;
    }
    
    add_shortcode('onedrivefile', 'pweb_onedrive_file_shortcode');
    function pweb_onedrive_file_shortcode($atts, $content = null, $tag)
    {
    	extract( shortcode_atts( array (
    		'id' 		=> '',
    		'image' 	=> '', //TODO load option
    		'width' 	=> '',
    		'height' 	=> '',
    		'icon' 		=> '1', //TODO load option
    		'size' 		=> '1', //TODO load option
    		'class' 	=> ''
    	), $atts ) );
    
    	$output = '';
    
    	if (!$id) return $output;
    
    	pweb_onedrive_file_assets();
    
    	$file = pweb_onedrive_get_file($id);
    	if (is_object($file))
    	{
    		if ($class)
    			$class = ' '.$class;
    
    		// Display photo
    		if ($file->type == 'photo' AND $image != 'download')
    		{
    			if (!in_array($image, array('normal', 'album', 'thumbnail', 'full')))
    				$image = 'normal'; //TODO load option
    
    			if ($content)
    			{
    				$file->description = $content;
    			}
    
    			// Image url
    			$src = admin_url('admin-ajax.php?action=pweb_onedrive_display_photo&aid='.$file->access_id.'&code='.base64_encode($file->id.'/picture?type='.$image));
    
    			// Image URL Fix
    			if (!is_ssl()) $src = set_url_scheme($src, 'http');
    
    			// Output image
    			$output = '<img src="'.$src.'" class="onedrivefile onedrivefile-photo'. $class .(PWEB_ONEDRIVE_DEBUG ? ' debug' : '').'"';
    			if ($width OR $height) {
    				if ($width) $output .= ' width="'.$width.'"';
    				if ($height) $output .= ' height="'.$height.'"';
    			}
    			else {
    				// Select image size
    				switch ($image) {
    					case 'thumbnail':
    						$index = 2;
    						break;
    					case 'normal':
    						$index = 0;
    						break;
    					case 'full':
    						$index = 3;
    						break;
    					case 'album':
    					default:
    						$index = 1;
    				}
    				$output .= ' width="'.$file->images[$index]->width.'" height="'.$file->images[$index]->height.'"';
    			}
    			$output .= ' alt="'.htmlentities($file->description, ENT_QUOTES, 'UTF-8').'" />';
    		}
    		// Display file link
    		else
    		{
    			if ($content)
    			{
    				$file->name = $content;
    			}
    
    			// File url
    			$url = admin_url('admin-ajax.php?action=pweb_onedrive_download_file&aid='.$file->access_id.'&code='.base64_encode($file->id.'/content?download=true'));
    
    			// File URL Fix
    			if (!is_ssl()) $url = set_url_scheme($url, 'http');
    
    			// Output file
    			$output =
    				 '<a href="'.$url.'" target="_blank" rel="nofollow" class="onedrivefile onedrivefile-'.$file->ext . $class .(PWEB_ONEDRIVE_DEBUG ? ' debug' : '').'"'
    				.($file->description ? ' title="'.htmlentities($file->description, ENT_QUOTES, 'UTF-8').'"' : '')
    				.'>'
    				.($icon ? '<span class="icon"></span>' : '')
    				.$file->name
    				.($size ? ' <span class="size">('.$file->size.')</span>' : '')
    				.'</a>';
    		}
    	}
    	else
    	{
    		// Output message about error
    		$output = '<span class="onedrivefile-error">'.__('Can not load file!', 'pwebonedrive').(is_string($file) ? ' '.$file : '').'</span>';
    	}
    
    	return $output;
    }
    
    function pweb_onedrive_get_gallery($resource_id)
    {
    	static $galleries = array();
    
    	if (isset($galleries[$resource_id])) {
    		return $galleries[$resource_id];
    	}
    
    	$client = LiveConnectClient::getInstance();
    	$client->setOption('usecookie', false);
    
    	$client->log(__FUNCTION__.'. Get images by Folder ID: '.$resource_id);
    
    	// Get photos
    	$response = $client->queryByRersourceId($resource_id, $resource_id.'/files?filter=photos&sort_by=name&sort_order=ascending');
    	if (is_wp_error($response))
    	{
    		return __('Can not load data!', 'pwebonedrive').' '.$response->get_error_message();
    	}
    
    	$data = $response['body'];
    	if (!$data) return false;
    
    	if (isset($data->data))
    	{
    		$client->log(__FUNCTION__.'. Images loaded');
    
    		// Access Id
    		$data->access_id = $client->getAccessId();
    
    		$galleries[$resource_id] = $data;
    		return $galleries[$resource_id];
    	}
    	elseif (isset($data->error) AND isset($data->error->message))
    	{
    		$client->log(__FUNCTION__.'. Get images REST error: '.$data->error->message, E_USER_ERROR);
    		return $data->error->message;
    	}
    
    	return false;
    }
    function pweb_onedrive_get_file($resource_id)
    {
    	static $files = array();
    
    	if (isset($files[$resource_id])) {
    		return $files[$resource_id];
    	}
    
    	$client = LiveConnectClient::getInstance();
    	$client->setOption('usecookie', false);
    
    	$client->log(__FUNCTION__.'. Get file by ID: '.$resource_id);
    
    	// Get File
    	$response = $client->queryByRersourceId($resource_id);
    	if (is_wp_error($response))
    	{
    		return __('Can not load data!', 'pwebonedrive').' '.$response->get_error_message();
    	}
    
    	$data = $response['body'];
    	if (!$data) return false;
    
    	if (isset($data->id))
    	{
    		$client->log(__FUNCTION__.'. File loaded');
    
    		// File extension
    		$dot = strrpos($data->name, '.') + 1;
    		$data->ext = substr($data->name, $dot);
    
    		// Access Id
    		$data->access_id = $client->getAccessId();
    
    		// Formatted file size
    		$data->size = pweb_onedrive_file_format_size($data->size);
    
    		$files[$resource_id] = $data;
    		return $files[$resource_id];
    	}
    	elseif (isset($data->error) AND isset($data->error->message))
    	{
    		$client->log(__FUNCTION__.'. Get file REST error: '.$data->error->message, E_USER_ERROR);
    		return $data->error->message;
    	}
    
    	return false;
    }
    function pweb_onedrive_file_format_size($size)
    {
        $base = log($size, 2);
    
    	if ($base >= 30) {
    		$div = 1024*1024*1024;
    		$sufix = ' GB';
    	}
    	elseif ($base >= 20) {
    		$div = 1024*1024;
    		$sufix = ' MB';
    	}
    	elseif ($base >= 10) {
    		$div = 1024;
    		$sufix = ' KB';
    	}
    	else {
    		return $size.' B';
    	}
    
    	$size = $size / $div;
    	return round($size, $size < 50 ? 1 : 0) . $sufix;
    }
    
    add_action('wp_ajax_pweb_onedrive_download_file', 'pweb_onedrive_download_file');
    add_action('wp_ajax_nopriv_pweb_onedrive_download_file', 'pweb_onedrive_download_file');
    function pweb_onedrive_download_file()
    {
    	$client = LiveConnectClient::getInstance();
    	$client->setOption('usecookie', false);
    
    	$client->log(__FUNCTION__);
    
    	$access_id 	= isset($_GET['aid']) ? (int)$_GET['aid'] : 0;
    	$url 		= isset($_GET['code']) ? base64_decode($_GET['code']) : null;
    
    	if (!$url OR !$access_id) die();
    
    	// Get File
    	$response = $client->queryByAccessId($access_id, $url);
    	if (is_wp_error($response))
    	{
    		die(__('Can not load data!', 'pwebonedrive').' Request error: '.$response->get_error_message());
    	}
    
    	// Follow location returned by request
    	if (headers_sent() AND isset($response['headers']['location']))
    	{
    		echo "<script>document.location.href='" . htmlspecialchars($response['headers']['location']) . "';</script>\n";
    	}
    	else
    	{
    		unset($response['headers']['keep-alive']);
    
    		foreach ($response['headers'] as $name => $value)
    		{
    			header($name.': '.$value);
    		}
    		echo $response['body'];
    	}
    
    	die();
    }
    
    add_action('wp_ajax_pweb_onedrive_display_photo', 'pweb_onedrive_display_photo');
    add_action('wp_ajax_nopriv_pweb_onedrive_display_photo', 'pweb_onedrive_display_photo');
    function pweb_onedrive_display_photo()
    {
    	$client = LiveConnectClient::getInstance();
    	$client->setOption('usecookie', false);
    
    	$client->log(__FUNCTION__);
    
    	$access_id 	= isset($_GET['aid']) ? (int)$_GET['aid'] : 0;
    	$url 		= isset($_GET['code']) ? base64_decode($_GET['code']) : null;
    
    	if (!$url OR !$access_id) die();
    
    	// Get File
    	$response = $client->queryByAccessId($access_id, $url);
    	if (is_wp_error($response))
    	{
    		die(__('Can not load data!', 'pwebonedrive').' Request error: '.$response->get_error_message());
    	}
    
    	// Follow location returned by request
    	if (headers_sent() AND isset($response['headers']['location']))
    	{
    		echo "<script>document.location.href='" . htmlspecialchars($response['headers']['location']) . "';</script>\n";
    	}
    	else
    	{
    		if ($response['body'])
    		{
    			unset($response['headers']['location'], $response['headers']['keep-alive']);
    		}
    		elseif (false) //TODO option: image_redirect
    		{
    			// Get image from location and output to the browser instead of redirecting to that location
    			$url = $response['headers']['location'];
    			unset($response['headers']['location'], $response['headers']['keep-alive']);
    
    			$response = $client->request($url, $response['headers']);
    			if (is_wp_error($response))
    			{
    				die(__('Can not load data!', 'pwebonedrive').' Request error: '.$response->get_error_message());
    			}
    		}
    
    		foreach ($response['headers'] as $name => $value)
    		{
    			header($name.': '.$value);
    		}
    		echo $response['body'];
    	}
    
    	die();
    }
    
    function pweb_onedrive_parse_request()
    {
    	if (!empty($_SERVER['REQUEST_URI']) AND preg_match('/\/pwebonedrive\/callback\/?(\?.+)?$/', $_SERVER['REQUEST_URI']) === 1)
    	{
    		pweb_onedrive_callback();
        }
    }
    add_action('parse_request', 'pweb_onedrive_parse_request');
    
    function pweb_onedrive_callback()
    {
    	$client = LiveConnectClient::getInstance();
    	$client->log(__FUNCTION__);
    
    	echo $client->handlePageRequest();
    
    	$client->log(__FUNCTION__.'. Die');
    
    	die();
    }
    
    register_activation_hook( __FILE__, 'pweb_onedrive_install' );
    function pweb_onedrive_install()
    {
    	global $wpdb;
    	global $charset_collate;
    
    	require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    
    	$sql =
    	"CREATE TABLE IF NOT EXISTS <code>{$wpdb->prefix}onedrive_access</code> (
    	  <code>id</code> int(11) NOT NULL AUTO_INCREMENT,
    	  <code>user_id</code> varchar(1024) DEFAULT NULL,
    	  <code>access_token</code> varchar(1024) DEFAULT NULL,
    	  <code>refresh_token</code> varchar(1024) DEFAULT NULL,
    	  <code>created</code> int(11) unsigned DEFAULT NULL,
    	  <code>expires_in</code> int(6) DEFAULT '3600',
    	  PRIMARY KEY (<code>id</code>),
    	  KEY <code>user</code> (<code>user_id</code>(333))
    	) $charset_collate AUTO_INCREMENT=1;";
    
    	dbDelta( $sql );
    
    	$sql =
    	"CREATE TABLE IF NOT EXISTS <code>{$wpdb->prefix}onedrive_storage</code> (
    	  <code>id</code> int(11) unsigned NOT NULL AUTO_INCREMENT,
    	  <code>resource_id</code> varchar(1024) NOT NULL,
    	  <code>access_id</code> int(11) unsigned NOT NULL DEFAULT '0',
    	  PRIMARY KEY (<code>id</code>),
    	  KEY <code>resource</code> (<code>resource_id</code>(333)),
    	  KEY <code>idx_access_id</code> (<code>access_id</code>)
    	) $charset_collate AUTO_INCREMENT=1;";
    
    	dbDelta( $sql );
    }
    
    register_uninstall_hook( __FILE__, 'pweb_onedrive_uninstall' );
    function pweb_onedrive_uninstall()
    {
    	global $wpdb;
    
    	$wpdb->query( "DROP TABLE IF EXISTS <code>{$wpdb->prefix}onedrive_access</code>" );
    	$wpdb->query( "DROP TABLE IF EXISTS <code>{$wpdb->prefix}onedrive_storage</code>" );
    
    	delete_option( 'pweb_onedrive_client_id' );
    	delete_option( 'pweb_onedrive_client_secret' );
    	delete_option( 'pweb_onedrive_redirect_uri' );
    }
    Thread Starter Chris Zenzel

    (@czenzel)

    It seems I made a mistake. When you complete a post and post it and have a self-signed cert it tries to carry the HTTPS to the Ajax php call. I will be fixing it and sending a new fix in a couple of minutes.

Viewing 2 replies - 1 through 2 (of 2 total)