<?php
  $vars=array(); if(file_exists("variable.php.ini")) include("variable.php.ini"); else include("standard.php.ini");
  $references=array(); if(file_exists("varreferences.php.ini")) include("varreferences.php.ini");
  $feeds=array(); if(file_exists("varfeeds.php.ini")) include("varfeeds.php.ini");
  $accounts=array(); if(file_exists("varmails.php.ini")) include("varmails.php.ini");
  include("functions.php");
  if(phpversion()<5) {
    print "<div class='js'>".t("There's no newswall without PHP5 - please configure the server...")."</div>";
    exit;
  }
  
  $allfeeds=array();
  $allsorts=array();
  $nowload=time();
  if($vars["fade"]==0)
    $fadeload=0;
  else
    $fadeload=($vars["fade"] * 60 * 60);
  if($vars["highlight"]==0)
    $lastload=0;
  else
    $lastload=$nowload-($vars["highlight"] * 60 * 60);
  if($vars["range"]==0)
    $maxload=0;
  else
    $maxload=$nowload-($vars["range"] * 60 * 60 * 24);
  if($vars["feedsite"]=="right-left")
    {$onRclick="onclick";$onLclick="oncontextmenu";}
  else
    {$onLclick="onclick";$onRclick="oncontextmenu";}
// -- E-MAIL -------------------------------------------------------------------
  $count=0;
  foreach($accounts as $acc):
    $count--;
    $accdata=explode(":",$acc);
    $accdate="";
    if($accdata[3]=="imap")
      $ServerName = "{".$accdata[0]."/imap:143}INBOX"; // For a IMAP connection    (PORT 143)
    else
      $ServerName = "{".$accdata[0]."/pop3:110}INBOX"; // For a POP3 connection    (PORT 110)
    if($accdata[0]=="imap.gmail.com")
      $ServerName = "{".$accdata[0].":993/imap/ssl/novalidate-cert}INBOX"; // gmail IMAP
    if($accdata[0]=="pop.gmail.com")
      $ServerName = "{".$accdata[0].":995/pop3/ssl/novalidate-cert}INBOX"; // gmail POP3
    $UserName = $accdata[1];
    $PassWord = $accdata[2];
    $error="";
    $mbox = imap_open($ServerName, $UserName,$PassWord) or $mbox = imap_open(ereg_replace("}INBOX","/notls}INBOX",$ServerName), $UserName,$PassWord) or $error="true";
    if($error=="true") {
//      print "<div class='js'>".t("Error: Can not connect to e-mail server")."</div>";
//      exit; // stop newswall to report error information
   		array_push($allfeeds,array("title"=>$accdata[1],"info"=>$accdata[0],"descnohtml"=>t("Error: Can not connect to e-mail server"),"type"=>"email","icon"=>"email"));
   	  array_push($allsorts,0);
    } else {
      if ($hdr = imap_check($mbox)) {
     	  $msgCount = $hdr->Nmsgs;
      } else {
     	  $msgCount = 0;
      }
      $MN=$msgCount;
      if($MN>$vars["maxitems"] AND $vars["maxitems"]!=0) $MN=$vars["maxitems"];
      if($MN>0) {
        $overview=imap_fetch_overview($mbox,"1:$MN",0);
        $size=sizeof($overview);
        for($i=$size-1;$i>=0;$i--){
          $val=$overview[$i];
      	  $msg=$val->msgno;
          $from=$val->from;
            $fr2=ximap_utf8($from);
          if($fr2!="") $from=$fr2;
          $from=getname($from);
          $date=$val->date;
      	  $subj=$val->subject;
            $sp2=ximap_utf8($subj);
          if($sp2!="") $subj=$sp2;
          if($accdate=="")$accdate=$date;
          $seen=$val->seen;
      		$itemRSS = array (
            'id'    => $msg,
      			'title' => $from,
      			'desc'  => $subj,
      			'date'  => $date,
            'type'  => "email",
            'icon'  => "email",
            'source'=> $count,
            'info'  => $accdata[0],
            'fav'   => "",
            'bid'   => "bid".$count."-".$msg,
      			);
          $itemRSS["date"]=strtotime($itemRSS["date"]);
          $itemRSS['titlenohtml']=trim(strip_tags($itemRSS['title']));
          $itemRSS['descnohtml']=trim(strip_tags($itemRSS['desc']));
          $titlecut=preg_replace("![^a-z0-9]+!","",strtolower($itemRSS['titlenohtml']));
          if(!empty($references[$titlecut]) AND file_exists("images/references/".$references[$titlecut])) {
            $itemRSS["image"]="images/references/".$references[$titlecut];
            if($_SESSION["panelpass"]==$vars["panelpass"] || empty($vars["panelpass"]))
              $itemRSS["right"]=' oncontextmenu="dropreference(\''.$titlecut.'\');return false;" ';
            if($itemRSS['titlenohtml']!="")
              $itemRSS["imagetitle"]=$itemRSS['titlenohtml'];
            else
              $itemRSS["imagetitle"]=$itemRSS['date'];
            $itemRSS['title']=$itemRSS['descnohtml'];
          }
          $_SESSION["bid"][$itemRSS["bid"]]=$itemRSS["titlenohtml"]."|".$itemRSS["descnohtml"]."|".date("d.m.Y",$itemRSS["date"])."|".$itemRSS["type"]."|".$itemRSS["info"];
      		array_push($allfeeds,$itemRSS);
      	  array_push($allsorts,$itemRSS["date"]);
        }
      }
  	}
    imap_close($mbox);
  endforeach;
