shortcodes-circulars.php 5.31 KB
<?php 

add_shortcode('circular-list', 'circular_list');

function extractCircularDataForCache($data) {

  $organized_circular_data = [];

  foreach($data as $circular){ 

    if(!empty($circular->item->Name)) {

      //Discard anything more than 5 years go back more than 5 years
      if(count($organized_circular_data) >= 4) {
        break;
      }

      //Discard non-ciculars
      if(stripos($circular->item->Name, 'circular') === false && stripos($circular->item->Subject, 'circular') === false) {
        continue;
      }

      $send_date = strtotime($circular->item->SentDate);
      $send_datef = date('M d/Y', $send_date);
      $name = $circular->item->Subject;
      $year = date('Y', $send_date);
      $url = $circular->item->WebVersionURL;

      if(empty($organized_circular_data[$year])) {
        $organized_circular_data[$year] = [];
        $organized_circular_data[$year][] = ['date'=>$send_date,'name'=>$name,'year'=>$year,'url'=>$url,'datef'=>$send_datef]; 
      } else {
        $organized_circular_data[$year][] = ['date'=>$send_date,'name'=>$name,'year'=>$year,'url'=>$url,'datef'=>$send_datef]; 
      }


    }

  }

  return $organized_circular_data;

}

function circular_list($atts){

  $order = "desc";

  // $client = new Predis\Client();

  $campaignItemArray = [];

  // if($client->exists('circular_data')) {
  //   try {
  //     $campaignItemArray = unserialize($client->get('circular_data'));
  //     // var_dump($campaignItemArray);exit;
  //   } catch(Throwable $e) {
  //     error_log("ERROR in circular cached data = " . $e->getMessage());
  //   }
  // } 
  if(empty($campaignItemArray)) {
    // campaign_Monitor_LoadData();
    $campaignItemArray = campaign_Monitor_GetData($order);
    $campaignItemArray = extractCircularDataForCache($campaignItemArray);
    // $client->set('circular_data', serialize($campaignItemArray));
  }

  
  $organized_term_filter = array_keys($campaignItemArray);

  try{

    ob_start(); 

    ?>
        <div class="course-list resources hidden">
            <div class='quicksearch-wrapper'>
              <label for="quicksearch">Search:</label>
              <div class='qs-input-wrapper'>
                <input type="text" id="quicksearch" placeholder="Search Keyword..." />
              </div>
            </div>
            <div class="filters">
              <div class='search-sort'>
                <h3><?= __("SORT BY") ?></h3>
                <div class='custom-select'>
                  <select class='resource-list-sort'>
                    <option >Select</option>
                    <option  data-sort-direction="desc" data-sort-value="0">A to Z</option>
                    <option  data-sort-direction="asc" data-sort-value="0">Z to A</option>
                    <option  data-sort-direction="asc" data-sort-value="2">Newest to Oldest</option>
                    <option  data-sort-direction="desc" data-sort-value="2">Oldest to Newest</option>
                  </select>
                </div>
              </div>
              <div class="filter-group clear-filters">
                <div class="category-filter-group ">
                  <span class=''>FILTERS BY:</span>
                  <div class="category">
                      <a href='#' class='clear-all-link hide'>CLEAR ALL</a>
                  </div>
                  </div>
                </div>
              <div class="filter-group">
                <div class="category-filter-group ">
                  <span class=''><?= __("Year") ?></span>
                  <div class="category">
                      <?php
                        foreach($organized_term_filter as $term) { ?>
                            <div class="category-filter"> <input id="year-<?= $term ?>" value="<?=  $term ?>" type="checkbox" class="sr-only"><label for="year-<?= $term ?>"><?= $term ?></label></div>
                      <?php }; ?>
                  </div>
                  </div>
                </div>
             
            </div>
          </div>
            <table id="resources" class='hidden'>
            <thead><tr><th class="hidden"></th><th></th><th class="hidden"></th></tr></thead>
              <tbody>
                <?php foreach($campaignItemArray as $year => $circular_year_arr) {
                        foreach($circular_year_arr as $circular) {
                          echo circulars($circular);
                        }
                 ?>
                <?php } ?>
              </tbody>          
            </table>
  <?php
        wp_reset_query();
        $output = ob_get_clean(); 
        return $output;

    }catch(Throwable $e) { 
      error_log("circulars_list()". $e->getMessage()) ;
    }

}

function cachedCircular($circular) {

    return [];
}

function circulars($circular){


  $send_date = $circular['date'];
  $send_datef = $circular['datef'];
  $name = $circular['name'];
  $url =  $circular['url'];
  $year = $circular['year'];

  ob_start(); 

  ?>

 <tr class="table-like__item">
  <td class="item">
    <a target="_blank" role="button" class="item-link extern" href="/wp-content/plugins/tenzing-campaign-monitor/campaignRetriever.php?campaignURL=<?= $url ?>"><?= $name ?></a>
    <span class='updated-at'>
    <?= $send_datef ?>
    </span>
  </td> 
  <td class="hidden"> <?php echo $year; ?></td>
  <td class="hidden"><?php echo $send_date ?></td>
</tr>
<?php
  $output = ob_get_clean();
  return $output;
}