/** * Validate item config * * @since 0.3.0 * * @access protected * * @param array $data Item config * * @return bool|array Item config array if valid, false if not. */ protected static function validate_config($data) { if (!isset($data['created'])) { $data['created'] = current_time('mysql'); } if (!isset($data['IP'])) { $data['IP'] = ingot_get_ip(); } if (!isset($data['uID'])) { $data['uID'] = get_current_user_id(); } if (!isset($data['slug'])) { $data['slug'] = self::get_slug(); } if (!isset($data['used'])) { $data['used'] = 0; } if (isset($data['click_test_ID'])) { $data['click_test_ID'] = absint($data['click_test_ID']); } else { $data['click_test_ID'] = 0; } if ($data['click_test_ID']) { $test = test::read($data['click_test_ID']); if (!is_array($test)) { $data['click_test_ID'] = 0; } } if (isset($data['click_url'])) { $data['click_url'] = esc_url_raw($data['click_url']); } else { $data['click_url'] = ''; } if (!isset($data['ingot_ID'])) { $data['ingot_ID'] = self::find_ingot_id($data['uID'], $data['IP']); } $data['used'] = (bool) $data['used']; $data['used'] = (int) $data['used']; foreach (self::required() as $key) { if (!isset($data[$key])) { return new \WP_Error('ingot-session-crud-validation-fail', '', array('fail-key' => $key, 'data' => $data)); } } $allowed = array_merge(self::required(), self::needed()); foreach ($data as $key => $datum) { if (!in_array($key, $allowed)) { unset($data[$key]); } elseif (is_numeric($datum)) { $data[$key] = (string) $datum; } } return $data; }