Jean-Marc BIANCA Author URI: http://www.tranchesdunet.com/sidenails === RELEASE NOTES === 2012-02-21 - v0.1 - First public release */ define("SIDENAILS_VERSION", "v0.1"); if (!class_exists("sidenails")) { class sidenails extends WP_Widget { var $adminOptionsName = 'sidenailsAdminOptions'; var $default_thumbnail_width = 0;//definies dans wordpress pour les thumbnails var $default_thumbnail_height = 0; var $ngg_thumbnail_width = 0; var $ngg_thumbnail_height = 0; /** * constructor */ function sidenails() { parent::__construct("sidenails", "SideNails", array('description' => __("Afficher les derniers articles sous forme de vignettes dans un widget", "sidenails"))); //recuperer les valeurs par defaut dans Wordpress $this->default_thumbnail_width = get_option("thumbnail_size_w"); $this->default_thumbnail_height = get_option("thumbnail_size_h"); if(class_exists(nggdb)) { $ngg_options = get_option("ngg_options"); $this->ngg_thumbnail_width = $ngg_options['thumbwidth']; $this->ngg_thumbnail_height = $ngg_options['thumbheight']; } } function getAdminOptions() { $sidenailsAdminOptions = array( 'sidenails_nb_article' => '10', 'sidenails_cat' => '', 'thumbnail_source' => 'attachment', 'sidenails_widget_title' => __("Derniers articles"), 'have_image' => 0, 'cf_name' => 'sidenails_cf', 'sidenails_thumb_width' => $this->default_thumbnail_width, 'sidenails_thumb_height' => $this->default_thumbnail_height ); $sidenailsOptions = get_option($this->adminOptionsName); if (!empty($sidenailsOptions)) { foreach ($sidenailsOptions as $key => $option) $sidenailsAdminOptions[$key] = $option; } update_option($this->adminOptionsName, $sidenailsAdminOptions); return $sidenailsAdminOptions; } function init() { $this->getAdminOptions(); } /** * * Affiche la page d'admin du plugin */ function printAdminPage() { $options = $this->getAdminOptions(); if (isset($_POST['update_sidenailsSettings'])) { if (isset($_POST['thumbnail_source'])) { $options['thumbnail_source'] = $_POST['thumbnail_source']; } if(isset($_POST['have_image'])) { $options['have_image'] = $_POST['have_image']; }else{ $options['have_image'] = 0; } if(isset($_POST['show_credits'])) { $options['show_credits'] = $_POST['show_credits']; }else{ $options['show_credits'] = 0; } if (isset($_POST['cf_name'])) { $options['cf_name'] = $_POST['cf_name']; }else{ $options['cf_name'] = "sidenails_cf"; } if (isset($_POST['sidenails_thumb_width'])) { $options['sidenails_thumb_width'] = $_POST['sidenails_thumb_width']; }else{ $options['sidenails_thumb_width'] = $this->default_thumbnail_width; } if (isset($_POST['sidenails_thumb_height'])) { $options['sidenails_thumb_height'] = $_POST['sidenails_thumb_height']; }else{ $options['sidenails_thumb_height'] = $this->default_thumbnail_height; } update_option($this->adminOptionsName, $options); print '
'; _e("Paramètres mis à jour", "sidenails"); print '
'; print_r($images);//exit;
foreach($images as $image)
{
$attachment = wp_get_attachment_image_src($image->ID, $size);
//print ''; print_r($attachment);exit;
$sortie = $attachment[0];
}
}
}
elseif($thumbnail_source == 'post-thumbnails')
{
if (has_post_thumbnail($postid))
{
$image = wp_get_attachment_image_src(get_post_thumbnail_id($postid), 'post-thumbnail');
$sortie = $image[0];
}
}
elseif($thumbnail_source == 'ngg')
{
if(class_exists('nggdb'))
{
//retrouver la galerie liée au post
$gal_id = $this->getGalleryFromPost($postid);
//var_dump($gal_id);
if(intval($gal_id))
{
$picturelist = nggdb::get_gallery($gal_id, 'pid', 'ASC');
if($picturelist && count($picturelist) > 0)
{
$thumb = current($picturelist);
$sortie = $thumb->thumbURL;
}
}
}
}elseif($thumbnail_source == 'custom-field' && $cf_name)
{
$temp = get_post_custom_values($cf_name, $postid);
$sortie = (is_array($temp) && count($temp) > 0) ? $temp[0] : null;
}
return $sortie;
}
/**
* Permet de retrouver les dernieres images suivant les parametres donnés
* @param unknown_type $instance instance du Widget
* @return string : le code html qui sera affiché
*/
function LastPostsImages( $instance )
{
//variables globales
$options = get_option($this->adminOptionsName);
$have_image = $options['have_image'];
$thumbnail_source = $options['thumbnail_source'];
$cf_name = $options['cf_name'];
$sidenails_width = $options['sidenails_thumb_width'];
$sidenails_height = $options['sidenails_thumb_height'];
//variables de l'instance du widget
$nbimages = apply_filters( 'sidenails_nb_article', $instance['sidenails_nb_article'] );
$cat = apply_filters( 'sidenails_cat', $instance['sidenails_cat'] );
$tag = apply_filters( 'sidenails_tag', $instance['sidenails_tag'] );
$template = '';
$request = array(
'showposts' => $nbimages,
'category_name' => $cat,
'cat' => '',
'tag' => $tag,
'author_name' => '',
'author' => '',
'orderby' => 'post_date',
'order' => 'desc',
'offset' => '',
'day' => '',
'monthnum' => '',
'year' => '',
'w' => '',
'tag__not_in' => '',
'caller_get_posts' => 1);
if($have_image)//on va utiliser des filtres pour modifier le where, donc ne pas les supprimer
{
if($thumbnail_source == 'custom-field')
{
$request['meta_key'] = $cf_name;
}elseif($thumbnail_source == 'post-thumbnail')
{
$request['meta_key'] = '_thumbnail_id';
}else{
$request['suppress_filters'] = false;
}
}
$filter = null;
//var_dump($thumbnail_source);exit;
switch($thumbnail_source)
{
case 'attachment':
case 'post-thumbnails':
$filter = 'sidenails_search_where_attachment';
break;
case 'ngg':
$filter = 'sidenails_search_where_ngg';
break;
}
if($have_image && $filter)
{
add_filter('posts_where', $filter );
}
$pageposts = get_posts($request);
//var_dump($pageposts);exit;
if($have_image && $filter)
{
remove_filter('posts_where', $filter);
}
if ($pageposts)
{
$com=0;
if($sidenails_width && $sidenails_height)//on redefini les styles
{
$real_width = $sidenails_width;
$real_height = $sidenails_height;
}elseif(class_exists('nggdb') && $thumbnail_source == 'ngg')
{
$real_width = $this->ngg_thumbnail_width;
$real_height = $this->ngg_thumbnail_height;
}else{
$real_width = $this->default_thumbnail_width;
$real_height = $this->default_thumbnail_height;
}
$template .= "";
foreach ($pageposts as $post)
{
$srcimg = $this->getImagesLink($post->ID);
//var_dump($srcimg);
//$local_img = str_replace("http://www.tranchesdunet.com",$_SERVER["DOCUMENT_ROOT"], $srcimg);
//TODO: a enlever avant mise en prod
$local_img = str_replace(get_bloginfo('url'),$_SERVER["DOCUMENT_ROOT"], $srcimg);
if($srcimg && file_exists($local_img))
{
$srcimg = '
';
$template .= ''.$srcimg.''.$post->post_title.'';
$com++;
}
}
}
return $template;
}
}
function add_script_config()
{
?>