// -- RSS-FEEDS ----------------------------------------------------------------
  define('MAGPIE_INPUT_ENCODING', 'UTF-8');
  define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
  define('MAGPIE_CACHE_AGE', $vars["reload"] * 60);
  require_once('magpierss/rss_fetch.inc');
  $countf=0;
  foreach($feeds as $onefeed):
    $memdate="";
    $doc = fetch_rss($onefeed);
    $feedinfo = array (
        'title' => $onefeed,
        'icon' => "rss",
    );
    if($doc->channel) {
      $feedinfo = array (
        'title' => $doc->channel['title'],
        'link'  => $doc->channel['link'],
        'desc'  => $doc->channel['description'],
        'sub'   => $doc->channel['subtitle'],
        'icon'  => "rss",
        'lbd'   => $doc->channel['lastbuilddate'],
        'upd'   => $doc->channel['updated'],
        'pud'   => $doc->channel['pubdate'],
        'pub'   => $doc->channel['published'],
      );
      if($feedinfo['title']=="")
        $feedinfo['title']=eregi_replace("^[a-z]+\://[www\.]*","",$feedinfo['link']);
      if($feedinfo['lbd']!="")
        $feedinfo["date"]=$feedinfo['lbd'];
      else if($feedinfo['upd']!="")
        $feedinfo["date"]=$feedinfo['upd'];
      else if($feedinfo['pud']!="")
        $feedinfo["date"]=$feedinfo['pud'];
      else if($feedinfo['pub']!="")
        $feedinfo["date"]=$feedinfo['pub'];
      $memdate=$feedinfo["date"];  // remember in case no individual date is available for the messages
      unset($feedinfo["date"]);
      if(!$feedinfo['desc']) $feedinfo['desc']=$feedinfo['sub'];
    }
    if($memdate!="" AND strtotime($memdate)<$maxload) {$countf++;continue;}
    $feedinfo['source']=$countf;
    $feedinfo['image']= $doc->image['url'];
    $urlparts=parse_url($onefeed);
    $urlbase=$urlparts["scheme"]."://".$urlparts["host"]."/favicon.ico";
    $urlsave="images/favicons/".$urlparts["host"]."-favicon.ico";
    if(file_exists($urlsave))
      $favicon=$urlsave;
    else
      if($feedinfo["image"]!="" AND $favicon=file_get_contents($feedinfo["image"])) {
        file_put_contents($urlsave,$favicon);
        $favicon=$urlsave;
      } else if($favicon=file_get_contents($urlbase)) {
        file_put_contents($urlsave,$favicon);
        $favicon=$urlsave;
      } else
      $favicon="";
    $count=0;
  	foreach ($doc->items as $node) {
  		$itemRSS = array (
        'id'    => $count,
  			'title' => $node['title'],
  			'desc'  => $node['description'],
  			'link'  => $node['link'],
  			'date'  => $node['pubdate'],
  			'dcdate'=> $node['dc']['date'],
        'lbd'   => $node['lastbuilddate'],
        'upd'   => $node['updated'],
        'pud'   => $node['pubdate'],
        'pub'   => $node['published'],
  			'cont'  => $node['content'],
  			'atom'  => $node['atom_content'],
  			'enurl' => $node['enclosure_url'],
  			'author'=> getname($node['author']),
        'type'  => "feed",
        'source'=> $countf,
        'info'  => $feedinfo['title'],
        'fav'   => $favicon,
  			'clink' => $feedinfo['link'],
        'bid'   => "bid".$countf."-".$count,
  		);
      if($itemRSS['date']=="")
        if($itemRSS['dcdate']!="")
          $itemRSS["date"]=$itemRSS['dcdate'];
        else if($itemRSS['lbd']!="")
          $itemRSS["date"]=$itemRSS['lbd'];
        else if($itemRSS['pud']!="")
          $itemRSS["date"]=$itemRSS['pud'];
        else if($itemRSS['pub']!="")
          $itemRSS["date"]=$itemRSS['pub'];
        else if($itemRSS['upd']!="")
          $itemRSS["date"]=$itemRSS['upd'];
        else if($feedinfo['date']!="")
          $itemRSS['date']=$feedinfo["date"];
      if($feedinfo['date']=="")
        $feedinfo['date']=$itemRSS['date'];
      if($feedinfo['date']=="")
        $feedinfo['date']=$memdate; // only if there's no date available
	    $itemRSS["date"]=strtotime($itemRSS["date"]);
      if($itemRSS["date"]<$maxload) {$count++;continue;}
      if($itemRSS['title']=="")
        $itemRSS['title']=$feedinfo['title'];
      if($itemRSS['title']=="")
        $itemRSS['title']=$feedinfo['author'];
      if($itemRSS['atom'])
        $itemRSS['desc']=$itemRSS['atom'];
      else if($itemRSS['cont'])
        $itemRSS['desc']=$itemRSS['cont'];
      if(eregi("^http.*\.(jpg|jpeg|gif|png)$",$itemRSS["link"]))
        $itemRSS["image"]=$itemRSS["link"];
      else if(eregi("^http.*\.(jpg|jpeg|gif|png)$",$itemRSS["enurl"]))
        $itemRSS["image"]=$itemRSS["enurl"];
      else if($itemRSS["desc"]){
// get image from description
        $pattern = '/(<img[^>]+src[\\s=\'"]+([^"\'>\\s]+\.(jpg|jpeg|gif|png)))/i';
        preg_match($pattern,$itemRSS["desc"],$result);
        if($result[2] and ereg("^http",$result[2]) and !eregi("tracker|doubleclick|feeds.feedburner.com|ads.pheedo.com|a.triggit.com|pixel.quant|browse.php|mf.gif|assoc-amazon",$result[2]))
           $itemRSS["image"]=$result[2];
      }
      if($itemRSS["image"]=="" AND $itemRSS["desc"]){
// get vimeo video from description
        $pattern = '/(vimeo\.com\/(moogaloop\.swf\?clip_id=|video\/)?([0-9]+))/i';
        preg_match($pattern,$itemRSS["desc"],$result);
        if($result[3]) {
          $hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/".$result[3].".php"));
          $itemRSS["image"]=$hash[0]['thumbnail_large'];
        }
        if($itemRSS["image"]==""){
// get youtube video from description
          $pattern = '/youtube\.com\/(watch\?v=|[^\/]+\/)([a-zA-Z0-9-_]+)/i';
          preg_match($pattern,$itemRSS["desc"],$result);
          if($result[2]) {
            $itemRSS["image"]="http://img.youtube.com/vi/".$result[2]."/0.jpg";
          }
        }
        if($itemRSS["image"]==""){
// get google video from description
          $pattern = '/video\.google\.com\/googleplayer\.swf\?docid=([^\'"][a-zA-Z0-9-_]+)[&\'"]/i';
          preg_match($pattern,$itemRSS["desc"],$result);
          if($result[1]) {
            $itemRSS["image"]="http://video.google.com/videofeed?docid=".$result[1];
          }
        }
      }
      if(eregi("smileys",$itemRSS["image"]) OR eregi("smilies",$itemRSS["image"])) $itemRSS["image"]="";
      if($itemRSS["image"]=="" AND $feedinfo["image"]) {
        $itemRSS["image"]=$feedinfo["image"];
      }
      
      if(eregi("twitter\.com",$onefeed)) {
        $parts=explode(": ",$itemRSS["title"]);
        if(count($parts)>1) {
          $itemRSS['author']=$parts[0];
          $itemRSS['title']=$parts[0];
          unset($parts[0]);
          $itemRSS['desc']=join(": ",$parts);
        }
        $feedinfo["icon"]="twitter";
      }
      if(eregi("flickr\.com",$onefeed)) {
        $feedinfo["icon"]="flickr";
      }
      if(eregi("facebook\.com",$onefeed)) {
        $feedinfo["icon"]="facebook";
        if(!empty($itemRSS['author']))
          $itemRSS['title']=$itemRSS['author'];
        else {
          if(preg_match("/>([^<]+)</",$itemRSS["desc"],$name))
            $itemRSS['title']=$name[1];
        }
      }
      
      $itemRSS['descnohtml']=trim(strip_tags($itemRSS['desc']));
      if($itemRSS["image"]!="" AND $itemRSS["title"]!="" AND $itemRSS['descnohtml']!="") {
        $itemRSS["imagetitle"]=$itemRSS['descnohtml'];
      } else if($itemRSS['author']!="")
        $itemRSS["imagetitle"]=$itemRSS['author'];
      else if($itemRSS['descnohtml']!="")
        $itemRSS["imagetitle"]=$itemRSS['descnohtml'];
      else
        $itemRSS["imagetitle"]=$itemRSS['title'];
      if (strlen($itemRSS["imagetitle"]) > 150) {
        $itemRSS["imagetitle"] = substr($itemRSS["imagetitle"],0,149) ."...";
      }
      if($itemRSS["image"]=="") {
        $desccut=preg_replace("![^a-z0-9]+!","",strtolower(strip_tags($itemRSS['title'])));
        if(!empty($references[$desccut]) AND file_exists("images/references/".$references[$desccut])) {
          $itemRSS["image"]="images/references/".$references[$desccut];
          if($_SESSION["panelpass"]==$vars["panelpass"] || empty($vars["panelpass"]))
            $itemRSS["right"]=' oncontextmenu="dropreference(\''.$desccut.'\');return false;" ';
          unset($itemRSS['title']);
        }
      }
      $itemRSS["icon"]=$feedinfo["icon"];
      if($favicon=="") {
        if($favicon=file_get_contents('images/icons/'.$feedinfo["icon"].'.png')) {
          file_put_contents($urlsave,$favicon);
          $favicon=$urlsave;
          $itemRSS["fav"]=$urlsave;
        }
      }
      $_SESSION["bid"][$itemRSS["bid"]]=$node["title"]."|".$itemRSS["title"]."|".$itemRSS["atom"]."|".$itemRSS["cont"]."|".$itemRSS["descnohtml"]."|".date("d.m.Y",$itemRSS["date"])."|".$itemRSS["type"]."|".$itemRSS["info"]."|".$itemRSS["author"]."|".$itemRSS["link"]."|".$node['description'];
  		array_push($allfeeds,$itemRSS);
  	  array_push($allsorts,$itemRSS["date"]);
      $count++;
  	  if($count==$vars["maxitems"]) break;
  	}
  	$countf++;
  endforeach;
  array_multisort($allsorts,SORT_DESC,$allfeeds);
  $count=0;
  $bing=0;
  if($allfeeds):
  echo'
  <div class="box"><div class="stripe">
    <ul>
