Current File : /home/inlingua/www/crm/ninexb/wp-content/plugins/tablesome/workflow-library/integrations/gsheet.php |
<?php
namespace Tablesome\Workflow_Library\Integrations;
if (!defined('ABSPATH')) {
exit;
} // Exit if accessed directly
if (!class_exists('\Tablesome\Workflow_Library\Integrations\GSheet')) {
class GSheet
{
public $gsheet_api;
public $gdrive_api;
public function __construct()
{
$this->gsheet_api = new \Tablesome\Workflow_Library\External_Apis\GSheet();
$this->gdrive_api = new \Tablesome\Workflow_Library\External_Apis\GDrive();
}
public function get_config()
{
return array(
'integration' => 'gsheet',
'integration_label' => __('GSheet', 'tablesome'),
'is_active' => $this->gsheet_api->is_active(),
'is_premium' => true,
'actions' => array(),
);
}
public function get_spreadsheets()
{
error_log('get_spreadsheets');
$files = $this->gdrive_api->get_spreadsheets();
error_log("get_spreadsheets: " . wp_json_encode($files));
if (empty($files)) {
return [];
}
$spreadsheets = array_map(function ($file) {
return [
'id' => $file['id'],
'label' => $file['name'],
'integration_type' => "gsheet",
];
}, $files);
return $spreadsheets;
}
public function get_sheets_by_spreadsheet_id($spreadsheet_id)
{
$data = $this->gsheet_api->get_sheets_by_spreadsheet_id($spreadsheet_id, true);
$sheets = isset($data['sheets']) ? $data['sheets'] : [];
if (empty($sheets)) {
return [];
}
$sheets = array_map(function ($sheet) {
$header = $this->get_first_row_data_from_sheet_grid_data($sheet);
return [
'id' => "" . $sheet['properties']['sheetId'] . "",
'label' => $sheet['properties']['title'],
'options' => $header,
];
}, $sheets);
return $sheets;
// return [
// 'sheets' => $sheets,
// 'spreadsheet_id' => $spreadsheet_id,
// 'spreadsheet_name' => $data['properties']['title'],
// 'spreadsheet_url' => $data['spreadsheetUrl'],
// ];
}
public function get_spreadsheet_records($spreadsheet_id, $params)
{
$data = $this->gsheet_api->get_spreadsheet_records($spreadsheet_id, $params);
$read_first_row_as_header = isset($params['read_first_row_as_header']) ? $params['read_first_row_as_header'] : false;
$values = isset($data['values']) ? $data['values'] : [];
if (!$read_first_row_as_header) {
return $values;
}
$first_row = isset($values[0]) ? $values[0] : [];
$header = [];
$keys = array_flip($first_row);
foreach ($keys as $keyIndex => $value) {
$header[] = array(
'id' => $value,
'label' => $first_row[$value],
);
}
return $header;
}
public function add_records_to_sheet($data)
{
if (!isset($data['spreadsheet_id']) || !isset($data['sheet_name']) || !isset($data['values'])) {
return;
}
$result = $this->gsheet_api->add_records($data);
return $result;
}
private function get_first_row_data_from_sheet_grid_data($sheet)
{
$data = isset($sheet['data']) ? $sheet['data'] : [];
$row_data = isset($data[0]['rowData']) ? $data[0]['rowData'] : [];
$first_row_values = isset($row_data[0]['values']) ? $row_data[0]['values'] : [];
$cells_data = [];
if (!empty($first_row_values)) {
foreach ($first_row_values as $cell_index => $cell) {
$temp_column_name = 'Column: ' . tablesome_num2alpha($cell_index);
$cells_data[] = [
'id' => "" . $cell_index . "",
'label' => isset($cell['formattedValue']) && !empty($cell['formattedValue']) ? $cell['formattedValue'] : $temp_column_name,
];
}
}
return $cells_data;
}
}
}