up, 0 => down
var $ignore_account = TRUE;
var $standalone = FALSE;
function __construct(&$config,$dn,$parent)
{
$this->config = $config;
$this->parent = $parent;
/* Try to fetch logs for the given event (mac)
*/
$this->o_queue = new gosaSupportDaemon();
/* Load ldap object if given
and use this macAddress.
*/
if(is_object($parent) && $dn != "" && $dn != "new"){
plugin::plugin($config,$dn,$parent);
}
/* Get correct macAddress.
Check if an event is given or a ldap object.
*/
if(is_array($this->parent) && isset($this->parent['MACADDRESS'])){
$this->mac = $this->parent['MACADDRESS'];
$this->standalone = TRUE;
}elseif(isset($parent->attrs['macAddress'][0])){
$this->mac = $parent->attrs['macAddress'][0];
$this->standalone = FALSE;
}
/* Query for log files
*/
$res = $this->o_queue->get_log_info_for_mac($this->mac);
if($this->o_queue->is_configured() && $this->o_queue->is_error()){
msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
}
/* Check if there is at least one log file
*/
if(!isset($res[$this->mac]) || !is_array($res[$this->mac])){
$this->logs = array();
}else{
$this->selected_date = key($res[$this->mac]);
$this->logs = $res;
}
}
function execute()
{
$smarty = get_smarty();
$smarty->assign("logs",$this->logs);
$smarty->assign("logs_available", isset($this->logs[$this->mac]));
$smarty->assign("mac",$this->mac);
$smarty->assign("selected_file",$this->selected_file);
$smarty->assign("selected_date",$this->selected_date);
$smarty->assign("log_file", $this->get_log($this->mac,$this->selected_date,$this->selected_file));
$smarty->assign("standalone",$this->standalone);
if (isset($this->logs[$this->mac])){
$date = date("d.m.Y H:i:s",$this->logs[$this->mac][$this->selected_date]['REAL_DATE']);
}
$file = $this->selected_file;
$smarty->assign("selected_log",_("none"));
if(!empty($file)){
$smarty->assign("selected_log",$file.", ".$date);
}
$divlist = new divlist("log_view");
/* Create sort direction images
*/
if($this->sort_dir){
$img = "";
}else{
$img = "sort_by == "file"){
$img1 = $img;
$img2 = "";
}else{
$img1 = "";
$img2 = $img;
}
/* Create list header
*/
$divlist->SetHeader(array(
array("string"=>""._("File")." ".$img1."",
"attach"=>"width='200px;'"),
array("string"=>""._("Date")." ".$img2."",
"attach" => "style='border-right:none;'"),
));
/* Create divlist list
*/
$divlist->SetEntriesPerPage(0);
$divlist->SetHeight(150);
/* Create sortable array
*/
$link = "%str%";
$to_add = array();
$sort_by = $this->sort_by;
foreach($this->logs as $mac => $times){
foreach($times as $time => $data){
$rtime = $data['REAL_DATE'];
foreach($data['FILES'] as $file){
$highlight = "";
if($file == $this->selected_file && $time == $this->selected_date && $mac == $this->mac){
$highlight = "background-color:#CCCCCC";
}
$use_link = preg_replace(array("/%mac%/","/%time%/","/%file%/"),array($mac,$time,$file),$link);
$to_add[$$sort_by.$file.$time] = array(
array("string" => preg_replace("/%str%/",$file,$use_link),
"attach" => "style='width:200px; $highlight'"),
array("string" => preg_replace("/%str%/",date("d.m.Y H:i:s",$rtime),$use_link),
"attach" => "style='border-right:none; $highlight'"),
);
}
}
}
/* Sort entries
*/
if(!$this->sort_dir){
uksort($to_add, "strnatcasecmp");
}else{
uksort($to_add, "strnatcasecmp");
$to_add = array_reverse($to_add);
}
/* Append entries to list
*/
foreach($to_add as $entry){
$divlist->AddEntry($entry);
}
$smarty->assign("ACL",preg_match("/r/",$this->getacl("")));
$smarty->assign("divlist",$divlist->DrawList());
return($smarty->fetch(get_template_path('log_view.tpl', TRUE,dirname(__FILE__))));
}
function get_log($mac,$date,$file)
{
$res = $this->o_queue->get_log_file($mac,$date,$file);
if($this->o_queue->is_configured() && $this->o_queue->is_error()){
msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG);
}
$res = nl2br(htmlentities($res));
return($res);
}
function save_object()
{
foreach(array("time"=>"selected_date","file"=>"selected_file") as $attr => $dest){
if(isset($_GET[$attr])){
$this->$dest = $_GET[$attr];
}
}
if(isset($_GET['sort_by']) && in_array($_GET['sort_by'],array("file","time"))){
if($_GET['sort_by'] == $this->sort_by){
$this->sort_dir = !$this->sort_dir;
}
$this->sort_by = $_GET['sort_by'];
}
}
/* Return plugin informations for acl handling */
static function plInfo()
{
return (array(
"plShortName" => _("Log view"),
"plDescription" => _("GOto log view"),
"plSelfModify" => FALSE,
"plDepends" => array(),
"plPriority" => 30,
"plSection" => array("administration"),
"plCategory" => array("workstation","server"),
"plProvidedAcls"=> array()
));
}
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>