+ // --------- Daily (all links form a specific day) ----------------------
+ if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=daily'))
+ {
+ $day=Date('Ymd',strtotime('-1 day')); // Yesterday, in format YYYYMMDD.
+ if (isset($_GET['day'])) $day=$_GET['day'];
+
+ $days = $LINKSDB->days();
+ $i = array_search($day,$days);
+ if ($i==false) { $i=count($days)-1; $day=$days[$i]; }
+ $previousday='';
+ $nextday='';
+ if ($i!==false)
+ {
+ if ($i>1) $previousday=$days[$i-1];
+ if ($i<count($days)-1) $nextday=$days[$i+1];
+ }
+
+ $linksToDisplay=$LINKSDB->filterDay($day);
+ // We pre-format some fields for proper output.
+ foreach($linksToDisplay as $key=>$link)
+ {
+ $linksToDisplay[$key]['taglist']=explode(' ',$link['tags']);
+ $linksToDisplay[$key]['formatedDescription']=nl2br(keepMultipleSpaces(text2clickable(htmlspecialchars($link['description']))));
+ $linksToDisplay[$key]['thumbnail'] = thumbnail($link['url']);
+ }
+
+ /* We need to spread the articles on 3 columns.
+ I did not want to use a javascript lib like http://masonry.desandro.com/
+ so I manually spread entries with a simple method: I roughly evaluate the
+ height of a div according to title and description length.
+ */
+ $columns=array(array(),array(),array()); // Entries to display, for each column.
+ $fill=array(0,0,0); // Rough estimate of columns fill.
+ foreach($linksToDisplay as $key=>$link)
+ {
+ // Roughly estimate length of entry (by counting characters)
+ // Title: 30 chars = 1 line. 1 line is 30 pixels height.
+ // Description: 836 characters gives roughly 342 pixel height.
+ // This is not perfect, but it's usually ok.
+ $length=strlen($link['title'])+(342*strlen($link['description']))/836;
+ if ($link['thumbnail']) $length +=100; // 1 thumbnails roughly takes 100 pixels height.
+ // Then put in column which is the less filled:
+ $smallest=min($fill); // find smallest value in array.
+ $index=array_search($smallest,$fill); // find index of this smallest value.
+ array_push($columns[$index],$link); // Put entry in this column.
+ $fill[$index]+=$length;
+ }
+ $PAGE = new pageBuilder;
+ $PAGE->assign('linksToDisplay',$linksToDisplay);
+ $PAGE->assign('col1',$columns[0]);
+ $PAGE->assign('col2',$columns[1]);
+ $PAGE->assign('col3',$columns[2]);
+ $PAGE->assign('day',utf8_encode(strftime('%A %d, %B %Y',linkdate2timestamp($day.'_000000'))));
+ $PAGE->assign('previousday',$previousday);
+ $PAGE->assign('nextday',$nextday);
+ $PAGE->renderPage('daily');
+ exit;
+ }
+