i-Hmx

Untitled

Apr 30th, 2013
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.78 KB | None | 0 0
  1. <?php
  2. /*
  3.  * EXAMPLES
  4. dwho_report::push('error',array('error'));
  5. dwho_report::push('warning','warning');
  6. dwho_report::push('info','info');
  7. dwho_report::push('notice',array('notice',array('notice1','notice2')));
  8. dwho_report::push('debug','debug');
  9. */
  10.  
  11. abstract class dwho_report {
  12.     private static $error       = array();
  13.     private static $info        = array();
  14.     private static $warning     = array();
  15.     private static $notice      = array();
  16.     private static $debug       = array();
  17.     private static $_exclude    = array('callback');
  18.  
  19.     public static function push_generic($type,$data,$key=null) {
  20.         foreach ($data as $key => $value) {
  21.             if (in_array($value, self::$_exclude)) {
  22.                 self::push('error', "$key -> generic error");
  23.             } else {
  24.                 if (is_array($value)) {
  25.                     self::push_generic($type,$value);
  26.                 } else {
  27.                     self::push('error', "$key -> ".$value);
  28.                 }
  29.             }
  30.         }
  31.     }
  32.  
  33.     public static function push($type,$msg,$key=null) {
  34.         if (isset(self::${$type}) === true && ($self = &self::${$type}) === false) {
  35.             return(false);
  36.         } elseif (is_null($key) === true) {
  37.             if(is_array($msg) === true) {
  38.                 while($msg) {
  39.                     self::push($type,array_shift($msg));
  40.                 }
  41.             }
  42.             elseif(is_scalar($msg) === true
  43.             && in_array($msg,$self) === false) {
  44.                 array_push($self, $msg);
  45.             }
  46.         } elseif (is_null($key) === false) {
  47.             $keyencode = base64_encode($key);
  48.             if (isset($self[$keyencode]) === false) {
  49.                 $self[$keyencode] = array();
  50.             }
  51.             if(is_array($msg) === true) {
  52.                 while($msg) {
  53.                     self::push($type,array_shift($msg),$key);
  54.                 }
  55.             }
  56.             elseif(is_scalar($msg) === true
  57.             && in_array($msg,$self[$keyencode]) === false) {
  58.                 array_push($self[$keyencode], $msg);
  59.             }
  60.         }
  61.  
  62.         return(true);
  63.     }
  64.  
  65.     public static function get_message($type) {
  66.         if (($enable = dwho_constant('REPORT_'.strtoupper($type))) === null || ((bool) $enable) === false) {
  67.             return(false);
  68.         }
  69.  
  70.         if (isset(self::${$type}) === true && ($self = self::${$type}) === false && self::has($type) === false) {
  71.             return(false);
  72.         }
  73.  
  74.         $_I18N = &dwho_gct::get('dwho_i18n');
  75.         $_I18N->load_file('report/common');
  76.  
  77.         krsort($self);
  78.  
  79.         $return = '';
  80.         $return .= '<div id="report-xivo-'.$type.'" class="xivo-'.$type.' xivo-messages">';
  81.         $return .= '<ul>';
  82.         foreach($self as $k => $v)
  83.         {
  84.             if (is_string($k) === true
  85.             && is_array($v) === true)
  86.             {
  87.                 $key = base64_decode($k);
  88.                 $id = uniqid();
  89.                 $query = array();
  90.                 $query['type'] = $type;
  91.                 $query['bloc'] = $k;
  92.                 $query =  http_build_query($query, '', '&amp;');
  93.  
  94.                 $return .= '<a href="#" id="a-'.$id.'" class="xm_toggle">';
  95.                 $return .= '<span id="s-'.$id.'" class="ui-icon ui-icon-triangle-1-e"></span>';
  96.                 $return .= dwho_i18n::babelfish($key).' </a><div class="clearboth"></div>';
  97.                 $return .= '<ul id="'.$id.'" class="b-nodisplay" style="border:1px dotted red;">';
  98.                 $return .= '<a href="/exportreport.php?'.$query.'" class="bt_export">'.dwho_i18n::babelfish('report_export').'</a>';
  99.                 foreach($v as $submessage) {
  100.                     $return .= '<li>'.dwho_i18n::babelfish($submessage).'</li>';
  101.                 }
  102.                 $return .= '</ul>';
  103.  
  104.                 $return .= "
  105.                 <script type='text/javascript'>
  106.                 $('#a-$id').click(function() {
  107.                     if ($('#$id').css('display') == 'none'){
  108.                         $('#s-$id').toggleClass('ui-icon-triangle-1-e');
  109.                         $('#s-$id').toggleClass('ui-icon-triangle-1-s');
  110.                         $('#$id').show('slow');
  111.                     } else {
  112.                         $('#s-$id').toggleClass('ui-icon-triangle-1-e');
  113.                         $('#s-$id').toggleClass('ui-icon-triangle-1-s');
  114.                         $('#$id').hide('slow');
  115.                     }
  116.                     return false;
  117.                 });
  118.                 </script>";
  119.             }
  120.             else {
  121.                 $return .= '<li>'.dwho_i18n::babelfish($v).'</li>';
  122.             }
  123.         }
  124.         $return .= '</ul>';
  125.         $return .= '</div>';
  126.  
  127.         if ($type === 'error')
  128.             error_log(dwho_json::encode($self));
  129.  
  130.         self::flush($type);
  131.  
  132.         return($return);
  133.     }
  134.  
  135.     public static function flush($type) {
  136.         $_SESSION['_report'][$type] = array();
  137.         $_SESSION['_report_bloc_export'][$type] = array();
  138.         self::${$type} = array();
  139.     }
  140.  
  141.     public static function has($type) {
  142.         if (isset(self::${$type}) === true && ($self = &self::${ $type}) === false){
  143.             return(false);
  144.         } elseif (empty($self) === true) {
  145.             return(false);
  146.         }
  147.  
  148.         return(true);
  149.     }
  150.  
  151.     public static function get($type) {
  152.         if (isset(self::${$type}) === false || ($self = &self::${$type}) === false) {
  153.             return(null);
  154.         }
  155.  
  156.         return($self);
  157.     }
  158.  
  159.     public static function get_bloc($type,$bloc) {
  160.         if (($self = &self::get($type)) === false
  161.         || isset($self[$bloc]) === false) {
  162.             $_sess = $_SESSION['_report_bloc_export'];
  163.             if (isset($_sess[$type]) === true
  164.             && isset($_sess[$type][$bloc]) === true) {
  165.                 return($_sess[$type][$bloc]);
  166.             }
  167.  
  168.             return(false);
  169.         }
  170.  
  171.         return($self[$bloc]);
  172.     }
  173.  
  174.     public static function encode() {
  175.         $listtype = get_class_vars('dwho_report');
  176.         $listtype = array_keys($listtype);
  177.  
  178.         $rs = array();
  179.         for ($i=0;$i<count($listtype);$i++) {
  180.             $type = $listtype[$i];
  181.             if (self::has($type) === false) {
  182.                 continue;
  183.             }
  184.             $rs[$type] = self::get($type);
  185.         }
  186.         return($rs);
  187.     }
  188.  
  189.     public static function decode() {
  190.         if (isset($_SESSION['_report']) === false
  191.         || is_array($_SESSION['_report']) === false
  192.         || empty($_SESSION['_report']) === true) {
  193.             return(null);
  194.         }
  195.  
  196.         $listtype = get_class_vars('dwho_report');
  197.         $arr = $_SESSION['_report'];
  198.         $_SESSION['_report_bloc_export'] = array();
  199.  
  200.         foreach($arr as $type => $value) {
  201.             if (isset($listtype[$type]) === false) {
  202.                 continue;
  203.             }
  204.             foreach($value as $k => $v) {
  205.                 if (is_string($k) === true
  206.                 && is_array($v) === true) {
  207.                     $_SESSION['_report_bloc_export'][$type][$k] = $v;
  208.                     $key = base64_decode($k);
  209.                     foreach($v as $submessage)
  210.                         self::push($type,$submessage,$key);
  211.                 } else {
  212.                     self::push($type,$v);
  213.                 }
  214.             }
  215.         }
  216.     }
  217. }
  218.  
  219. ?>
Add Comment
Please, Sign In to add comment