';
  foreach ($allfeeds as $feeditem) {
      $extraclass="";
      $titleclass="";
      $context=" ";
      $hstyle="";
      $cstyle="";
      if($feeditem["title"]) $lstitle=$feeditem["title"]; else
      if($feeditem["info"]) $lstitle=$feeditem["info"]; else
      if($feeditem["author"]) $lstitle=$feeditem["author"]; else
      $lstitle="";
      if($feeditem["source"]<0)
        $click="onclick"; else $click=$onLclick;
      $directlink=$feeditem["link"];
      if($feeditem["icon"]=="facebook" OR $feeditem["icon"]=="twitter") {
        $click="onclick";
        $directlink="";
      }
      if($directlink!="")
        $context=' '.$onRclick.'="loadsite(\''.$feeditem["link"].'\',\''.htmlspecialchars(str_replace("\n"," ",addslashes($lstitle)),ENT_QUOTES).'\');return false;" ';
      if($fadeload==0) $extraclass="";
      else if($feeditem['date']<($nowload-$fadeload)) $extraclass=" l24";
      else if($feeditem['date']<($nowload-$fadeload/2)) $extraclass=" l12";
      $extraclass=" class='".$feeditem["icon"].$extraclass."'";
      if($feeditem["image"]):
        if(strlen($feeditem["title"])>0 AND strlen($feeditem["title"])<15 AND $count!=0 AND $feeditem["icon"]!="email" AND $feeditem["icon"]!="facebook" AND ($count+1)<count($allfeeds)) {
/* --- message with full size header image --- */
          $imagetitle=trim($feeditem["title"]." ".$feeditem["descnohtml"]);
          if (strlen($imagetitle) > 150)
            $imagetitle = str_replace("\"","'",substr($imagetitle,0,149) ."...");
          echo'
          <li'.$extraclass.' id="'.$feeditem["bid"].'">
            <div class="head double"><a ';
          if($feeditem["link"]) echo'target="_blank" href="'.$feeditem["link"].'" ';
          echo $click.'="loadrss('.$feeditem["source"].','.$feeditem["id"].');return false;"'.$context.'><img src="'.$feeditem["image"].'" class="headimg hand" xtitle="<img src=\''.$feeditem["image"].'\' class=\'titimg\'><br>'.$imagetitle.'" alt=""></a></div>
            <div class="content" style="display:none;"></div>
            <a class="head transparent" href="'.$feeditem["image"].'" rel="prettyPhoto[\'gal\']" title="<img src=\''.$feeditem["image"].'\' class=\'titimg\'><br>'.str_replace("\"","'",$feeditem["imagetitle"]).'"></a>
    ';
        } else {
/* --- message with half size header image --- */
          echo'
          <li'.$extraclass.' id="'.$feeditem["bid"].'">
            <div class="head" '.$hstyle.'><a href="'.$feeditem["image"].'" rel="prettyPhoto[\'gal\']" title="<img src=\''.$feeditem["image"].'\' class=\'titimg\'><br>'.str_replace("\"","'",$feeditem["imagetitle"]).'"><img src="'.$feeditem["image"].'" class="headimg" alt="" '.$feeditem["right"].'></a></div>';
          if($feeditem["title"]!="") {
            $titleclass="title";
            $feeditem["descnohtml"]=$feeditem["title"];
          } else {
            $titleclass="";
            if($feeditem["descnohtml"]=="") $feeditem["descnohtml"]=t("more...");
          }
          if($feeditem["descnohtml"]==t("more...") && preg_match("/youtube\.com/\?watch/",$feeditem["link"])) $context.=' rel="prettyPhoto"';
          echo'
          <div class="content" '.$cstyle.'><a ';
          if($feeditem["link"]) echo'target="_blank" href="'.$feeditem["link"].'" ';
          echo $click.'="loadrss('.$feeditem["source"].','.$feeditem["id"].');return false;"'.$context.'><div class="text '.$titleclass.'">'.$feeditem["descnohtml"].'</div></a></div>
    ';
        }
      else:
