function bmc_newsletter_menu(){ $items['newsletter/signin'] = array( 'title' => 'Inscription à la newsletter', 'page callback' => '_bmc_newsletter_inscription', 'access callback' => true, 'type' => MENU_CALLBACK, ); return $items; } function _bmc_newsletter_inscription() { // création de la soumission de formulaire global $user; $email = @$_POST['email']; if($email && filter_var($email, FILTER_VALIDATE_EMAIL)){ $titre = date('d/m/Y H:i:s') . ' - ' . $email; $node_values = array( 'type' => '_newsletter_entry', 'uid' => $user->uid, 'status' => 0, 'comment' => 0, 'promote' => 0, ); $my_node = entity_create('node', $node_values); $ewrapper = entity_metadata_wrapper('node', $my_node); $ewrapper->title->set($titre); $ewrapper->field_email->set($email); $ewrapper->save(); echo 'ok'; } else { echo 'error'; } } /** * export */ function bmc_newsletter_views_pre_render(&$view){ // dpm($view); if ($view->name == 'newsletter' && count($view->args) > 0){ _bmc_newsletter_export($view->result); exit(); } } function _bmc_newsletter_export($result){ $sortie = array(); // dpm($result); // return; $headers = array( 'Date de création', 'Email', ); foreach($result as $row){ $tab = array( date('Y/m/d H:i:s', $row->node_created), $row->field_field_email[0]['raw']['safe_value'], ); $sortie[] = $tab; } _bmc_newsletter_xls($headers, $sortie); // } function _bmc_newsletter_clean_me_please($str){ return str_replace(array('''), array('\''), utf8_decode($str)); } function _bmc_newsletter_xls($headers, $data){ include_once('Excel.class.php'); $xls = new Excel('export'); $xls->home(); foreach($headers as $s){ $xls->label(_bmc_newsletter_clean_me_please($s)); $xls->right(); } $xls->down(); foreach ($data as $o) { $xls->home(); foreach($o as $s){ $xls->label(_bmc_newsletter_clean_me_please($s)); $xls->right(); } $xls->down(); } $xls->send(); } /** * * Gestion des dates * extraction * parsing * formatage * * */ global $MOIS, $MOIS_COURTS, $JOURS, $JOURS_COURTS; global $MOIS_EN, $MOIS_COURTS_EN, $JOURS_EN, $JOURS_COURTS_EN; $MOIS = array('', 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'); $MOIS_COURTS = array('', 'janv.', 'fév.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'); $JOURS = array('', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'); $JOURS_COURTS = array('', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.', 'dim.'); $MOIS_EN = array('', 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'); $MOIS_COURTS_EN = array('', 'jan.', 'feb.', 'mar', 'apr.', 'may', 'june', 'july', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.'); $JOURS_EN = array('', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'); $JOURS_COURTS_EN = array('', 'mon.', 'tue.', 'wed.', 'thu.', 'fri.', 'sat.', 'sun.'); global $language; if ($language->language == 'en-EN') { $MOIS = $MOIS_EN; $MOIS_COURTS = $MOIS_COURTS_EN; $JOURS = $JOURS_COURTS; $JOURS_COURTS = $JOURS_COURTS_EN; } //------------------------------------------------------------------------ // formatages des dates propres au types de noeuds et au contexte //------------------------------------------------------------------------ function bmc_formate_date_spectacle_session_datetime($session) { return bmc_formate_date_datetime($session['dates'][0]); } /** * formatage des dates pour la page spectacle */ function bmc_formate_dates_spectacle_page($session) { return bmc_formate_dates_spectacle_session_accueil($session); } /** * formatage des dates pour la page saison */ function bmc_formate_dates_spectacle_saison($session) { return bmc_formate_dates_spectacle_session_accueil($session); } /** * format la date pour les slides de la page d'accueil */ function bmc_formate_dates_spectacle_slide_accueil($session) { return bmc_formate_dates_spectacle_session_accueil($session); } function bmc_formate_dates_spectacle_session_accueil($session) { $dates = $session['dates']; $l = count($dates); if (!$l) { return ''; } $d0 = $dates[0]; $m0 = bmc_formate_date_mc($d0); $y0 = bmc_formate_date_a($d0); $return = bmc_formate_date_d($d0); if ($l > 1) { $d1 = $dates[$l - 1]; $m1 = bmc_formate_date_mc($d1); $y1 = bmc_formate_date_a($d1); if ($m1 != $m0) { $return .= ' ' . $m0; } if ($y1 != $y0) { $return .= ' ' . $y0; } $return .= ' > ' . bmc_formate_date_d($d1); $m0 = $m1; $y0 = $y1; } $return .= ' ' . $m0; $return .= ' ' . $y0; return $return; } function bmc_formate_dates_spectacle_session_tournee($data) { $tournee = $data['tournee']; foreach ($data['tournees'] as $d) { if ($tournee == bmc_sanitize_text($d['ville'])) { $dates = $d['dates']; break; } } $dates_sessions = array(); foreach ($dates as $date) { $dates_sessions[]['time'] = strtotime($date['datetime']); } $l = count($dates_sessions); if (!$l) { return ''; } $d0 = $dates_sessions[0]; $m0 = bmc_formate_date_mc($d0); $y0 = bmc_formate_date_a($d0); $return = bmc_formate_date_d($d0); if ($l > 1) { $d1 = $dates_sessions[$l - 1]; $m1 = bmc_formate_date_mc($d1); $y1 = bmc_formate_date_a($d1); if ($m1 != $m0) { $return .= ' ' . $m0; } if ($y1 != $y0) { $return .= ' ' . $y0; } $return .= ' > ' . bmc_formate_date_d($d1); $m0 = $m1; $y0 = $y1; } $return .= ' ' . $m0; $return .= ' ' . $y0; return $return; } function bmc_formate_date_actu_accueil($d) { global $MOIS; if ($surcharge = $d['surcharge']) { return $surcharge; } $d = $d['time']; return date('d', $d) . ' ' . $MOIS[date('n', $d)] . ' ' . date('Y', $d); } function bmc_formate_date_calendrier_accueil_jour($d = null) { return date('d', $d); } function bmc_formate_date_calendrier_accueil_mly($d = null) { global $MOIS; return $MOIS[date('n', $d)] . ' ' . date('y', $d); } function bmc_formate_date_calendrier_accueil_mc($d = null) { global $MOIS_COURTS; return $MOIS_COURTS[date('n', $d)]; } //------------------------------------------------------------------------ // fonctions génériques de formatage des dates //------------------------------------------------------------------------ /** * format de date jour court (sans mois) => Lun. 6 */ function bmc_formate_date_jc($d) { global $JOURS_COURTS; $d = $d['time']; return ucfirst($JOURS_COURTS[date('N', $d)]) . ' ' . date('d', $d); } /** * format de date mois long => Novembre */ function bmc_formate_date_ml($d) { global $MOIS; $d = $d['time']; return $MOIS[date('n', $d)]; } /** * format de date mois court => nov. */ function bmc_formate_date_a($d) { return date('Y', $d['time']); } /** * format de date mois court => nov. */ function bmc_formate_date_mc($d) { global $MOIS_COURTS; $d = $d['time']; return $MOIS_COURTS[date('n', $d)]; } /** * format de date mois long => Novembre */ function bmc_formate_date_d($d) { $d = $d['time']; return date('d', $d); } /** * format de date jour et mois long => Mercredi 20 Novembre */ function bmc_formate_date_jml($d) { global $MOIS; global $JOURS; $d = $d['time']; $date = ucfirst($JOURS[date('N', $d)]) . ' ' . date('j', $d) . ' ' . $MOIS[date('n', $d)]; return $date; } /** * format de date jour et mois long =>20 Novembre */ function bmc_formate_date_dml($d) { global $MOIS; global $JOURS; $d = $d['time']; $date = date('j', $d) . ' ' . $MOIS[date('n', $d)]; return $date; } /** * format de date jour et mois long => Mercredi 20 Novembre */ function bmc_formate_date_heure($d) { $d = $d['time']; $minutes = date('i', $d); if ($minutes == '00') { $minutes = ''; } $date = date('H', $d) . 'h' . $minutes; return $date; } /** * format de date pour l'attribut datetime des balises time */ function bmc_formate_date_datetime($d) { $d = $d['time']; return date('Y-m-d', $d); } //------------------------------------------------------------------------ // extraction et parsing //------------------------------------------------------------------------ /** * retourne la première session jouée en local */ function bmc_extract_session_spectacle($node) { $sessions = bmc_extract_sessions_spectacle($node); foreach ($sessions as $session) { if (!$session['tournee']) { return $session; } } } /** * retourne les sessions jouées en tournée uniquement */ function bmc_extract_sessions_spectacle_tournees($node) { $sessions = bmc_extract_sessions_spectacle($node); $tournee = array(); foreach ($sessions as $session) { if ($session['tournee']) { $tournee[] = $session; } } return $tournee; } /** * extraction des sessions de représentations d'un noeud spectacle * qu'elle fassent partie de la tournée ou des sessions jouées à MC */ function bmc_extract_sessions_spectacle($node) { $dates = array(); if (!count($node->field_session_representation)) { return $dates; } $eid_tab = array(); foreach ($node->field_session_representation['und'] as $eid) { $eid_tab[] = $eid['value']; } $e_tab = entity_load('field_collection_item', $eid_tab); foreach ($e_tab as $n => $e) { if (!$d = bmc_parse_dates_spectacle($e)) { continue; } $dates[] = $d; } return $dates; } /** * * conversion d'un field collection de représentation en tableau * @return array('time', 'date', 'lieu', 'surcharge') */ function bmc_parse_dates_spectacle($e) { if (!count($e->field_date)) { return; } $dates = array(); foreach ($e->field_date['und'] as $d) { $d = $d['value']; $dates[] = array( 'time' => strtotime($d), 'date' => $d, ); } return array( 'dates' => $dates, 'lieu' => @$e->field_lieu['und'][0]['safe_value'], 'ville' => @$e->field_ville['und'][0]['safe_value'], 'pays' => @$e->field_pays['und'][0]['safe_value'], 'tournee' => $e->field_tournee['und'][0]['value'] == 1, 'site_internet' => @$e->field_lien['und'][0]['safe_value'], 'periode_check' => $e->field_periode['und'][0]['value'], 'vignette' => dnk_get_image(@$e->field_visuel['und'][0], 'spectacle_vignette'), 'not_see_hour' => @$e->field_no_dates['und'][0]['value'], ); } /** * * récupération des données de date d'une actu * @return array('time', 'date', 'type', 'surcharge') */ function bmc_parse_date_actu($e) { if (!$d = @$e->field_date_jour['und'][0]['value']) { return; } return array( 'time' => strtotime($d), 'date' => $d, 'surcharge' => @$e->field_datetexte['und'][0]['safe_value'], ); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- /** * extraction des médias pour un diaporama (field collection Médias) */ function bmc_extract_diaporama($node){ $medias = array(); $e_tab = bmc_extract_fieldcollections($node->field_media); foreach($e_tab as $e){ if($media = bmc_extract_media_diaporama($e)){ $medias[] = $media; } } return $medias; } function bmc_extract_media_diaporama($e){ $type = $e->field_type_media['und'][0]['value']; $media = array( 'type' => $type, 'legende' => @$e->field_corps['und'][0]['safe_value'], 'visuel' => bmc_extract_cover($e), ); switch($type){ case 'video' : if(!count($e->field_url_page_video)){return;} $media['video'] = $e->field_url_page_video['und'][0]['safe_value']; break; } return $media; } //------------------------------------------------------------------------- //------------------------------------------------------------------------- /** * récup de la vignette de l'actualité * soit la vignette, soit la première image du diapo s'il en est */ function bmc_extract_vignette_actu($node){ if(!count($node->field_visuel)){ return bmc_extract_visuel_actualite($node); } return $node->field_visuel['und'][0]; } /** * récupération du visuel pour une remontée de slide * @$node est une entityref */ function bmc_extract_visuel_remontee_slide($node){ switch($node->type){ case 'spectacle' : return bmc_extract_visuel_spectacle($node); case 'actualite' : return bmc_extract_visuel_actualite($node); case 'page' : return bmc_extract_visuel_page($node); } return null; } /** * récup de la cover d'une actu */ function bmc_extract_visuel_actualite($node){ if(bmc_extract_visuel_spectacle($node)){ return bmc_extract_visuel_spectacle($node); } else{ $img = array( 'ancrage' => "MC", 'uri' => "public://default.jpg", 'width' => 480, 'height' => 344, 'alt' => "Ballets de Monte Carlo", ); return $img; } } /** * récup de la cover d'une page */ function bmc_extract_visuel_page($node){ return bmc_extract_cover($node); } /** * retourne la cover sous forme de tableau image augmenté (opacité et ancrage) à passer à dnk_get_image */ function bmc_extract_cover($e){ if(@$e->field_cover){ if(!count($e->field_cover)){ return; } $eid = $e->field_cover['und'][0]['value']; $e = entity_load('field_collection_item', array($eid)); $e = $e[$eid]; return bmc_extract_cover($e); } // le visuel n'a pas été rempli pour la cover if(!count($e->field_visuel)){ return null; $img = array( 'ancrage' => "MC", 'uri' => "public://default.jpg", 'width' => 1000, 'height' => 600, 'alt' => "Ballets de Monte Carlo", ); return $img; } $img = $e->field_visuel['und'][0]; $img['opacity'] = $e->field_opacite['und'][0]['value']; $img['ancrage'] = $e->field_ancrage['und'][0]['value']; return $img; } /** * retourne la première image des médias d'un spectacle */ function bmc_extract_visuel_spectacle($node){ if(count($node->field_media)){ // récup des médias du spectacle foreach($node->field_media['und'] as $o){ $eid = $o['value']; $e = entity_load('field_collection_item', array($eid)); $e = $e[$eid]; if($e->field_type_media['und'][0]['value'] == 'image'){ if (null == $img = bmc_extract_cover($e)){ continue; } return $img; } } } return bmc_extract_cover($node); }