You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
5.9 KiB
PHP
156 lines
5.9 KiB
PHP
<?php
|
|
|
|
function have_to_run_this_week($start_date, $cadence)
|
|
{
|
|
$return_value;
|
|
switch($cadence) {
|
|
case 1:
|
|
$return_value = true;
|
|
break;
|
|
case 2:
|
|
case 4:
|
|
$date = getdate(strtotime($start_date));
|
|
$today = getdate(date("U"));
|
|
$modulo = 7 * $cadence;
|
|
$date_difference = date_diff($today, $date);
|
|
$days_difference = $date_difference["days"];
|
|
if (($days_difference % $modulo) < 7) {
|
|
$return_value = true;
|
|
break;
|
|
}
|
|
$return_value = false;
|
|
break;
|
|
}
|
|
|
|
return $return_value
|
|
}
|
|
|
|
function show_palinsesto($args)
|
|
{
|
|
$week_days = ['Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato','Domenica'];
|
|
$tabs = $content = "";
|
|
|
|
$broadcast_post = array(
|
|
'post_type' => 'broadcast',
|
|
'numberposts' => -1
|
|
);
|
|
|
|
$broadcasts = get_posts($broadcast_post);
|
|
$palinsesto = [];
|
|
|
|
foreach ($broadcasts as $post) {
|
|
$on_air_day = $on_air_start = $on_air_end = $on_air_cadence = $on_air_start_date = "";
|
|
for ($d=0;$d<7;$d++) {
|
|
$on_air_day = get_post_meta($post->ID, 'on_air_day_'.$d, true);
|
|
$on_air_start = get_post_meta($post->ID, 'on_air_start_'.$d, true);
|
|
$on_air_end = get_post_meta($post->ID, 'on_air_end_'.$d, true);
|
|
$on_air_cadence = get_post_meta($post->ID, 'on_air_cadence_'.$d, true);
|
|
$on_air_start_date = get_post_meta($post->ID, 'on_air_start_date_'.$d, true);
|
|
|
|
if (empty($on_air_cadence) || empty($on_air_start_date)) {
|
|
$on_air_cadence = "1";
|
|
}
|
|
|
|
if (!empty($on_air_day)&&!empty($on_air_start)&&!empty($on_air_end)) {
|
|
|
|
if (have_to_run_this_week($on_air_start_date, (int)$on_air_cadence)) {
|
|
$palinsesto[(int)$on_air_day][(string)$on_air_start] =
|
|
array(
|
|
'ID' => $post->ID,
|
|
'start' => $on_air_start,
|
|
'end' => $on_air_end,
|
|
'on_air' => true,
|
|
'title' => $post->post_title,
|
|
'excerpt' => $post->post_excerpt,
|
|
'thumb_url' => get_the_post_thumbnail_url($post->ID, 'full'),
|
|
'the_permalink' => get_permalink($post->ID),
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
$rerun_day = $rerun_start = $rerun_end = $rerun_cadence = $rerun_start_date = "";
|
|
for ($d=0;$d<7;$d++) {
|
|
$rerun_day = get_post_meta($post->ID, 'rerun_day_'.$d, true);
|
|
$rerun_start = get_post_meta($post->ID, 'rerun_start_'.$d, true);
|
|
$rerun_end = get_post_meta($post->ID, 'rerun_end_'.$d, true);
|
|
$rerun_cadence = get_post_meta($post->ID, 'rerun_cadence_'.$d, true);
|
|
$rerun_start_date = get_post_meta($post->ID, 'rerun_start_date_'.$d, true);
|
|
|
|
if (empty($rerun_cadence) || empty($rerun_start_date)) {
|
|
$rerun_cadence = "1";
|
|
}
|
|
|
|
if (!empty($rerun_day)&&!empty($rerun_start)&&!empty($rerun_end)) {
|
|
|
|
if (have_to_run_this_week($rerun_start_date, (int)$rerun_cadence)) {
|
|
$palinsesto[(int)$rerun_day][(string)$rerun_start] =
|
|
array(
|
|
'ID' => $post->ID,
|
|
'start' => $rerun_start,
|
|
'end' => $rerun_end,
|
|
'on_air' => false,
|
|
'title' => $post->post_title,
|
|
'excerpt' => $post->post_excerpt,
|
|
'thumb_url' => get_the_post_thumbnail_url($post->ID, 'full'),
|
|
'the_permalink' => get_permalink($post->ID),
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ksort($palinsesto);
|
|
|
|
// echo '<pre>';
|
|
// print_r($palinsesto);
|
|
// echo '</pre>';
|
|
|
|
$today = date("N");
|
|
|
|
for ($x=1;$x<=7;$x++) {
|
|
|
|
/*echo '<pre>';
|
|
echo("$today,$x");
|
|
echo '</pre>';*/
|
|
|
|
if ($x == $today)
|
|
$tabs .= "<li class='default-gator-tab'>".$week_days[$x-1]."</li>";
|
|
else
|
|
$tabs .= "<li>".$week_days[$x-1]."</li>";
|
|
$content .= '<li class="gator-tab">';
|
|
|
|
if (!empty($palinsesto[$x])) {
|
|
ksort($palinsesto[$x]);
|
|
foreach ($palinsesto[$x] as $hour => $broadcast) {
|
|
$content .= '<div class="single-broadcast ';
|
|
$content .= (!$broadcast['on_air']) ? "rerun" : "onair";
|
|
$content .= '">';
|
|
$content .= '<a href="'.$broadcast['the_permalink'].'" title="'.$broadcast['title'].'">';
|
|
$content .= '<h4 class="broadcast-title">'.$broadcast['title'].'</h4>';
|
|
$content .= '</a>';
|
|
/* Indico sotto al titolo se la trasmissione è una replica o una diretta */
|
|
$content .= (!$broadcast['on_air']) ? "[replica]" : "[diretta]";
|
|
$content .= '<p class="broadcast-time">'.$broadcast['start'].' - '.$broadcast['end'].'</p>';
|
|
$content .= '<p class="broadcast-excerpt">'.$broadcast['excerpt'].'</p>';
|
|
$content .= "</div>";
|
|
}
|
|
}
|
|
|
|
$content .= '</li>';
|
|
} ?>
|
|
<div class="gator-tabs-container">
|
|
<ul class="gator-tabs-header">
|
|
<?php echo $tabs; ?>
|
|
</ul>
|
|
<ul class="gator-tabs">
|
|
<?php echo $content; ?>
|
|
</ul>
|
|
</div>
|
|
|
|
<?php
|
|
wp_enqueue_style('palinsesto_style', plugin_dir_url(__FILE__).'css/palinsesto.css', array(), '1.0', 'screen');
|
|
wp_enqueue_script('palinsesto_js', plugin_dir_url(__FILE__).'js/palinsesto.js', array(), '1.0', true);
|
|
}
|
|
add_shortcode('palinsesto', 'show_palinsesto');
|