/* --- message with title and text --- */
        $refcut=preg_replace("![^a-z0-9]+!","",strtolower(strip_tags($feeditem['title'])));
//        if($_SESSION["panelpass"]==$vars["panelpass"] || empty($vars["panelpass"])) /* add this line to hide tooltip if not logged in */
        $onclick='onclick="setreference(\''.$refcut.'\');" title="'.t("Link this title to an image").'"';
        if($feeditem["descnohtml"]==t("Error: Can not connect to e-mail server")) {
          $onclick="";
        } else if($feeditem["descnohtml"]=="") {
          $feeditem["descnohtml"]=t("more...");
//          $feeditem["descpreview"]="";
        } else {
//          $feeditem["descpreview"]=" title=\"".$feeditem["descnohtml"]."\"";
        }
        if($feeditem["descnohtml"]==t("more...") && preg_match("/youtube\.com/\?watch/",$feeditem["link"])) $context.=' rel="prettyPhoto"';
        echo'
        <li'.$extraclass.' id="'.$feeditem["bid"].'">
          <div class="head"><div class="text title" '.$onclick.'>'.$feeditem['title'].'</div></div>
          <div class="content"><a ';
        if($feeditem["link"]) echo'target="_blank" href="'.$feeditem["link"].'" ';
        echo $click.'="loadrss('.$feeditem["source"].','.$feeditem["id"].');return false;"'.$context.$feeditem["descpreview"].'><div class="text">'.$feeditem["descnohtml"].'</div></a></div>
  ';
      endif;
      if($lastload<$feeditem['date'] AND $lastload!=0) {
        $prozent=($feeditem['date']-$lastload)/($nowload-$lastload)*10;
        $opa='opacity:'.($prozent*.1).';-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity='.(10*$prozent).')";filter:alpha(opacity='.(10*$prozent).');';
        echo'<div class="new" style=\''.$opa.'\'></div>';
      }
      if($feeditem['date']>=$nowload-($vars["reload"] * 60)) $bing=1;
      $miniLclick="";
      $miniRclick="";
      if($feeditem['icon']!="email" AND $feeditem['icon']!="facebook" AND $feeditem['icon']!="twitter")
      $miniLclick='onclick="loadsite(\''.$feeditem['clink'].'\',\''.addslashes($feeditem["info"]).'\');"';
      if($feeditem['icon']!="email")
        $miniRclick='oncontextmenu="$.prettyPhoto.open(\'set_share.php?vartitle='.rawurlencode($lstitle).'&varurl='.rawurlencode($feeditem['link']).'&varencode=true&iframe=true&width=420&height=50\',\''.t("Share").'\',\'\');return false;"';
      $favtitle=str_replace("\"","'",$feeditem["info"]);
      if($miniRclick!="") $favtitle.=" | ".t("Share");
      if($feeditem['fav']!="")
        echo'<img src="'.$feeditem["fav"].'" alt="" title="'.$favtitle.'" class="icon" '.$miniLclick.' '.$miniRclick.'>';
      else
        echo'<img src="images/icons/'.$feeditem["icon"].'.png" alt="" title="'.$favtitle.'" class="icon" '.$miniLclick.' '.$miniRclick.'>';
      echo'</li>';
      $count++;
 }
  echo'
    </ul>
  </div></div>
';
  endif;
//  }
  if($bing==1) echo'<audio src="bing.ogg" autoplay></audio>';
?> 
  |