Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions amazons3/admin/conf.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
osc_set_preference('bucket', Params::getParam('bucket'), 'amazons3', 'STRING');
osc_set_preference('access_key', Params::getParam('access_key'), 'amazons3', 'STRING');
osc_set_preference('secret_key', Params::getParam('secret_key'), 'amazons3', 'STRING');
osc_set_preference('cloudfront', Params::getParam('cloudfront'), 'amazons3', 'STRING');
if(osc_version()<320) {
echo '<div style="text-align:center; font-size:22px; background-color:#00bb00;"><p>' . __('Congratulations. The plugin is now configured', 'amazons3') . '.</p></div>' ;
osc_reset_preferences();
Expand Down Expand Up @@ -60,6 +61,10 @@
<label for="secret_key"><?php _e('Secret key', 'amazons3'); ?></label>
<br/>
<input type="text" name="secret_key" id="secret_key" value="<?php echo osc_get_preference('secret_key', 'amazons3'); ?>"/>
<br/>
<label for="cloudfront"><?php _e('Cloudfront Distribution (eg. d31ux1kh4lmohv.cloudfront.net)', 'amazons3'); ?></label>
<br/>
<input type="text" name="cloudfront" id="cloudfront" value="<?php echo osc_get_preference('cloudfront', 'amazons3'); ?>"/>
<br/>
<?php printf(__("You need an Amazon S3 account. More information on %s",'amazons3k'), '<a href="http://aws.amazon.com/s3/">http://aws.amazon.com/s3/</a>'); ?>
<br/>
Expand Down
232 changes: 119 additions & 113 deletions amazons3/index.php
Original file line number Diff line number Diff line change
@@ -1,130 +1,136 @@
<?php

/*
Plugin Name: Amazon S3
Plugin URI: http://www.osclass.org/
Description: This plugin allows you to upload users' images to Amazon S3 service
Version: 1.0.3
Author: OSClass
Author URI: http://www.osclass.org/
Short Name: amazons3
Plugin update URI: amazon-s3
*/


// load necessary functions
require_once osc_plugins_path() . osc_plugin_folder(__FILE__) . 'S3.php';

function amazon_install() {
$conn = getConnection();
osc_set_preference('bucket', '', 'amazons3', 'STRING');
osc_set_preference('access_key', '', 'amazons3', 'STRING');
osc_set_preference('secret_key', '', 'amazons3', 'STRING');
$conn->autocommit(true);
}
Plugin Name: Amazon S3
Plugin URI: http://www.osclass.org/
Description: This plugin allows you to upload users' images to Amazon S3 service
Version: 1.0.3
Author: OSClass
Author URI: http://www.osclass.org/
Short Name: amazons3
Plugin update URI: amazon-s3
*/

function amazon_uninstall() {
osc_delete_preference('bucket', 'amazons3');
osc_delete_preference('access_key', 'amazons3');
osc_delete_preference('secret_key', 'amazons3');
}

function amazon_upload($resource) {
$s3 = new S3(osc_get_preference('access_key', 'amazons3'), osc_get_preference('secret_key', 'amazons3'));
@$s3->putBucket(osc_get_preference('bucket', 'amazons3'), S3::ACL_PUBLIC_READ);
if(osc_keep_original_image()) {
$s3->putObjectFile(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_original.jpg', osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '_original.jpg', S3::ACL_PUBLIC_READ);
}
$s3->putObjectFile(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '.jpg', osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '.jpg', S3::ACL_PUBLIC_READ);
$s3->putObjectFile(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_preview.jpg', osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '_preview.jpg', S3::ACL_PUBLIC_READ);
$s3->putObjectFile(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_thumbnail.jpg', osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '_thumbnail.jpg', S3::ACL_PUBLIC_READ);
amazon_unlink_resource($resource);

// load necessary functions
require_once osc_plugins_path() . osc_plugin_folder(__FILE__) . 'S3.php';

function amazon_install() {
$conn = getConnection();
osc_set_preference('bucket', '', 'amazons3', 'STRING');
osc_set_preference('access_key', '', 'amazons3', 'STRING');
osc_set_preference('secret_key', '', 'amazons3', 'STRING');
osc_set_preference('cloudfront', '', 'amazons3', 'STRING');
$conn->autocommit(true);
}

function amazon_uninstall() {
osc_delete_preference('bucket', 'amazons3');
osc_delete_preference('access_key', 'amazons3');
osc_delete_preference('secret_key', 'amazons3');
osc_delete_preference('cloudfront', 'amazons3');
}

function amazon_upload($resource) {
$s3 = new S3(osc_get_preference('access_key', 'amazons3'), osc_get_preference('secret_key', 'amazons3'));
@$s3->putBucket(osc_get_preference('bucket', 'amazons3'), S3::ACL_PUBLIC_READ);
if (osc_keep_original_image()) {
$s3->putObjectFile(str_replace("oc-content/", $resource['s_path'], osc_content_path()) . $resource['pk_i_id'] . '_original.'. $resource['s_extension'], osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '_original.'. $resource['s_extension'], S3::ACL_PUBLIC_READ);
}

function amazon_resource_path($path) {
return "http://". osc_get_preference('bucket', 'amazons3') .".s3.amazonaws.com/" . str_replace(osc_base_url().osc_resource_field("s_path"), '', $path);

$s3->putObjectFile(str_replace("oc-content/", $resource['s_path'], osc_content_path()) . $resource['pk_i_id'] . '.'. $resource['s_extension'], osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '.'. $resource['s_extension'], S3::ACL_PUBLIC_READ);
$s3->putObjectFile(str_replace("oc-content/", $resource['s_path'], osc_content_path()) . $resource['pk_i_id'] . '_preview.'. $resource['s_extension'], osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '_preview.'. $resource['s_extension'], S3::ACL_PUBLIC_READ);
$s3->putObjectFile(str_replace("oc-content/", $resource['s_path'], osc_content_path()) . $resource['pk_i_id'] . '_thumbnail.'. $resource['s_extension'], osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . '_thumbnail.'. $resource['s_extension'], S3::ACL_PUBLIC_READ);
amazon_unlink_resource($resource);
}

function amazon_resource_path($path) {
$cloudfront = osc_get_preference('cloudfront', 'amazons3');
if (!empty($cloudfront)) {
return "http://" . $cloudfront. "/" . str_replace(osc_base_url() . osc_resource_field("s_path"), '', $path);
}

function amazon_regenerate_image($resource) {
$s3 = new S3(osc_get_preference('access_key', 'amazons3'), osc_get_preference('secret_key', 'amazons3'));
$path = $resource['pk_i_id']. "_original.jpg";
$img = @$s3->getObject(osc_get_preference('bucket','amazons3'), $path);
if(!$img) {
$path = $resource['pk_i_id']. ".jpg";
$img = @$s3->getObject(osc_get_preference('bucket','amazons3'), $path);
}
if(!$img) {
$path = $resource['pk_i_id']. "_thumbnail.jpg";
$img = @$s3->getObject(osc_get_preference('bucket','amazons3'), $path);
}
if($img) {
$s3->getObject(osc_get_preference('bucket','amazons3'), $path, osc_content_path() . 'uploads/' . $resource['pk_i_id'] . ".jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. "_original.jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. ".jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. "_preview.jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. "_thumbnail.jpg");
}
return "http://" . osc_get_preference('bucket', 'amazons3') . ".s3.amazonaws.com/" . str_replace(osc_base_url() . osc_resource_field("s_path"), '', $path);
}

function amazon_regenerate_image($resource) {
$s3 = new S3(osc_get_preference('access_key', 'amazons3'), osc_get_preference('secret_key', 'amazons3'));
$path = $resource['pk_i_id'] . "_original.jpg";
$img = @$s3->getObject(osc_get_preference('bucket', 'amazons3'), $path);
if (!$img) {
$path = $resource['pk_i_id'] . ".jpg";
$img = @$s3->getObject(osc_get_preference('bucket', 'amazons3'), $path);
}

function amazon_unlink_resource($resource) {
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_original.jpg');
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '.jpg');
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_preview.jpg');
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_thumbnail.jpg');
if (!$img) {
$path = $resource['pk_i_id'] . "_thumbnail.jpg";
$img = @$s3->getObject(osc_get_preference('bucket', 'amazons3'), $path);
}

function amazon_delete_from_bucket($resource) {
$s3 = new S3(osc_get_preference('access_key', 'amazons3'), osc_get_preference('secret_key', 'amazons3'));
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. "_original.jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. ".jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. "_preview.jpg");
@$s3->deleteObject(osc_get_preference('bucket','amazons3'), $resource['pk_i_id']. "_thumbnail.jpg");
if ($img) {
$s3->getObject(osc_get_preference('bucket', 'amazons3'), $path, osc_content_path() . 'uploads/' . $resource['pk_i_id'] . ".jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . "_original.jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . ".jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . "_preview.jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . "_thumbnail.jpg");
}

}

function amazon_unlink_resource($resource) {
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_original.jpg');
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '.jpg');
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_preview.jpg');
@unlink(osc_content_path() . 'uploads/' . $resource['pk_i_id'] . '_thumbnail.jpg');
}

function amazon_admin_menu() {
if(osc_version()<320) {
echo '<h3><a href="#">Amazon S3</a></h3>
function amazon_delete_from_bucket($resource) {
$s3 = new S3(osc_get_preference('access_key', 'amazons3'), osc_get_preference('secret_key', 'amazons3'));
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . "_original.jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . ".jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . "_preview.jpg");
@$s3->deleteObject(osc_get_preference('bucket', 'amazons3'), $resource['pk_i_id'] . "_thumbnail.jpg");
}

function amazon_admin_menu() {
if (osc_version() < 320) {
echo '<h3><a href="#">Amazon S3</a></h3>
<ul>
<li><a href="' . osc_admin_render_plugin_url(osc_plugin_folder(__FILE__) . 'admin/conf.php') . '">&raquo; ' . __('Settings', 'amazon') . '</a></li>
</ul>';
} else {
osc_add_admin_submenu_divider('plugins', 'Amazon S3 plugin', 'amazons3_divider', 'administrator');
osc_add_admin_submenu_page('plugins', __('Amazon S3 options', 'amazons3'), osc_route_admin_url('amazons3-admin-conf'), 'amazons3_settings', 'administrator');
}
} else {
osc_add_admin_submenu_divider('plugins', 'Amazon S3 plugin', 'amazons3_divider', 'administrator');
osc_add_admin_submenu_page('plugins', __('Amazon S3 options', 'amazons3'), osc_route_admin_url('amazons3-admin-conf'), 'amazons3_settings', 'administrator');
}
function amazon_configure_link() {
if(osc_version()<320) {
osc_redirect_to(osc_admin_render_plugin_url(osc_plugin_folder(__FILE__)).'admin/conf.php');
} else {
osc_redirect_to(osc_route_admin_url('amazons3-admin-conf'));
}
}

function amazon_configure_link() {
if (osc_version() < 320) {
osc_redirect_to(osc_admin_render_plugin_url(osc_plugin_folder(__FILE__)) . 'admin/conf.php');
} else {
osc_redirect_to(osc_route_admin_url('amazons3-admin-conf'));
}

if(osc_version()>=320) {
/**
* ADD ROUTES (VERSION 3.2+)
*/
osc_add_route('amazons3-admin-conf', 'amazons3/admin/conf', 'amazons3/admin/conf', osc_plugin_folder(__FILE__).'admin/conf.php');
}


}

if (osc_version() >= 320) {
/**
* ADD HOOKS
* ADD ROUTES (VERSION 3.2+)
*/
osc_register_plugin(osc_plugin_path(__FILE__), 'amazon_install');
osc_add_hook(osc_plugin_path(__FILE__)."_uninstall", 'amazon_uninstall');
osc_add_hook(osc_plugin_path(__FILE__)."_configure", 'amazon_configure_link');

osc_add_hook('uploaded_file', 'amazon_upload');
osc_add_filter('resource_path', 'amazon_resource_path');
osc_add_hook('regenerate_image', 'amazon_regenerate_image');
osc_add_hook('regenerated_image', 'amazon_upload');
osc_add_hook('delete_resource', 'amazon_delete_from_bucket');
if(osc_version()<320) {
osc_add_hook('admin_menu', 'amazon_admin_menu');
} else {
osc_add_hook('admin_menu_init', 'amazon_admin_menu');
}

osc_add_route('amazons3-admin-conf', 'amazons3/admin/conf', 'amazons3/admin/conf', osc_plugin_folder(__FILE__) . 'admin/conf.php');
}


/**
* ADD HOOKS
*/
osc_register_plugin(osc_plugin_path(__FILE__), 'amazon_install');
osc_add_hook(osc_plugin_path(__FILE__) . "_uninstall", 'amazon_uninstall');
osc_add_hook(osc_plugin_path(__FILE__) . "_configure", 'amazon_configure_link');

osc_add_hook('uploaded_file', 'amazon_upload');
osc_add_filter('resource_path', 'amazon_resource_path');
osc_add_hook('regenerate_image', 'amazon_regenerate_image');
osc_add_hook('regenerated_image', 'amazon_upload');
osc_add_hook('delete_resource', 'amazon_delete_from_bucket');
if (osc_version() < 320) {
osc_add_hook('admin_menu', 'amazon_admin_menu');
} else {
osc_add_hook('admin_menu_init', 'amazon_admin_menu');
}
?>