<?php
/*!
* Jetpack CRM
* https://jetpackcrm.com
*/
defined( 'ZEROBSCRM_PATH' ) || exit( 0 );
#{ Wh NOTE: this should all be in 1 global, messy to ahve them all separate! }
/* ======================================================
Hard Coded Columns for each list view (UI2.0)
(Defaults which can be overriden by custom views)
====================================================== */
/*
// LABEL, column ??, grouping (in column manager)
array('LABEL','zbsDefault_column_customerid','basefield')
*/
/* ======================================================================================================
======================== Customers
===================================================================================================== */
global $zeroBSCRM_columns_customer;
$zeroBSCRM_columns_customer = array();
$zeroBSCRM_columns_customer['default'] = array(
'id' => array('ID',false,'basefield'),
'nameavatar' => array(__('Name and Avatar',"zero-bs-crm")),
//'email' => array('Email','zbsDefault_column_customeremail'),
'status' => array(__('Status',"zero-bs-crm"),false,'basefield','editinline'=>1),
'totalvalue' => array(__('Total Value',"zero-bs-crm")),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield')
);
$zeroBSCRM_columns_customer['all'] = array(
'id' => array('ID',false,'basefield'),
'name' => array(__('Name',"zero-bs-crm"),false,'basefield'),
'nameavatar' => array(__('Name and Avatar',"zero-bs-crm")),
'email' => array(__('Email',"zero-bs-crm"),false,'basefield'),
'status' => array(__('Status',"zero-bs-crm"),false,'basefield','editinline'=>1),
'hasquote' => array(__('Has Quote',"zero-bs-crm")),
'hasinvoice' => array(__('Has Invoice',"zero-bs-crm")),
'hastransaction' => array(__('Has Transaction',"zero-bs-crm")),
'quotecount' => array(__('Quote Count',"zero-bs-crm")),
'invoicecount' => array(__('Invoice Count',"zero-bs-crm")),
'transactioncount' => array(__('Transaction Count',"zero-bs-crm")),
'quotetotal' => array(__('Quotes Total',"zero-bs-crm")),
'invoicetotal' => array(__('Invoices Total',"zero-bs-crm")),
'transactiontotal' => array(__('Transactions Total',"zero-bs-crm")),
'totalvalue' => array(__('Total Value',"zero-bs-crm")),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'lastupdated' => array(__('Last Updated',"zero-bs-crm"),false,'basefield'),
'assigned' => array(__('Assigned To',"zero-bs-crm"),false,'basefield','editinline'=>1),
'latestlog' => array(__('Latest Log',"zero-bs-crm")),
'tagged' => array(__('Tagged',"zero-bs-crm")),
'editlink' => array(__('View',"zero-bs-crm")),
'editdirectlink' => array(__('Edit',"zero-bs-crm")),
'phonelink' => array(__('Phone Link',"zero-bs-crm")),
'lastcontacted' => array(__('Last Contacted',"zero-bs-crm")),
'company' => array(__('Company','zero-bs-crm')),
);
/**
* Corrects label for 'Company' (could be Organisation) after the settings have loaded.
* Clunky workaround for now
*/
add_action( 'after_zerobscrm_settings_preinit', 'jpcrm_list_columns_correct_labels', 10);
function jpcrm_list_columns_correct_labels(){
global $zeroBSCRM_columns_customer;
$zeroBSCRM_columns_customer['all']['company'] = array(jpcrm_label_company());
}
/* ======================================================================================================
======================== / Customers
===================================================================================================== */
/* ======================================================================================================
======================== Companies
===================================================================================================== */
global $zeroBSCRM_columns_company;
$zeroBSCRM_columns_company = array();
$zeroBSCRM_columns_company['default'] = array(
'id' => array('ID',false,'basefield'),
'name' => array(__('Name',"zero-bs-crm"),false,'basefield'),
'status' => array(__('Status',"zero-bs-crm"),false,'basefield'),
'contacts' => array(__('Contacts',"zero-bs-crm")),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'viewlink' => array(__('View',"zero-bs-crm"))
);
$zeroBSCRM_columns_company['all'] = array(
'id' => array('ID',false,'basefield'),
'name' => array(__('Name',"zero-bs-crm"),false,'basefield'),
'email' => array(__('Email',"zero-bs-crm"),false,'basefield'),
'status' => array(__('Status',"zero-bs-crm"),false,'basefield'),
'hasinvoice' => array(__('Has Invoice',"zero-bs-crm")),
'hastransaction' => array(__('Has Transaction',"zero-bs-crm")),
'invoicecount' => array(__('Invoice Count',"zero-bs-crm")),
'transactioncount' => array(__('Transaction Count',"zero-bs-crm")),
'invoicetotal' => array(__('Invoices Total',"zero-bs-crm")),
'transactiontotal' => array(__('Transactions Total',"zero-bs-crm")),
// When Company<->Quotes:
//'hasquote' => array(__('Has Quote',"zero-bs-crm")),
//'quotecount' => array(__('Quote Count',"zero-bs-crm")),
//'quotetotal' => array(__('Quotes Total',"zero-bs-crm")),
'totalvalue' => array(__('Total Value',"zero-bs-crm")),
'contacts' => array(__('Contacts',"zero-bs-crm")),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'lastupdated' => array(__('Last Updated',"zero-bs-crm"),false,'basefield'),
'viewlink' => array(__('View',"zero-bs-crm")),
'editlink' => array(__('Edit',"zero-bs-crm")),
'assigned' => array(__('Assigned To',"zero-bs-crm"),false,'basefield'),
'tagged' => array(__(__('Tagged',"zero-bs-crm"),"zero-bs-crm")),
'phonelink' => array(__('Phone Link',"zero-bs-crm")),
// Should this be in company? (removed 04/9/18, don't think wired up) ''latestlog' => array(__('Latest Log',"zero-bs-crm")),
// Should this be in company? (removed 04/9/18, don't think wired up) 'lastcontacted' => array(__('Last Contacted',"zero-bs-crm")),
);
/* ======================================================================================================
======================== / Companies
===================================================================================================== */
/* ======================================================================================================
======================== Quotes
===================================================================================================== */
global $zeroBSCRM_columns_quote;
$zeroBSCRM_columns_quote = array();
$zeroBSCRM_columns_quote['default'] = array(
'id' => array('ID',false,'basefield'),
'title' => array(__('Quote Title','zero-bs-crm'),false,'basefield'),
'customer' => array( __( 'Contact', 'zero-bs-crm' ) ), // phpcs:ignore WordPress.Arrays.ArrayIndentation.ItemNotAligned -- impossible to fix without fixing everything else.
'status' => array(__('Status','zero-bs-crm'),false,'basefield'),
'value' => array(__('Quote Value',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit',"zero-bs-crm"))
);
$zeroBSCRM_columns_quote['all'] = array(
'id' => array('ID',false,'basefield'),
'title' => array(__('Quote Title','zero-bs-crm'),false,'basefield'),
'customer' => array( __( 'Contact', 'zero-bs-crm' ) ), // phpcs:ignore WordPress.Arrays.ArrayIndentation.ItemNotAligned -- impossible to fix without fixing everything else.
'status' => array(__('Status','zero-bs-crm'),false,'basefield'),
'value' => array(__('Quote Value',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit',"zero-bs-crm")),
// not user-configurable, so disabling for now
//'assignedobj' => array(__('Assigned To',"zero-bs-crm"),false,'basefield'),
);
/* ======================================================================================================
======================== / Quotes
===================================================================================================== */
/* ======================================================================================================
======================== Invoices
===================================================================================================== */
global $zeroBSCRM_columns_invoice;
$zeroBSCRM_columns_invoice = array();
$zeroBSCRM_columns_invoice['default'] = array(
'id' => array('ID',false,'basefield'),
'ref' => array(__('Reference','zero-bs-crm'),false,'basefield'),
'customer' => array( __( 'Contact', 'zero-bs-crm' ) ), // phpcs:ignore WordPress.Arrays.ArrayIndentation.ItemNotAligned -- impossible to fix without fixing everything else.
'status' => array(__('Status','zero-bs-crm'),false,'basefield'),
'value' => array(__('Value',"zero-bs-crm"),false,'basefield'),
'date' => array(__('Date',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit',"zero-bs-crm"))
);
$zeroBSCRM_columns_invoice['all'] = array( // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase,Generic.WhiteSpace.ScopeIndent.Incorrect
'id' => array('ID',false,'basefield'),
'ref' => array(__('Reference','zero-bs-crm'),false,'basefield'),
'customer' => array( __( 'Contact', 'zero-bs-crm' ) ), // phpcs:ignore WordPress.Arrays.ArrayIndentation.ItemNotAligned -- impossible to fix without fixing everything else.
'status' => array(__('Status','zero-bs-crm'),false,'basefield'),
'value' => array(__('Value',"zero-bs-crm"),false,'basefield'),
'date' => array(__('Date',"zero-bs-crm"),false,'basefield'),
'due' => array(__('Due date',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit',"zero-bs-crm")),
// not user-configurable, so disabling for now
//'assignedobj' => array(__('Assigned To',"zero-bs-crm"),false,'basefield'),
);
/* ======================================================================================================
======================== / Invoices
===================================================================================================== */
/* ======================================================================================================
======================== Transactions
===================================================================================================== */
global $zeroBSCRM_columns_transaction;
$zeroBSCRM_columns_transaction = array();
$zeroBSCRM_columns_transaction['default'] = array( // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
'id' => array('ID','zbsDefault_column_customerid','basefield'),
'customer' => array( __( 'Contact', 'zero-bs-crm' ) ), // phpcs:ignore WordPress.Arrays.ArrayIndentation.ItemNotAligned -- impossible to fix without fixing everything else.
'status' => array(__('Status',"zero-bs-crm"),false,'basefield'),
'total' => array(__('Value',"zero-bs-crm"),false,'basefield'),
'item' => array(__('Item',"zero-bs-crm"),false,'basefield'),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit Link',"zero-bs-crm"))
);
$zeroBSCRM_columns_transaction['all'] = array(
'id' => array('ID','zbsDefault_column_customerid','basefield'),
'customer' => array( __( 'Contact', 'zero-bs-crm' ) ), // phpcs:ignore WordPress.Arrays.ArrayIndentation.ItemNotAligned -- impossible to fix without fixing everything else.
'customeremail' => array(__('Email',"zero-bs-crm")),
'tagged' => array(__(__('Tagged',"zero-bs-crm"),"zero-bs-crm")),
'status' => array(__('Status',"zero-bs-crm"),false,'basefield'),
'total' => array(__('Value',"zero-bs-crm"),false,'basefield'),
'item' => array(__('Item',"zero-bs-crm"),false,'basefield'),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit Link',"zero-bs-crm")),
'external_source' => array(__('External Source',"zero-bs-crm")),
// not user-configurable, so disabling for now
//'assignedobj' => array(__('Assigned To',"zero-bs-crm"),false,'basefield'),
);
/* ======================================================================================================
======================== / Transactions
===================================================================================================== */
/* ======================================================================================================
======================== Forms
===================================================================================================== */
global $zeroBSCRM_columns_form;
$zeroBSCRM_columns_form = array();
$zeroBSCRM_columns_form['default'] = array(
'id' => array('ID',false,'basefield'),
'title' => array(__('Title','zero-bs-crm'),false,'basefield'),
'style' => array(__('Style',"zero-bs-crm"),false,'basefield'),
'views' => array(__('Views',"zero-bs-crm")),
'conversions' => array(__('Conversions',"zero-bs-crm")),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit',"zero-bs-crm"))
);
$zeroBSCRM_columns_form['all'] = array(
'id' => array('ID',false,'basefield'),
'title' => array(__('Title','zero-bs-crm'),false,'basefield'),
'style' => array(__('Style',"zero-bs-crm"),false,'basefield'),
'views' => array(__('Views',"zero-bs-crm")),
'conversions' => array(__('Conversions',"zero-bs-crm")),
'added' => array(__('Added',"zero-bs-crm"),false,'basefield'),
'editlink' => array(__('Edit',"zero-bs-crm"))
);
/* ======================================================================================================
======================== / Forms
===================================================================================================== */
/* ======================================================================================================
======================== Segments
===================================================================================================== */
global $zeroBSCRM_columns_segment;
$zeroBSCRM_columns_segment = array();
$zeroBSCRM_columns_segment['default'] = array(
'id' => array('ID',false,'basefield'),
'name' => array(__('Name','zero-bs-crm'),false,'basefield'),
'audiencecount' => array(__('Contact Count','zero-bs-crm')),
'action' => array(__('Action','zero-bs-crm'))
);
$zeroBSCRM_columns_segment['all'] = array(
'id' => array('ID',false,'basefield'),
'name' => array(__('Name','zero-bs-crm'),false,'basefield'),
'audiencecount' => array(__('Contact Count','zero-bs-crm')),
'action' => array(__('Action','zero-bs-crm')),
'added' => array(__('Added','zero-bs-crm'))
);
/* ======================================================================================================
======================== / Segments
===================================================================================================== */
/* ======================================================================================================
======================== Quote Templates
===================================================================================================== */
global $zeroBSCRM_columns_quotetemplate;
$zeroBSCRM_columns_quotetemplate = array();
$zeroBSCRM_columns_quotetemplate['default'] = array(
'id' => array('ID',false,'basefield'),
'title' => array(__('Title','zero-bs-crm'),false,'basefield'),
'action' => array(__('Action','zero-bs-crm'))
);
$zeroBSCRM_columns_quotetemplate['all'] = array(
'id' => array('ID',false,'basefield'),
'title' => array(__('Title','zero-bs-crm'),false,'basefield'),
'action' => array(__('Action','zero-bs-crm'))
);
/* ======================================================================================================
======================== / Quote Templates
===================================================================================================== */
/* ======================================================================================================
======================== Tasks
===================================================================================================== */
global $zeroBSCRM_columns_event;
$zeroBSCRM_columns_event = array();
$zeroBSCRM_columns_event['default'] = array(
'id' => array('ID',false,'basefield'),
'title' => array( __('Name','zero-bs-crm'), false, 'basefield' ),
'start' => array( __('Starting', 'zero-bs-crm' ) ),
'end' => array( __('Finishing', 'zero-bs-crm' ) ),
'status' => array( __('Status', 'zero-bs-crm' ) ),
'assigned' => array(__('Assigned To',"zero-bs-crm"), false, 'basefield' ),
'action' => array( __('Action', 'zero-bs-crm') )
);
$zeroBSCRM_columns_event['all'] = array(
'id' => array('ID',false,'basefield'),
'title' => array( __('Name','zero-bs-crm'), false, 'basefield' ),
'desc' => array( __('Description', 'zero-bs-crm' ) ),
'start' => array( __('Starting', 'zero-bs-crm' ) ),
'end' => array( __('Finishing', 'zero-bs-crm' ) ),
'status' => array( __('Status', 'zero-bs-crm' ) ),
'remind' => array( __('Reminder', 'zero-bs-crm' ) ),
'showcal' => array( __('Show on Cal', 'zero-bs-crm' ) ),
//'showportal' => array( __('Show on Portal', 'zero-bs-crm' ) ),
'contact' => array( __('Contact', 'zero-bs-crm' ) ),
'company' => array( __('Company', 'zero-bs-crm' ) ),
'assigned' => array(__('Assigned To',"zero-bs-crm"), false, 'basefield' ),
'action' => array( __('Action', 'zero-bs-crm') )
);
/* ======================================================================================================
======================== / Tasks
===================================================================================================== */
// phpcs:disable Generic.WhiteSpace.ScopeIndent.Incorrect, Generic.WhiteSpace.ScopeIndent.IncorrectExact
/**
* Unpacks listview settings
*/
function zeroBSCRM_unpackListViewSettings() {
// ALL FIELD TYPES
global $zeroBSCRM_columns_customer, $zbsCustomerFields;
global $zeroBSCRM_columns_company, $zbsCompanyFields;
global $zeroBSCRM_columns_quote, $zbsCustomerQuoteFields;
global $zeroBSCRM_columns_invoice, $zbsCustomerInvoiceFields;
global $zeroBSCRM_columns_transaction, $zbsTransactionFields;
global $zeroBSCRM_columns_form, $zbsFormFields;
$useSecondAddress = zeroBSCRM_getSetting('secondaddress');
$second_address_label = zeroBSCRM_getSetting( 'secondaddresslabel' );
if ( empty( $second_address_label ) ) {
$second_address_label = __( 'Second Address', 'zero-bs-crm' );
}
// Cycle through each + add
$mappings = array(
'zeroBSCRM_columns_customer' => 'zbsCustomerFields',
'zeroBSCRM_columns_company' => 'zbsCompanyFields',
'zeroBSCRM_columns_quote' => 'zbsCustomerQuoteFields', // not sure why naming convention lost here
'zeroBSCRM_columns_invoice' => 'zbsCustomerInvoiceFields', // not sure why naming convention lost here
'zeroBSCRM_columns_transaction' => 'zbsTransactionFields',
'zeroBSCRM_columns_form' => 'zbsFormFields',
);
foreach ($mappings as $columnsObjName => $fieldsObjName){
// add all normal fields to columns (DAL2) from 2.95
if (is_array(${$fieldsObjName}) && count(${$fieldsObjName}) > 0){
foreach (${$fieldsObjName} as $fKey => $fDetail){
if (!isset(${$columnsObjName}['all'][$fKey])){
// some need hiding (just for api/behind scenes:)
$hideCol = false; if (is_array($fDetail) && isset($fDetail['nocolumn']) && $fDetail['nocolumn']) $hideCol = true;
if (!$hideCol){
$skip = false; // skip addr 2 if off
// add it
$cfTitle = $fKey; if (is_array($fDetail) && isset($fDetail[1])) $cfTitle = $fDetail[1];
// secaddr get's dealt with:
if ( str_starts_with( $fKey, 'secaddr_' ) ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
$cfTitle .= ' (' . esc_html( $second_address_label ) . ')';
if ($useSecondAddress !== 1) $skip = true;
}
if (!$skip) ${$columnsObjName}['all'][$fKey] = array($cfTitle,false,'basefield'); // note adding as basefield :)
}
}
}
}
}
// Auto-add 'edit link' to quotes invs (somehow it wasn't always adding)
$customviews2 = zeroBSCRM_getSetting('customviews2'); $cv2Changed = false;
if (isset($customviews2['quote']) && !array_key_exists('editlink', $customviews2['quote'])){
// add it
$customviews2['quote']['editlink'] = array(__('Edit',"zero-bs-crm"));
$cv2Changed = true;
}
if (isset($customviews2['invoice']) && !array_key_exists('editlink', $customviews2['invoice'])){
// add it
$customviews2['invoice']['editlink'] = array(__('Edit',"zero-bs-crm"));
$cv2Changed = true;
}
if ($cv2Changed && is_array($customviews2)){
// Save setting
global $zbs;
return $zbs->settings->update('customviews2',$customviews2);
}
}
// phpcs:enable Generic.WhiteSpace.ScopeIndent.Incorrect, Generic.WhiteSpace.ScopeIndent.IncorrectExact