Json::entries_matrix PHP Method

entries_matrix() protected method

protected entries_matrix ( $entry_id, $field, $field_data )
  protected function entries_matrix($entry_id, $field, $field_data)
  {
    if (is_null($this->entries_matrix_rows))
    {
      $query = ee()->db->where_in('entry_id', $this->entries_entry_ids)
                       ->order_by('row_order')
                       ->get('matrix_data');

      foreach ($query->result_array() as $row)
      {
        if ( ! isset($this->entries_matrix_rows[$row['entry_id']]))
        {
          $this->entries_matrix_rows[$row['entry_id']] = array();
        }

        if ( ! isset($this->entries_matrix_rows[$row['entry_id']][$row['field_id']]))
        {
          $this->entries_matrix_rows[$row['entry_id']][$row['field_id']] = array();
        }

        $this->entries_matrix_rows[$row['entry_id']][$row['field_id']][] = $row;
      }

      $query->free_result();
    }

    if (is_null($this->entries_matrix_cols))
    {
      $query = ee()->db->get('matrix_cols');

      foreach ($query->result_array() as $row)
      {
        $this->entries_matrix_cols[$row['col_id']] = $row;
      }

      $query->free_result();
    }

    $data = array();

    if (isset($this->entries_matrix_rows[$entry_id][$field['field_id']]))
    {
      $field_settings = unserialize(base64_decode($field['field_settings']));

      foreach ($this->entries_matrix_rows[$entry_id][$field['field_id']] as $matrix_row)
      {
        $row = array('row_id' => (int) $matrix_row['row_id']);

        foreach ($field_settings['col_ids'] as $col_id)
        {
          if (isset($this->entries_matrix_cols[$col_id]))
          {
            $row[$this->entries_matrix_cols[$col_id]['col_name']] = $matrix_row['col_id_'.$col_id];
          }
        }

        $data[] = $row;
      }
    }

    return $data;
  }