File: /home/mmickelson/theflexguy.com/wp-content/plugins/wordpress-media-flickr/wp-media-flickr.php
<?php
/*
Plugin Name: Wordpress Media Flickr
Plugin URI: http://factage.com/yu-ji/tag/wp-media-flickr
Description: You can post with flickr photo, on visual editor toolbar.<br />It's very interactive interface than other plugins.
Author: yu-ji
Version: 1.1.2
Author URI: http://factage.com/yu-ji
*/
class WpMediaFlickr {
var $pluginURI = null;
var $settings = array();
var $default_settings = array(
'username' => '',
'user_id' => '',
'photo_link' => '0',
'link_rel' => '',
'link_class' => '',
);
var $flickr_auth_url = 'http://flickr.com/services/auth/?';
var $flickr_api_url = 'http://api.flickr.com/services/rest/?';
var $flickr_api_key = '448e0602a1f453c0e668e701f4bf8924';
var $flickr_api_secret = '2e5bb6215c1c3061';
var $flickr_api_frob = null;
function WpMediaFlickr() {
load_plugin_textdomain('wp-media-flickr', PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)));
$this->settings = get_option(get_class($this));
$flush_settings = false;
foreach($this->default_settings as $key => $value) {
if(!isset($this->settings[$key])) {
$this->settings[$key] = $value;
$flush_settings = true;
}
}
if($flush_settings) {
$this->update_settings();
}
$this->pluginURI = get_option('siteurl').'/wp-content/plugins/'.dirname(plugin_basename(__FILE__));
add_action('media_buttons', array($this, 'addMediaButton'), 20);
add_action('media_upload_flickr', array($this, 'media_upload_flickr'));
add_action('admin_menu', array(&$this, 'addAdminMenu'));
// check auth enabled
if(!function_exists('curl_init') && !ini_get('allow_url_fopen')) {
$this->disabled = true;
}
}
function addMediaButton() {
global $post_ID, $temp_ID;
$uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID);
$media_upload_iframe_src = "media-upload.php?post_id=$uploading_iframe_ID";
$media_flickr_iframe_src = apply_filters('media_flickr_iframe_src', "$media_upload_iframe_src&type=flickr&tab=flickr");
$media_flickr_title = __('Add Flickr photo', 'wp-media-flickr');
echo "<a href=\"{$media_flickr_iframe_src}&TB_iframe=true&height=500&width=640\" class=\"thickbox\" title=\"$media_flickr_title\"><img src=\"{$this->pluginURI}/media-flickr.gif\" alt=\"$media_flickr_title\" /></a>";
}
function modifyMediaTab($tabs) {
return array(
'flickr' => __('Flickr photo', 'wp-media-flickr')
);
}
function addAdminMenu() {
if (function_exists('add_options_page')) {
$plugin_basename = dirname(plugin_basename(__FILE__));
add_options_page(__('Media Flickr', 'wp-media-flickr'), __('Media Flickr', 'wp-media-flickr'), 8, dirname(__FILE__)."/wp-media-flickr-admin.php");
}
}
function media_upload_flickr() {
wp_iframe('media_upload_type_flickr');
}
function update_settings($settings=null){
if($settings) {
foreach($settings as $key => $val) {
$this->settings[$key] = $val;
}
}
// Boolean values
// if (!empty($settings['isafter']))
// $this->settings['isafter'] = true;
// else
// $this->settings['isafter'] = false;
$_settings = array();
foreach($this->settings as $key => $value) {
if(isset($this->default_settings[$key])) {
$_settings[$key] = $value;
}
}
update_option(get_class($this), $_settings);
}
function flickrGetToken() {
$params = array(
'api_key' => $this->flickr_api_key,
'format' => 'php_serial',
'frob' => $this->flickrGetFrob(),
'method' => 'flickr.auth.getToken',
'api_sig' => $this->flickrGenerateSignature('format', 'php_serial', 'frob', $this->flickrGetFrob(), 'method', 'flickr.auth.getToken'),
);
$result = unserialize($this->get_contents($this->flickr_api_url.http_build_query($params)));
if(!empty($result) && $result['stat'] == 'ok') {
return $result;
}else{
return null;
}
}
function flickrGetFrob() {
if(empty($this->flickr_api_frob)) {
$params = array(
'api_key' => $this->flickr_api_key,
'method' => 'flickr.auth.getFrob',
'format' => 'php_serial',
'api_sig' => $this->flickrGenerateSignature('format', 'php_serial', 'method', 'flickr.auth.getFrob'),
);
$result = unserialize($this->get_contents($this->flickr_api_url.http_build_query($params)));
if(!empty($result) && $result['stat'] == 'ok') {
$this->flickr_api_frob = $result['frob']['_content'];
}
}
return $this->flickr_api_frob;
}
function flickrGetAuthUrl() {
$params = array(
'api_key' => $this->flickr_api_key,
'frob' => $this->flickrGetFrob(),
'perms' => 'read',
'api_sig' => $this->flickrGenerateSignature('frob', $this->flickrGetFrob(), 'perms', 'read'),
);
return $this->flickr_auth_url.http_build_query($params);
}
function flickrGenerateSignature() {
$args = func_get_args();
$raws = array(
$this->flickr_api_secret,
'api_key',
$this->flickr_api_key,
);
return md5(join('', $raws).join('', $args));
}
function get_contents($url) {
if(function_exists('curl_init')) {
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
return $file_contents;
}else{
return file_get_contents($url);
}
}
}
function media_upload_type_flickr() {
global $wpdb, $wp_query, $wp_locale, $type, $tab, $post_mime_types, $mediaFlickr;
add_filter('media_upload_tabs', array($mediaFlickr, 'modifyMediaTab'));
media_upload_header();
?>
<style type="text/css">
h3 {
margin: 0px;
}
.flickr_photo {
width: 90px;
padding: 5px 7px;
float: left;
height: 110px;
}
.flickr_image {
border: 0px;
width: 75px;
height: 75px;
cursor: pointer;
}
.flickr_title {
font-size: 80%;
cursor: pointer;
padding-top: 2px;
}
#search-filter label {
display: inline;
font-size: 80%;
}
#pager {
}
#prev_page {
display: none;
font-weight: bold;
float: left;
padding-bottom: 10px;
}
#next_page {
display: none;
font-weight: bold;
float: right;
padding-bottom: 10px;
}
#pages {
font-size: 70%;
font-weight: normal;
}
#items {
text-align: center;
}
form input {
vertical-align: middle;
}
#put_dialog {
display: none;
position: absolute;
border: 1px solid #888;
background-color: #fff;
top: 120px;
left: 110px;
padding: 10px;
}
#put_dialog div{
padding-top: 10px;
}
#put_background {
position: absolute;
display: none;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background-color: #fff;
filter:alpha(opacity=75); /*IE*/
-moz-opacity:0.75; /*FF*/
opacity:0.75;
}
#alignment_preview,
#size_preview {
text-align: center;
}
#buttons {
text-align: center;
}
#alignments {
padding-left: 40px;
}
#sizes {
padding-left: 20px;
}
#sizes div {
padding: 0px;
}
#select_size {
float: left;
width: 200px;
}
#select_alignment {
float: left;
width: 200px;
}
#options {
clear: both;
text-align: center;
}
select#photoset {
width: 170px;
vertical-align: middle;
padding: 0px;
display: none;
}
div#div_size_o_disabled {
display: none;
color: #888;
}
h3 {
padding-top: 10px;
}
/* clearfix */
.pkg:after{
content: ".";
display: block;
clear: both;
height: 0px;
visibility:hidden;
}
.pkg{ display: inline-block; }
/* no ie mac \*/
* html .pkg{ height: 1%; }
.pkg{ display: block; }
/* */
</style>
<form method="get" class="media-upload-form type-form" onsubmit="return false">
<input type="hidden" name="type" value="<?php echo $type ?>" />
<input type="hidden" name="tab" value="<?php echo $tab ?>" />
<div id="search-filter">
<?php _e('Search:', 'wp-media-flickr') ?>
<input type="text" id="flickr_search_query" />
<?php if(!empty($mediaFlickr->settings['username'])) { ?>
<select id="photoset" name="photoset">
</select>
<input type="radio" id="flickr_search_0" name="flickr_search" class="searchTypes" value="own" checked="checked"/><label for="flickr_search_0"><?php _e('Your Photos', 'wp-media-flickr') ?></label>
<input type="radio" id="flickr_search_1" name="flickr_search" class="searchTypes" value="sets"/><label for="flickr_search_1"><?php _e('Your Sets', 'wp-media-flickr') ?></label>
<input type="radio" id="flickr_search_2" name="flickr_search" class="searchTypes" value="everyone"/><label for="flickr_search_2"><?php _e('Everyone\'s Photos', 'wp-media-flickr') ?></label>
<?php } ?>
<input type="submit" onclick="mediaFlickr.searchPhoto(0)" value="<?php _e('Search photo', 'wp-media-flickr'); ?>" class="button" />
</div>
<h3><?php _e('Flickr photos', 'wp-media-flickr') ?><span id="pages"></span></h3>
<div id="pager">
<div id="prev_page">
<a href="javascript:void(0)" onclick="return mediaFlickr.searchPhoto(-1)"><?php _e('« Prev page', 'wp-media-flickr') ?></a>
</div>
<div id="next_page">
<a href="javascript:void(0)" onclick="return mediaFlickr.searchPhoto(+1)"><?php _e('Next page »', 'wp-media-flickr') ?></a>
</div>
<br style="clear: both;" />
</div>
<div id="items" class="pkg">
</div>
</form>
<div id="put_background"></div>
<form onsubmit="return false" id="put_dialog">
<div id="select_size">
1. <?php _e('Select size of photo', 'wp-media-flickr') ?>
<div id="size_preview"><img id="size_image" rel="none" src="<?php echo $mediaFlickr->pluginURI ?>/size_t.png" alt=""/></div>
<div id="sizes">
<div id="div_size_sq"><input type="radio" id="size_sq" name="size" value="size_sq" /> <label for="size_sq"><?php _e('Square', 'wp-media-flickr') ?> (75 x 75)</label></div>
<div id="div_size_t"><input type="radio" id="size_t" name="size" value="size_t" /> <label for="size_t"><?php _e('Thumbnail', 'wp-media-flickr') ?> (100 x 75)</label></div>
<div id="div_size_s"><input type="radio" id="size_s" name="size" value="size_s" /> <label for="size_s"><?php _e('Small', 'wp-media-flickr') ?> (240 x 180)</label></div>
<div id="div_size_m"><input type="radio" id="size_m" name="size" value="size_m" /> <label for="size_m"><?php _e('Medium', 'wp-media-flickr') ?> (500 x 375)</label></div>
<div id="div_size_l"><input type="radio" id="size_l" name="size" value="size_l" /> <label for="size_l"><?php _e('Large', 'wp-media-flickr') ?> (1024 x 768)</label></div>
<div id="div_size_o"><input type="radio" id="size_o" name="size" value="size_o" /> <label for="size_o"><?php _e('Original', 'wp-media-flickr') ?></label></div>
<div id="div_size_o_disabled"><input type="radio" id="size_o" name="size" value="size_o" disabled="disabled"/> <?php _e('Original', 'wp-media-flickr') ?><?php _e('(not permitted)', 'wp-media-flickr') ?></div>
</div>
</div>
<div id="select_alignment">
2. <?php _e('Select alignment of photo', 'wp-media-flickr') ?>
<div id="alignment_preview"><img id="alignment_image" rel="none" src="<?php echo $mediaFlickr->pluginURI ?>/alignment_none.png" alt=""/></div>
<div id="alignments">
<input type="radio" id="alignment_none" name="alignment" value="none" /> <label for="alignment_none"><?php _e('Default', 'wp-media-flickr') ?></label><br />
<input type="radio" id="alignment_left" name="alignment" value="left" /> <label for="alignment_left"><?php _e('Left', 'wp-media-flickr') ?></label><br />
<input type="radio" id="alignment_center" name="alignment" value="center" /> <label for="alignment_center"><?php _e('Center', 'wp-media-flickr') ?></label><br />
<input type="radio" id="alignment_right" name="alignment" value="right" /> <label for="alignment_right"><?php _e('Right', 'wp-media-flickr') ?></label><br />
</div>
</div>
<div id="options">
<input type="checkbox" id="continue_insert" name="continue_insert" value="1" />
<label for="continue_insert"><?php _e('Continue to insert other photo.', 'wp-media-flickr') ?></label><br />
</div>
<div id="buttons">
<input type="button" value="<?php _e('Cancel', 'wp-media-flickr') ?>" onclick="mediaFlickr.cancelInsertImage()" class="button"/>
<input type="submit" value="<?php _e('Insert', 'wp-media-flickr') ?>" onclick="mediaFlickr.insertImage()" class="button"/>
</div>
</form>
<script type="text/javascript" src="<?php echo $mediaFlickr->pluginURI ?>/wp-media-flickr.js"></script>
<script type="text/javascript">
<!--
var is_msie = /*@cc_on!@*/false;
var plugin_uri = '<?php echo $mediaFlickr->pluginURI ?>';
var flickr_api_url = '<?php echo $mediaFlickr->flickr_api_url ?>';
var flickr_user_id = '<?php echo !empty($mediaFlickr->settings['user_id']) ? $mediaFlickr->settings['user_id'] : '' ?>';
var flickr_api_key = '<?php echo $mediaFlickr->flickr_api_key ?>';
var flickr_errors = {
0: "<?php _e('Not found photo', 'wp-media-flickr') ?>",
1: "<?php _e('Too many tags in ALL query', 'wp-media-flickr') ?>",
2: "<?php _e('Unknown user', 'wp-media-flickr') ?>",
3: "<?php _e('Parameterless searches have been disabled', 'wp-media-flickr') ?>",
4: "<?php _e('You don\'t have permission to view this pool', 'wp-media-flickr') ?>",
10: "<?php _e('Sorry, the Flickr search API is not currently available.', 'wp-media-flickr') ?>",
11: "<?php _e('No valid machine tags', 'wp-media-flickr') ?>",
12: "<?php _e('Exceeded maximum allowable machine tags', 'wp-media-flickr') ?>",
100: "<?php _e('Invalid API Key', 'wp-media-flickr') ?>",
105: "<?php _e('Service currently unavailable', 'wp-media-flickr') ?>",
999: "<?php _e('Unknown error', 'wp-media-flickr') ?>"
};
var msg_pages = '<?php _e('(%1$s / %2$s page(s), %3$s photo(s))', 'wp-media-flickr')?>';
var setting_photo_link = <?php echo !empty($mediaFlickr->settings['photo_link']) ? 1 : 0 ?>;
var setting_link_rel = '<?php echo !empty($mediaFlickr->settings['link_rel']) ? $mediaFlickr->settings['link_rel'] : '' ?>';
var setting_link_class = '<?php echo !empty($mediaFlickr->settings['link_class']) ? $mediaFlickr->settings['link_class'] : '' ?>';
//-->
</script>
<?php
}
$mediaFlickr = new WpMediaFlickr;