$share){ if($share['link']){ echo ''.$nome.''; } else if($share['js']){ echo ''.$nome.''; } else if($share['link_mobile'] && indi_is_mobile()){ echo ''.$nome.''; } } */ $return = indi_share_links($target, $text); foreach($return as $k=>$v) $return[$k] = array('link'=>$v); $return["whatsapp"] = array( 'link_mobile' => "whatsapp://send?text=".$target//."&title=".$text."",//http://www.whatsapp.com/faq/en/android/28000012 ); $return["pinterest"] = array( 'js' => "var e=document.createElement('script');". "e.setAttribute('type','text/javascript');". "e.setAttribute('charset','UTF-8');". "e.setAttribute('src','http://assets.pinterest.com/js/pinmarklet.js?r='+Math.random()*99999999);". "document.body.appendChild(e);" ); return $return; } function tnxImage($title = ""){ global $DATI; //img inline: //data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAACVklEQVQ4jX3TTWicZRTF8d87kwkBoZNOLWkmiKSmVEgMlHGh0SzUNOPCmLXSjJqF+LFTXKgg3YjgUitdudEICq6EigaLxYJBqMuiNZKQRZNMxRkT2mKSed/rYiZ18KNnc+G5nMsD5/yTqOhWHybxtDAhDIHEusT3+AQX8ee+Iek6cASvCzW7haIDpUTpSHvT2GS7EXr3tiQ+xjvY6D4wgA/tJY8bGM2rvcjkNIcOdw78xsVFPjrL5uVUIb7GPOqioi8q3o/xpBVzUxErVyKyLP6lLItYvRJROxkxnrSi4kxU9ImKqTihGdNjEWu//Le5W2vLEdWxiBOaUTGVw5y9QtGzL7BZ5/Ilt9Vd9/Dcy+wViqj1CBOKpcTIKO++ycjdzJxia5udG/TewfFRlpc5NtKeDzxKfylxs/5Qj8yQUpkkodngai9L37DwKbOzLJ7njbc4+x7JDo89yYMPc7DM9fpg7tbXho8zPEp1lsknOFTi+Vc4fCeFAjMzXPudp+bpKdyy5eSsa66z3SQylr7lp0tkKRIiuHmDr76k/wCfL9C4RnOdnI386bKK67vjjt6beKRKvUF5gOFj3D9BK+VgkaFh5l9idYX6Gue/CD3pub9jrHZibLUi0jQibbVjS9P2W5ZGRBax+nNE9b79GE/uF+lMjCetqE1HrP5PF7KsvXtmer9IH0RFX/50WQs/yhuzvnLUhQs5uYT+Evk8uztsXuXcZ7z9Gr/+kCrEIl7FH90wDXZgmrNbKCqWEqXBDgsbbN0epn/ifKqD82AH5w2JJSzgu26c/wJTuWSSDd/LqwAAAABJRU5ErkJggg== return ''; } function tnxInfo($title = "Debug info qui"){ //img inline: //data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsSAAALEgHS3X78AAACVklEQVQ4jX3TTWicZRTF8d87kwkBoZNOLWkmiKSmVEgMlHGh0SzUNOPCmLXSjJqF+LFTXKgg3YjgUitdudEICq6EigaLxYJBqMuiNZKQRZNMxRkT2mKSed/rYiZ18KNnc+G5nMsD5/yTqOhWHybxtDAhDIHEusT3+AQX8ee+Iek6cASvCzW7haIDpUTpSHvT2GS7EXr3tiQ+xjvY6D4wgA/tJY8bGM2rvcjkNIcOdw78xsVFPjrL5uVUIb7GPOqioi8q3o/xpBVzUxErVyKyLP6lLItYvRJROxkxnrSi4kxU9ImKqTihGdNjEWu//Le5W2vLEdWxiBOaUTGVw5y9QtGzL7BZ5/Ilt9Vd9/Dcy+wViqj1CBOKpcTIKO++ycjdzJxia5udG/TewfFRlpc5NtKeDzxKfylxs/5Qj8yQUpkkodngai9L37DwKbOzLJ7njbc4+x7JDo89yYMPc7DM9fpg7tbXho8zPEp1lsknOFTi+Vc4fCeFAjMzXPudp+bpKdyy5eSsa66z3SQylr7lp0tkKRIiuHmDr76k/wCfL9C4RnOdnI386bKK67vjjt6beKRKvUF5gOFj3D9BK+VgkaFh5l9idYX6Gue/CD3pub9jrHZibLUi0jQibbVjS9P2W5ZGRBax+nNE9b79GE/uF+lMjCetqE1HrP5PF7KsvXtmer9IH0RFX/50WQs/yhuzvnLUhQs5uYT+Evk8uztsXuXcZ7z9Gr/+kCrEIl7FH90wDXZgmrNbKCqWEqXBDgsbbN0epn/ifKqD82AH5w2JJSzgu26c/wJTuWSSDd/LqwAAAABJRU5ErkJggg== if($GLOBALS['DATI']['chi_sono'] == 'noi') return tnxImage($title); else return ''; } function indiGoogleMaps($param){//indi_google_maps if(is_array($param)){ if($param['simulaJs']){ //il frame generato da js aveva queste impostazioni if(!$param['style']) $param['style'] = 'width:100%;height:100%;'; if($param['fluida']) $param['style'] = 'position:absolute;'.$param['style']; //questi sono i default che di solito mettevamo nel blocco mappa // if(!$param['titolo']) $param['titolo'] = "{nome_sito}"; // if(!$param['testo']) $param['testo'] = "{nome_sito|ej}
{indirizzo|ej}
{email|link(mailto:{email})}"; if(!isset($param['gps'])) $param['gps'] = $GLOBALS['DATI']['gps']; if(!isset($param['gps'])) $param['gps'] = $GLOBALS['DATI']['map_coordinate_gps']; if(!isset($param['gps']) && $GLOBALS['DATI']['map_google_lat'] && $GLOBALS['DATI']['map_google_lon']) $param['gps'] = $GLOBALS['DATI']['map_google_lat'].",".$GLOBALS['DATI']['map_google_lon']; if(!$param['zoom']) $param['zoom'] = $GLOBALS['DATI']['map_zoom']; if(!$param['zoom']) $param['zoom'] = $GLOBALS['DATI']['map_google_zoom']; if(!$param['zoom']) $param['zoom'] = 7; if(!$param['indirizzo']) $param['indirizzo'] = $GLOBALS['DATI']['indirizzo']; // if(!$param['statica']) $param['statica'] = 0; // if(!$param['aperta']) $param['aperta'] = 0; } if(!$param['q']){ if($param['google_placeId']) $q = "place_id:".$param['google_placeId'];//https://developers.google.com/places/place-id else if($param['gps']) $q = $param['gps']; else if($param['indirizzo']) $q = $param['indirizzo']; else if($param["indirizzo_to_gps"]) $q = $param['indirizzo_to_gps'];//compatibilità con vecchie mappe else trigger_error("Controllare nuova gestione google maps"); } else $q = $param['q']; } else $q = $param; return ''; } function indiGoogleMapsDirections($param){ if(!$param['style']) $param['style'] = 'width:100%;height:100%;'; if(!$param["mode"]) $param["mode"] = "driving"; if(!$param["maptype"]) $param["maptype"] = "roadmap"; $parametriMappa = []; if(!$param["origin"]){ return; } else { $parametriMappa[] = "origin=" . rawurlencode($param["origin"]); } if(!$param["destination"]){ return; } else { $parametriMappa[] = "destination=" . rawurlencode($param["destination"]); } if(is_array($param["waypoints"])){ $waipoints = []; foreach($param["waypoints"] as $waipoint) $waipoints[] = rawurlencode($waipoint); $parametriMappa[] = "waypoints=" . implode("|", $waipoints); } if($param["mode"]) $parametriMappa[] = "mode=" . rawurlencode($param["mode"]); if($param["maptype"]) $parametriMappa[] = "maptype=" . rawurlencode($param["maptype"]); $parametriMappa = implode("&", $parametriMappa); return ''; } function indiGoogleMapsGetRewies($googlePlaceId){ global $DATI, $LANG, $LANG3TO2; $mapsRewiews = []; if($DATI["google_maps_api_key_server_to_server"]){ $lingueRecupero = []; foreach($LANG as $codLingua => $nomeLingua) $lingueRecupero[$codLingua] = $LANG3TO2[$codLingua]; if($lingueRecupero){ foreach($lingueRecupero as $linguaSito => $linguaRecupero){ $url = 'https://maps.googleapis.com/maps/api/place/details/json?place_id=' . $googlePlaceId . '&fields=review&language=' . $linguaRecupero . '&key=' . $DATI["google_maps_api_key_server_to_server"]; // Effettua chiamata curl $placeDetailsRequest = curl_init(); curl_setopt($placeDetailsRequest, CURLOPT_URL, $url); curl_setopt($placeDetailsRequest, CURLOPT_RETURNTRANSFER, 1); $placeDetailsResponse = curl_exec($placeDetailsRequest); curl_close($placeDetailsRequest); if($placeDetailsResponse){ $recensioniRecuperate = json_decode($placeDetailsResponse, true); if($recensioniRecuperate["result"]["reviews"]) foreach($recensioniRecuperate["result"]["reviews"] as $recensione){ $review = []; $review["data"] = date("Y-m-d", $recensione["time"]); $review["is_visibile"] = 1; $review["valutazione"] = $recensione["rating"]; $review["testo"] = trim(preg_replace('/\s+/', ' ', $recensione["text"])); $review["autore"] = $recensione["author_name"]; $review["linguaSito"] = $linguaSito; $mapsRewiews[$linguaRecupero][] = $review; } } } } } return $mapsRewiews; } function indi_prefetch($link, $relType=''){ global $DATI; if($relType) $relType = ' '.$relType; else $relType = ''; //https://developer.mozilla.org/it/docs/Link_prefetching_FAQ //firefox: 17/10/2016 fa la chiamata, ma poi rispetta l'header Cache-Control, quindi solitamente quando si visita effettivamente la pagina fa di nuovo la richiesta //firefox: 3/11/2016 non fa più la chiamata //imposto quindi una cache diversa per la pagina in modo che venga cachata per 5 minuti $DATI['indi_cache_header'] = "cache_for_prefetch"; $DATI['head:'] = "VIS"; //chrome: va da dio $DATI['head:'] = "VIS"; } function indi_share_links($target=null, $text=null){ //sono tutti qui: https://simplesharebuttons.com/html-share-buttons/ if(is_null($text)) $text = $GLOBALS['DATI']['nome_sito']; $textUe = rawurlencode($text); if(is_null($target) && $GLOBALS['DATI']["share_link"]) $target = $GLOBALS['DATI']["share_link"]; if(is_null($target) && $GLOBALS['DATI']["share_url"]) $target = $GLOBALS['DATI']["share_url"]; if(is_null($target)) $target = genera_link_agg();; $targetUe = rawurlencode($target); return array( "buffer" => "https://bufferapp.com/add?url=".$targetUe."&text=".$textUe, "digg" => "http://www.digg.com/submit?url=".$targetUe."", "email" => "mailto:?Subject=".$textUe."&Body=".$targetUe."", "facebook" => "http://www.facebook.com/sharer.php?u=".$targetUe."", // "google" => "https://plus.google.com/share?url=".$targetUe."", "linkedin" => "http://www.linkedin.com/shareArticle?mini=true&url=".$targetUe."", "print" => "javascript:window.print()", "reddit" => "http://reddit.com/submit?url=".$targetUe."&title=".$textUe."", "stumbleupon" => "http://www.stumbleupon.com/submit?url=".$targetUe."&title=".$textUe."", "tumblr" => "http://www.tumblr.com/share/link?url=".$targetUe."&title=".$textUe."", "twitter" => "https://twitter.com/share?url=".$targetUe."&name=".$textUe, "vk" => "http://vkontakte.ru/share.php?url=".$targetUe."", "yummly" => "http://www.yummly.com/urb/verify?url=".$targetUe."&title=".$textUe."", "whatsapp" => whatsAppLink("", ($text?$text." ":"").$target), ); } /* ------------------- funzioni x BLOG --------------------- */ /** * Get either a Gravatar URL or complete image tag for a specified email address. * * @param string $email The email address * @param string $s Size in pixels, defaults to 80px [ 1 - 2048 ] * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ] * @param string $r Maximum rating (inclusive) [ g | pg | r | x ] * @param boole $img True to return a complete IMG tag False for just the URL * @param array $atts Optional, additional key/value attributes to include in the IMG tag * @return String containing either just a URL or a complete image tag * @source http://gravatar.com/site/implement/images/php/ */ function indi_get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = true, $atts = array() ) { $url = 'http://www.gravatar.com/avatar/'; $url .= md5( strtolower( trim( $email ) ) ); $url .= "?s=$s&d=$d&r=$r"; if ( $img ) { $url = ' $val ) $url .= ' ' . $key . '="' . $val . '"'; $url .= ' />'; } return $url; } function indi_pingomatic($title,$url,$debug=false) { $content=''.//'. ' weblogUpdates.ping'. ' '. ' '. ' '.$title.''. ' '. ' '. ' '.$url.''. ' '. ' '. ''; $headers="POST / HTTP/1.0\r\n". "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)\r\n". "Host: rpc.pingomatic.com\r\n". "Content-Type: text/xml\r\n". "Content-length: ".strlen($content); if ($debug) nl2br($headers); $request=$headers."\r\n\r\n".$content; $response = ""; $fs=fsockopen('rpc.pingomatic.com',80, $errno, $errstr); if ($fs) { indi_log("OK indi_pingomatic('$title','$url')"); fwrite ($fs, $request); while (!feof($fs)) $response .= fgets($fs); if ($debug) d_err($response); fclose ($fs); preg_match_all("/<(name|value|boolean|string)>(.*)<\/(name|value|boolean|string)>/U",$response,$ar, PREG_PATTERN_ORDER); for($i=0;$i ( $ar[2][1]==1 ? 'ko' : 'ok' ), 'msg'=>$ar[2][3] ); } else { indi_log("ERR indi_pingomatic('$title','$url')"); if ($debug) d_err($errstr." (".$errno.")"); return array('status'=>'ko', 'msg'=>$errstr." (".$errno.")"); } } /* ------------------- fine funzioni x BLOG --------------------- */ /* salva una paginaindi o un link generico HTML in pdf http://code.google.com/p/wkhtmltopdf/ http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf-0.9.9-doc.html es di conf: array('disable-smart-shrinking','user-style-sheet' => 'pdf.css',) IMPORTANTE: Sul server di Intercultura c'è una nuova libreria (0.12.5) installata direttamente su server diversa dal server web tnx per motivi di compatibilità con le lib ssl della debian più recente */ function indi_genera_pdf($pagina, $nomefile=NULL, $return="output" /* "save" "output-inline" per far aprire in browser */, $conf=NULL){ global $DATI,$CONF; //conf default $conf_base = array( 'disable-javascript', //disabilita js, velocizza molto e con i js spesso si ricevono errori ProtocolUnknownError che fanno saltare la creazione 'no-outline', 'margin-top' => 0, 'margin-right' => 0, 'margin-bottom' => 0, 'margin-left' => 0, "user-style-sheet" => $DATI["dir_lib"]."wkhtmltopdf/css.css" ); $conf = array_merge($conf_base, (array)$conf); //se non e' una pagina o la pagina e' nulla, prendo la pagina corrente //if(stristr($pagina,"http://") === false) $pagina = genera_link_email($pagina); //cecca 13/3/17 - se si richiedeva pdf di una pagina https cambiava l'url ... if(stristr($pagina,"http://") === false && stristr($pagina,"https://") === false) $pagina = genera_link_email($pagina); include_once($DATI["dir_lib"].'wkhtmltopdf/WkHtmlToPdf.php'); $pdf = new WkHtmlToPdf($conf); //if($page_conf) $pdf->setPageOptions($page_conf); $pdf->addPage($pagina); indi_log("indi_genera_pdf('$pagina','$nomefile','$return')"); if($return == "save"){ //salva il file nel percorso specificato $dest = $nomefile; } else{//if($return == "output" || $return == "output-inline"){ //salvo il file con nome random e faccio l' output del file stesso //genero nome di file random in indi/pdf/nomemd5.pdf //poi viene cancellato if(!is_dir($CONF['dir_indi']."pdf")) mkdir($CONF['dir_indi']."pdf"); $file_path = $CONF['dir_indi']."pdf/".md5($pagina).".pdf"; $dest = $file_path; } if(!$pdf->creaPdf($dest)){ $err = $pdf->getError(); // mailtnx("c@localhost", "Errore generazione pdf", print_r(array($err, $_REQUEST), true)); trigger_error($err); return false; } //salva il file nel percorso specificato if($return == "save"){ return $dest; } else{ $ok = indi_download_file($dest, $nomefile, ($return == "output-inline" ? "inline" : true), true); return $ok; } } /* http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltoimage_0.10.0_rc2-doc.html */ function indi_html_to_image($url,$nomefile=NULL,$options=NULL){ global $CONF; if(!$url) { d_err("indi_html_to_image: Devi fornire un indirizzo!","INDI"); return false; } if(!$nomefile or indi_above_dir($CONF["path_base"],dirname($nomefile)) == false) { d_err("indi_html_to_image:Errore di sicurezza nel percorso '$nomefile'","INDI"); return false; } //Parametri, faccio escape per sicurezza if(is_array($options)) { $options = array_map("escapeshellarg",$options); $options = " ".implode(" ",$options); } //Comando $command = $GLOBALS["CONF"]["dir_lib"]."wkhtmltopdf/wkhtmltoimage-amd64 --load-error-handling ignore"; $command = escapeshellcmd("$command ".escapeshellcmd($url)." ".escapeshellcmd($nomefile).$options); // Eseguo, uso questo metodo per avere il codice di ritorno del programma $descriptors=array( 1=>array('pipe','w'), 2=>array('pipe','w'), ); //echo $command; die; $process=proc_open($command, $descriptors, $pipes); if(is_resource($process)) { $stdout=stream_get_contents($pipes[1]); $stderr=stream_get_contents($pipes[2]); fclose($pipes[1]); fclose($pipes[2]); $result=proc_close($process); if($result!==0) { d_err("indi_html_to_image: Errore nell' esecuzione del comando '$command'","INDI"); return false; } } else { d_err("indi_html_to_image: Non posso eseguire '$command'","INDI"); return false; } //torno il nome return $nomefile; } /* estrae un blocco ==nome_blocco== da un testo */ function indi_estrai_blocco($nome_blocco,$html) { preg_match("/=+([$nome_blocco]+)=+/s",$html,$out); if($out[0]) $out = explode($out[0],$html); if($out[1]) $out = explode("==",$out[1]); return indi_trim_stringa(indi_trim_stringa(trim($out[0]),"
"),"
"); } function indi_checkbox($name, $label='', $extra_html=null, $value=1, $checked=null, $id=null){ if(is_null($checked)) $checked = $_REQUEST[$name] == $value; if(is_null($id)) $id = $name."Checkbox"; return ''.($label?'':''); } function indi_select($name, $values, $selected = null, $empty_value = "", $extra_html = null, $option_function = null){ if(!$option_function){ if(!function_exists("default_option_function")){ function default_option_function($display, $value = null){ $return .= ''; return $return; } } $option_function = default_option_function; } if($selected === null){ $selected = $_REQUEST[$name]; } if($empty_value !== false){ $new_values = array(''=>$empty_value); foreach($values as $k=>$v) $new_values[$k] = $v; $values = $new_values; } $return = '