data) && isset($user->data->user_login) && in_array($user->data->user_login, array('dh','vincent','swc','vansindata'))) ){ $google_link='https://docs.google.com/spreadsheets/d/'.$d.'/edit#gid='.$gid; } $speaker = '';$ary_speakers = array(); if($speaker_d and strlen($speaker_gid)>0){ $speaker = getHtml('https://docs.google.com/spreadsheets/d/'.$speaker_d.'/export?format=tsv&gid='.$speaker_gid); } if($speaker){ foreach(preg_split('/\n|\r\n?/', $speaker) as $v){ $_ = explode("\t",$v); if(!isset($_[1]) or empty($_[1])){continue;} $speaker_href = $_[1]; $speaker_href = trim($speaker_href); if(strpos($speaker_href,'http')===0){ $speaker_name = str_replace(array("\r","\n","\t"),'',$_[0]); $ary_speakers[$speaker_name] = $speaker_href; } } } #$bgcolor = isset($atts['bgcolor']) ? explode('-',$atts['bgcolor']) : array('','','#DAA2A2','#ddd','#EFD0A7','#ddd','#B5C8F4','#ddd','#DAE3BC','#DAE3BC'); $bgcolor = isset($atts['bgcolor']) ? explode(',',$atts['bgcolor']) : array('','','#adf','','#adf','','#adf','','#adf','#adf','#adf','#adf'); $s = getCourseCalendarHtmlFromGoogleSpreadsheet('https://docs.google.com/spreadsheets/d/'.$d.'/export?format=csv&gid='.$gid); $s = preg_replace('/\n|\r\n?/', '`', $s); $s = preg_replace('/`WEEKDAY/i', "\nWEEKDAY",$s); $s = preg_replace('/`([0-2][0-9])/', "\n$1", $s); $s = preg_replace('/`,/', "\n,", $s); $ary = array(); $START_POSSIBLE_HAS_MERGE_ROWIDX = 1; $MERGE_DEFAULT_VALUE = 2; foreach(preg_split('/\n|\r\n?/',$s)as$k=>$v){ # $k is row-index if($k==1){continue;}/*pass weekday row*/ $a = str_getcsv($v); $ary[] = $a; } // echo'
';print_r($ary);exit();
  $s = '';
  foreach($ary as$rowidx=>$a){
    if(!$a[0]){break;}
    $style = isset($bgcolor[$rowidx])&&$bgcolor[$rowidx] ? ' style="background:'.$bgcolor[$rowidx].'"' : '';
    if($rowidx===0){
      $s.='';
$s.=''.($a[0]=='DATE' ? '日期' : '').'';
$s.=''._week_course_date($a[1]).'';
if(isset($a[2]) && $a[2]){$s.=''._week_course_date($a[2]).'';}
if(isset($a[3]) && $a[3]){$s.=''._week_course_date($a[3]).'';}
if(isset($a[4]) && $a[4]){$s.=''._week_course_date($a[4]).'';}
if(isset($a[5]) && $a[5]){$s.=''._week_course_date($a[5]).'';}
$s.='';
      continue;
    }

    $a1_prevconfigs = array(); # _prevconfigs SHOULD RENAME to _prevtexts
    $a2_prevconfigs = array();
    $a3_prevconfigs = array();
    $a4_prevconfigs = array();
    $a5_prevconfigs = array();
    for($i=1;$i<$rowidx;$i++){
      if(empty($ary[$i][0]) or 0===preg_match('/[0-9]/', $ary[$i][0])){continue;}
      $a1_prevconfigs[$i] = $ary[$i][1];
      $a2_prevconfigs[$i] = isset($ary[$i][2]) ? $ary[$i][2] : NULL;
      $a3_prevconfigs[$i] = isset($ary[$i][3]) ? $ary[$i][3] : NULL;
      $a4_prevconfigs[$i] = isset($ary[$i][4]) ? $ary[$i][4] : NULL;
      $a5_prevconfigs[$i] = isset($ary[$i][5]) ? $ary[$i][5] : NULL;
    }
    $td0 = $a[0];
    foreach(range(1,5)as$tdnum){
      if(!isset($a[$tdnum])){continue;}
      ${'td'.$tdnum} = $a[$tdnum];
      if($td0!='DATE' && $td0!='WEEKDAY'){
        ${'a'.$tdnum.'_includeprevconfigs'} = _week_course_text($a[$tdnum], $ary_speakers, ${'a'.$tdnum.'_prevconfigs'});
        $tmp = ${'a'.$tdnum.'_includeprevconfigs'};
        if(isset($tmp['text'])){
          ${'td'.$tdnum} = $tmp['text'];
        }
        #
        ${'td'.$tdnum.'attr'} = array();#default
        if(isset(${'a'.$tdnum.'_includeprevconfigs'}['conf']['MERGE'])){
          $merge = ${'a'.$tdnum.'_includeprevconfigs'}['conf']['MERGE'];
          if($merge>=$MERGE_DEFAULT_VALUE){
            ${'td'.$tdnum.'attr'}[] = 'rowspan='.$merge;
          }
        }
        ${'td'.$tdnum.'attr'} = ${'td'.$tdnum.'attr'} ? ' '.implode(' ', ${'td'.$tdnum.'attr'}) : '';
      }
      #
      ${'td'.$tdnum.'class'} = strpos(${'td'.$tdnum}, 'wkplace')!==false ? ' class=haswkplace' : '';
    }

    $NEED_CHECK_MERGE = $rowidx>=($START_POSSIBLE_HAS_MERGE_ROWIDX+1);
    $s.=''.$td0.'';
    if(!$NEED_CHECK_MERGE){
      $s.=''.$td1.'';
      if(isset($a[2]) && $a[2]){
      $s.=''.$td2.'';
      }
      if(isset($a[3]) && $a[3]){
      $s.=''.$td3.'';
      }
      if(isset($a[4]) && $a[4]){
      $s.=''.$td4.'';
      }
      if(isset($a[5]) && $a[5]){
      $s.=''.$td5.'';
      }
    }else{
      foreach(range(1,5)as$n){
        if(!isset($a[$n]) || !$a[$n]){continue;}
        $bool_output = true;
        for(
          //$text_key=count(${'a'.$n.'_prevconfigs'})-1; # because we start index from 1 INSTEAD OF 0
          $text_key=count(${'a'.$n.'_prevconfigs'});
          $text_key>=$START_POSSIBLE_HAS_MERGE_ROWIDX;$text_key--){
          $text = ${'a'.$n.'_prevconfigs'}[$text_key];
          preg_match('/MERGE/m', $text, $m1);
          preg_match('/MERGE ([0-9]+)/m', $text, $m2);
          $MERGE = 0;
          if($m1 && !$m2){
            $MERGE = $MERGE_DEFAULT_VALUE;
          }elseif($m1 && $m2){
            $MERGE = $m2[1];
          }
          if(($text_key  +  $MERGE-1) >= $rowidx){
            $bool_output=false;
          }
          if($MERGE>=$MERGE_DEFAULT_VALUE){break;}
        }
        if($bool_output){
          $s.=''.${'td'.$n}
            //.($bool_output ? 'TRUE' : 'FALSE')
            // .'--'.${'td'.$n.'attr'}
            // .implode('---', ${'a'.$n.'_prevconfigs'})
            .'';
        }
      } // end range(1,5)as$n
    }
    $s.='';
  }

  $s.='';

  // if(isset($atts['show_place_mapping']) && $atts['show_place_mapping']){
  //   $place_mapping = '
  • R0: 人文館國際會議廳
  • A0: 活動中心一樓演講廳
  • A1: 活動中心二樓第一會議室
  • HQ: 跨領域大樓七樓
'; // }else{ $place_mapping = ''; // } $google_link = $google_link ? ''.$google_link.'' : ''; return '
'.$google_link.$place_mapping.''.$s.'
'; } ?>