<?php
/*!
* Jetpack CRM
* https://jetpackcrm.com
* V3.0
*
* Copyright 2020 Automattic
*
* Date: 20/02/2019
*/
defined( 'ZEROBSCRM_PATH' ) || exit( 0 );
/* ======================================================
Create External Source Metabox
====================================================== */
class zeroBS__Metabox_ExtSource extends zeroBS__Metabox {
private $acceptableTypes = array('contact','company','transaction','invoice');
/**
* The object type ID using this metabox.
*
* @since 6.2.0
* @var int
*/
private $objTypeID; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase
public function __construct( $plugin_file, $objType='contact',$metaboxScreen='zbs-add-edit-contact-edit' ) {
global $zbs;
// set these
// DAL3 switched for objType $this->postType = 'zerobs_customer';
$this->objType = 'contact';
$this->objTypeID = ZBS_TYPE_CONTACT;
$this->metaboxID = 'zerobs-externalsource';
$this->metaboxTitle = __('External Source',"zero-bs-crm");
$this->metaboxScreen = 'zbs-add-edit-contact-edit'; // DEFAULT (overriden by metaboxScreens below)
// Better than this, is initiating multiple of this class with diff screens/objtypes
// ... because that presevers obj type unlike this solution: $this->metaboxScreens = array('zbs-add-edit-contact-edit','zbs-add-edit-company-edit'); // (since v3.0 we can add multiple, overrides metaboxScreen)
$this->metaboxArea = 'side';
$this->metaboxLocation = 'low';
$this->saveOrder = 1;
$this->capabilities = array(
'can_hide' => false, // can be hidden
'areas' => array('side'), // areas can be dragged to - normal side = only areas currently
'can_accept_tabs' => true, // can/can't accept tabs onto it
'can_become_tab' => false, // can be added as tab
'can_minimise' => true, // can be minimised
'can_move' => true // can be moved
);
// Catch any passed params as overrides
// (this allows us to have multiple initialised (e.g. one for contacts, one co's))
if (isset($objType)) $this->objType = $objType;
if (isset($objType)) $this->objTypeID = $zbs->DAL->objTypeID($this->objType);
if (isset($metaboxScreen)) $this->metaboxScreen = $metaboxScreen;
// set typeint based on type
$this->typeInt = $zbs->DAL->objTypeID($this->objType); // contact -> ZBS_TYPE_CONTACT = 1
#} Only load if is legit.
// also hide if "new" (not edit) - as defies point of extsource
$isEdit = false;
if (isset($_GET['action']) && $_GET['action'] == 'edit' && isset($_GET['zbsid']) && !empty($_GET['zbsid'])) $isEdit = true;
if (in_array($this->objType,$this->acceptableTypes) && $isEdit){
// call this
$this->initMetabox();
}
}
public function html( $obj, $metabox ) {
global $zbs;
// Only load if is legit.
if ( in_array( $this->objType, $this->acceptableTypes ) ){
$object_id = -1; if ( is_array( $obj ) && isset( $obj['id'] ) ) {
$object_id = (int)$obj['id'];
}
// use centralised function to draw
jpcrm_render_external_sources_by_id( $object_id, $this->objTypeID );
} // / only load if post type
}
}
/**
* End of Create External Source Metabox
*/