Select Git revision
application_controller.rb
-
David Beniamine authoredDavid Beniamine authored
functions.php 5.66 KiB
<?php
/*
Custom theme functions
Note: we recommend you prefix all your functions to avoid any naming
collisions or wrap your functions with if function_exists braces.
*/
function numeral($number, $hideIfOne = false) {
if($hideIfOne === true and $number == 1) {
return '';
}
$ext = $number == 1 ? 'er' : 'ème';
return $number . $ext;
}
function count_words($str) {
return count(preg_split('/\s+/', strip_tags($str), null, PREG_SPLIT_NO_EMPTY));
}
function pluralise($amount, $str, $alt = '') {
return intval($amount) === 1 ? $str : $str . ($alt !== '' ? $alt : 's');
}
function relative_time($date) {
if(is_numeric($date)) $date = '@' . $date;
$user_timezone = new DateTimeZone(Config::app('timezone'));
$date = new DateTime($date, $user_timezone);
// get current date in user timezone
$now = new DateTime('now', $user_timezone);
$elapsed = $now->format('U') - $date->format('U');
if($elapsed <= 1) {
return 'Just now';
}
$times = array(
31104000 => 'an',
2592000 => 'mois',
604800 => 'semaine',
86400 => 'jour',
3600 => 'heure',
60 => 'minute',
1 => 'seconde'
);
foreach($times as $seconds => $title) {
$rounded = $elapsed / $seconds;
if($rounded > 1) {
$rounded = round($rounded);
return 'il y a ' . $rounded . ' ' . pluralise($rounded, $title);
}
}
}
function html_meta($key) {
$output = html_entity_decode(site_meta($key));
echo $output;
}
function social_logo($network) {
$img=theme_url("img/$network.png");
return "<img height=\"20\" width=\"20\" src=\"$img\" alt=\"$network/\"/>";
}
function social_account($network) {
if ($network == "framasphere"){
return site_meta($network.'_id', '');
}
return site_meta($network, '');
}
function social_list($properties) {
$NETWORKS_URLS = array (
'mail' => 'mailto:',
'github' => 'https://github.com/',
'framasphere' => 'https://framasphere.org/people/',
'mastodon' => 'https://framapiaf.org/',
'facebook' => 'https://facebook.com/',
'twitter' => 'https://twitter.com/',
);
echo "<ul ".$properties.">";
foreach ($NETWORKS_URLS as $network => $network_url){
if(site_meta($network, '')){
echo '<li><a href="'.$network_url.social_account($network).'">'.
social_logo($network).' '.site_meta($network, '').'</a></li>';
}
}
echo "</ul>";
}
function total_articles() {
return Post::where(Base::table('posts.status'), '=', 'published')->count();
}
function article_img_url($slug){
return '/img/blog/'.$slug;
}
function article_img_ext($slug){
$extensions = array( "png", "jpg", "jpeg", "gif" );
foreach($extensions as $ext){
foreach(array($ext, strtoupper($ext)) as $e){
if (file_exists('.'.article_img_url($slug).'.'.$e)){
return $e;
}
}
}
return "";
}
function article_img($slug){
$ext = article_img_ext($slug);
if($ext != ""){
echo '<img style="max-width:300px;max-height:200px" src="'.article_img_url($slug).'.'.$ext.'" />';
}
}
function print_item($item, $class){
echo '<li class="'.$class.'">';
echo '<a href="'.menu_url($item).'" title="'.menu_title($item).'">';
echo menu_name($item).' </a></li>';
}
function build_menu($parent, $tree){
foreach($tree[$parent] as $i => $item){
$class=menu_active($item)&&$parent==0?'active':'';
if(array_key_exists($item->id, $tree)){
echo '<li class="dropdown '.$class.'"><a class="dropdown-toggle" data-toggle="dropdown" href="#">'.menu_name($item).'<span class="caret"></span></a>';
echo '<ul class="dropdown-menu">';
build_menu($item->id, $tree);
echo '</ul>';
echo '</li>';
}else{
if(menu_name($item) == "Blog"){
echo '<li class="dropdown '.$class.'"><a class="dropdown-toggle" data-toggle="dropdown" href="#">'.menu_name($item).'<span class="caret"></span></a>';
echo '<ul class="dropdown-menu">';
echo '<li><a href="'.menu_url($item).'" title="Tous les articles">';
echo 'Tous les articles </a></li>';
while(categories()){
if(category_count() > 0 ){
echo '<li><a href="'.category_url().'" title="'.category_title().'">';
echo category_title().' </a></li>';
}
}
echo '</ul>';
echo '</li>';
}else{
print_item($item, $class);
}
}
}
}
function menu_tree(){
$tree=array();
while(menu_items()){
$item=Registry::get('menu_item');
$parent=$item->parent;
if(!array_key_exists($parent, $tree)){
$tree[$parent] = array();
}
array_push($tree[$parent], $item);
}
return build_menu(0, $tree);
}
function og_headers(){
if(article_title() == ""){
$title=page_title();
$type="website";
$url=e(current_url());
$img_url=theme_url('img/logo.png');
$description=page_description();
}else{
$title=article_title();
$type="article";
$url=e(article_url());
$img_url=article_img_url(article_slug()).'.'.article_img_ext(article_slug());
$description=article_description();
}
print('<meta property="og:title" content="'.$title."\">\n");
print('<meta property="og:type" content="'.$type."\">\n");
print('<meta property="og:url" content="'.full_url($url)."\">\n");
print('<meta property="og:image" content="'.full_url($img_url)."\">\n");
print('<meta property="og:site_name" content="'.site_name()."\">\n");
print('<meta property="og:description" content="'.$description."\">\n");
}