'key',
'label'=>'string',
'slug'=>'string',
'report'=>'int',
'type' => 'string',
'default' => 'string',
'datasource' => 'longstring',
'sort' => 'int'
);
public static function getMetaTerms(){
global $myUser;
return array(
'date.year' => array('value' => date('Y') ,'description' => 'Année courante'),
'date.month' => array('value' => date('m'),'description' => 'Mois courant'),
'date.day' => array('value' => date('d'),'description' => 'Jour courant'),
'date.hour' => array('value' => date('H'),'description' => 'heure courante'),
'date.minut' => array('value' => date('i'),'description' => 'Minutes courantes'),
'date.second' => array('value' => date('s'),'description' => 'Secondes courantes'),
'user.login' => array('value' => $myUser->login,'description' => 'Identifiant utilisateur courant')
);
}
//Vérification des acces sur le widget courant ou sur le rapport du widget courant
public function check_access($crud,$user = null){
global $myUser,$myFirm;
if(!isset($user)) $user = $myUser;
//pour avoir 'lacces, l'utilisateur doit être le créateur OU avoir access au rapport OU avoir acces au widget
return $user->login == $this->creator ||
$user->can('statistic_report',$crud,$this->report) ||
$user->can('statistic_filter',$crud,$this->id);
}
public function toHtml(){
$readony = $this->check_access('edit') ? '': ' readonly="readonly" ';
$html = '';
$default = $this->default;
$meta = self::getMetaTerms();
$default = preg_replace_callback('|{{(.*)([\-\+]*)([0-9]*)}}|U', function($matches) use($meta) {
$t = $matches[0];
if(isset($meta[$matches[1]])) $t = $meta[$matches[1]]['value'];
if(!empty($matches[2]) && !empty($matches[3])){
if($matches[2]=='+') $t+=$matches[3];
if($matches[2]=='-') $t-=$matches[3];
}
return $t;
}, $default);
switch($this->type){
case 'list' :
$html .= '';
break;
case 'date' :
$default = explode('/',$default);
//s'assure que les mois/jours sont sur deux nombres
foreach ($default as $i=>$value) {
if( ($i==0 || $i==1) && strlen($value)==1 ) $default[$i] = str_pad($value, 2,'0',STR_PAD_LEFT);
}
$default = implode('/',$default);
$html .= '';
break;
case 'hour' :
$html .= '';
break;
case 'user' :
$html .= '';
break;
case 'year' :
$html .= '';
break;
case 'month' :
$months = array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
$html .= '';
break;
case 'number' :
$html .= '';
break;
case 'boolean' :
$html .= '';
break;
default :
$html .= '';
break;
}
return $html;
}
public function getSlug(){
return slugify($this->label);
}
public static function types(){
return array(
'text' => array('label'=>'Texte','datasource'=>false),
'list' => array('label'=>'Liste','datasource'=>true),
'date' => array('label'=>'Date','placeholder'=>'jj/mm/aaaaa','datasource'=>false),
'hour' => array('label'=>'Heure','placeholder'=>'08:00','datasource'=>false),
'user' => array('label'=>'Utilisateur','placeholder'=>'login.utilisateur','datasource'=>false),
'number' => array('label'=>'Nombre','placeholder'=>'ex: 12','datasource'=>false),
'year' => array('label'=>'Année','placeholder'=>'ex: 2009','datasource'=>false),
'month' => array('label'=>'Mois','placeholder'=>'ex: 01','datasource'=>false),
'boolean' => array('label'=>'Vrai/Faux','placeholder'=>'0 ou 1','datasource'=>false),
);
}
}
?>