Files
namaste/classes/deprecated/gacMeta.class.txt
gramps 373ebc8c93 Archive: Namaste PHP AMQP framework v1.0 (2017-2020)
952 days continuous production uptime, 40k+ tp/s single node.
Original corpo Bitbucket history not included — clean archive commit.
2026-04-05 09:49:30 -07:00

69 lines
2.8 KiB
Plaintext

/**
* validateMeta() -- public method
*
* This method requires one input parameter:
*
* $_meta -- a key-value paired array containing the current meta data payload
*
* first we validate the input parameter to ensure we're working with valid data object. If not, we're going to
* immediately return a false value and set the gacMetrics property (stopProcessing) to true. This allows us
* to signal the gacFactory class that a processing error had occurred.
*
* Otherwise, spin through the meta data that was passed to the method and compare each key in the array to the
* list of "authorized" keys defined for the current class. If a key does not exist in the authoritative index,
* then remove that key from the input-meta data and record the event in the log file and in the gacFactory
* class eventMessages property.
*
* Method returns a boolean value that indicates if meta data was validated.
*
* Since the meta data array is passed as a call-by-reference variable, dropped fields will propagate back to the
* calling client. A list of dropped fields, if any, will be stored in the eventMessages container.
*
*
* @author mike@givingassistant.org
* @version 1.0
*
* @param array $_meta
* @return bool
*
* HISTORY:
* ========
* 06-21-17 mks original coding
* 10-05-17 mks CORE-584: added validation for META_SKIP and META_LIMIT
*
*/
public function validateMeta(array &$_meta):bool
{
if (!is_array($_meta) or empty($_meta)) {
$this->logger->error(ERROR_DATA_META_REQUIRED);
$this->eventMessages[] = ERROR_DATA_META_REQUIRED;
return(false);
}
foreach ($_meta as $key => $value) {
if (!array_key_exists($key, $this->fields)) {
unset($_meta[$key]);
$msg = sprintf(NOTICE_META_DISCARD, $key);
$this->eventMessages[] = $msg;
if ($this->debug) $this->logger->debug($msg);
} else {
switch ($key) {
case META_SKIP :
case META_LIMIT :
if (!is_numeric($value)) {
$msg = ERROR_DATA_FIELD_DROPPED . $key;
$this->eventMessages[] = $msg;
if ($this->debug) $this->logger->debug($msg);
$msg = sprintf(ERROR_DATA_TYPE_MISMATCH_DETAILS, $key, DATA_TYPE_INTEGER, gettype($value));
$this->eventMessages[] = $msg;
if ($this->debug) $this->logger->debug($msg);
unset($_meta[$key]);
}
break;
}
}
}
return(true);
}