Skip to content

Instantly share code, notes, and snippets.

@cwynd
Last active January 25, 2022 19:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cwynd/af5bb38d2b2c27f43de160cb227f62c5 to your computer and use it in GitHub Desktop.
Save cwynd/af5bb38d2b2c27f43de160cb227f62c5 to your computer and use it in GitHub Desktop.
#!/usr/bin/awk -f
BEGIN {
FS=",";
ORS="";
}
{
for(i=1; i <= NF; i++)
{
if ( index($i, "id") != 0 || index($i,"code") != 0 )
print $i",";
else if ( index($i,"title") != 0 )
print "\"title\":\"My Registry Title\",";
else if ( index($i,"{") != 0 )
print "},{\"field"i"\":\"""value"i"\",";
else if (i < NF)
print "\"field"i"\":\"""value"i"\",";
else
print "\"field"i"\":\"""value"i"\"}";
}
}
END {
}
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$post_id = wp_insert_post(array (
'post_type' => 'gwc_registry',
'post_title' => 'post number one',
'post_status' => 'publish',
'comment_status' => 'closed',
'ping_status' => 'closed',
));
exit();
}
?>
<?php
//------------------------DEBUG AND OTHER UTILITIES------------------------//
function var_dump_ret($mixed = null) {
ob_start();
var_dump($mixed);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
function my_dump($thing){
$file = '/tmp/my_dump.txt';
file_put_contents($file, var_dump_ret($thing),FILE_APPEND);
}
<?php
/**
* @package Gist Info
*
* Manage create read update (not really delete) registry CPTs
*/
class My_Registry {
private $id;
private $registryno;
private $title;//CPT post title
/**
plus 25 domain-specific attributes
*/
private $registry_cpt_id;
function __construct( $data ){
$this->id = $this->_sanitize( $data["id"] );
$this->registryno = $this->_sanitize( $data["registryno"] );
$this->title = $this->_sanitize( $data["title"] );
/**
plus 25 domain-specific attributes processing
*/
$this->registry_cpt_id = false; // POST_ID, not registryno or id OR false
}
function create_or_update(){
$post_id = $this->_exists();
if ( empty($post_id) ){
$post_id = wp_insert_post(array (
'post_type' => 'gwc_registry',
'post_title' => $this->title,
'post_status' => 'publish',
'comment_status' => 'closed',
'ping_status' => 'closed'
));
} else {
// TODO update existing post title here if necessary
}
// do we now have a post to work with?
if ( ! empty($post_id) ){
$this->registry_cpt_id = $post_id;
$this->_update_meta();
}
}
private function _exists(){
$params = array(
'posts_per_page' => 1,//only looking for one hit
'post_type' => 'gwc_registry',
'meta_key' => 'registry_id',
'meta_value' => $this->id
);
$reg_query = new WP_Query($params);
if ($reg_query->have_posts()) {
$reg_query->the_post();
$post_id = get_the_id();
wp_reset_postdata();
return $post_id;
}
return false;
}
private function _sanitize($value){
return filter_var($value, FILTER_SANITIZE_STRING);
}
private function _sanitize_number($value){
return filter_var($value, FILTER_SANITIZE_NUMBER_INT);
}
private function _update_meta(){
if ( empty($this->registry_cpt_id) )
return false;
// my_dump(">>>" . $this->registry_cpt_id);
$cpt_meta_fields = (array)$this;
foreach ($cpt_meta_fields as $key => $value){
// my_dump((explode("\0", $key))[2] . ' ' . $value);
/**
$key here flanges up to the wordpress meta field keys
when exploded & 'registry_' is prepended
**/
$clean_key = (explode("\0", $key))[2];
$registry_meta_key = 'registry_' . $clean_key;
// my_dump($registry_meta_key . " > " . $value);
/**
remove processing of some domain-specific fields
**/
if ( gettype($value) == "boolean" ){
//checkboxes
$bool_value = $value ? 'yes' : 'no';
$result = $this->_write_meta_value( $this->registry_cpt_id, $registry_meta_key, $bool_value );
} else {
//remaining text fields
//we dont parse dates unless something in the future requires us to
$result = $this->_write_meta_value( $this->registry_cpt_id, $registry_meta_key, $value );
}
// my_dump($result);
}
}
private function _write_meta_value( $post_id, $meta_key, $meta_value){
if ( ! isset($post_id, $meta_key, $meta_value) )
return null; //the only value update_post_metas will NOT return
// my_dump($post_id . "| " . $meta_key . "| " . $meta_value);
return update_post_meta( $post_id, $meta_key, $meta_value );
}
}
<?php
/**
* @package Gist Info
*/
include_once( get_stylesheet_directory() . '/include/My_Registry.php' );
//we might be getting POSTed json data from the back end sync
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$json = file_get_contents('php://input');
if ($json){
$data = json_decode($json, true);
$registry = new My_Registry($data);
$registry->create_or_update();
unset($registry);
exit();
}
}
do_action( 'get_header');
get_template_part('partials/header', '');
?>
<!-- HTML ARCHIVE GET rendering -->
<?php
do_action( 'get_footer');
get_template_part('partials/footer', '');
{"id":"378","field2":"value2","code":"KJ","title":"My Registry Title","field5":"value5","field6":"value6","field7":"value7","field8":"value8","field9":"value9","field10":"value10","field11":"value11","field12":"value12","field13":"value13","field14":"value14","field15":"value15","field16":"value16","field17":"value17","field18":"value18","field19":"value19","field20":"value20","field21":"value21","field22":"value22","field23":"value23","field24":"value24","field25":"value25","field26":"value26","field27":"value27","field28":"value28"},{"field29":"value29","field30":"value30","field31":"value31","field32":"value32","field33":"value33","field34":"value34","field35":"value35","field36":"value36"},{"field37":"value37","field38":"value38","field39":"value39","field40":"value40","field41":"value41","field42":"value42","field43":"value43","field44":"value44"},{"field45":"value45","field46":"value46","field47":"value47","field48":"value48","field49":"value49","field50":"value50","field51":"value51","field52":"value52"},{"field53":"value53","field54":"value54","field55":"value55","field56":"value56","field57":"value57","field58":"value58","field59":"value59","field60":"value60"},{"field61":"value61","field62":"value62","field63":"value63","field64":"value64","field65":"value65","field66":"value66","field67":"value67","field68":"value68"},{"field69":"value69","field70":"value70","field71":"value71","field72":"value72","field73":"value73","field74":"value74","field75":"value75","field76":"value76"},{"field77":"value77","field78":"value78","field79":"value79","field80":"value80","field81":"value81","field82":"value82","field83":"value83","field84":"value84"},{"field85":"value85","field86":"value86","field87":"value87","field88":"value88","field89":"value89","field90":"value90","field91":"value91","field92":"value92"},{"field93":"value93","field94":"value94","field95":"value95","field96":"value96","field97":"value97","field98":"value98","field99":"value99","field100":"value100"},{"field101":"value101","field102":"value102","field103":"value103","field104":"value104","field105":"value105","field106":"value106","field107":"value107","field108":"value108"},{"field109":"value109","field110":"value110","field111":"value111","field112":"value112","field113":"value113","field114":"value114","field115":"value115","field116":"value116"},{"field117":"value117","field118":"value118","field119":"value119","field120":"value120","field121":"value121","field122":"value122","field123":"value123","field124":"value124"},{"field125":"value125","field126":"value126","field127":"value127","field128":"value128","field129":"value129","field130":"value130","field131":"value131","field132":"value132"},{"field133":"value133","field134":"value134","field135":"value135","field136":"value136","field137":"value137","field138":"value138","field139":"value139","field140":"value140"},{"field141":"value141","field142":"value142","field143":"value143","field144":"value144","field145":"value145","field146":"value146","field147":"value147","field148":"value148"},{"field149":"value149","field150":"value150","field151":"value151","field152":"value152","field153":"value153","field154":"value154","field155":"value155","field156":"value156"},{"field157":"value157","field158":"value158","field159":"value159","field160":"value160","field161":"value161","field162":"value162","field163":"value163","field164":"value164"},{"field165":"value165","field166":"value166","field167":"value167","field168":"value168","field169":"value169","field170":"value170","field171":"value171","field172":"value172"}
{"id":"409","field2":"value2","code":"EG","title":"My Registry Title","field5":"value5","field6":"value6","field7":"value7","field8":"value8","field9":"value9","field10":"value10","field11":"value11","field12":"value12","field13":"value13","field14":"value14","field15":"value15","field16":"value16","field17":"value17","field18":"value18","field19":"value19","field20":"value20","field21":"value21","field22":"value22","field23":"value23","field24":"value24","field25":"value25","field26":"value26","field27":"value27","field28":"value28"},{"field29":"value29","field30":"value30","field31":"value31","field32":"value32","field33":"value33","field34":"value34","field35":"value35","field36":"value36"},{"field37":"value37","field38":"value38","field39":"value39","field40":"value40","field41":"value41","field42":"value42","field43":"value43","field44":"value44"},{"field45":"value45","field46":"value46","field47":"value47","field48":"value48","field49":"value49","field50":"value50","field51":"value51","field52":"value52"},{"field53":"value53","field54":"value54","field55":"value55","field56":"value56","field57":"value57","field58":"value58","field59":"value59","field60":"value60"},{"field61":"value61","field62":"value62","field63":"value63","field64":"value64","field65":"value65","field66":"value66","field67":"value67","field68":"value68"},{"field69":"value69","field70":"value70","field71":"value71","field72":"value72","field73":"value73","field74":"value74","field75":"value75","field76":"value76"},{"field77":"value77","field78":"value78","field79":"value79","field80":"value80","field81":"value81","field82":"value82","field83":"value83","field84":"value84"},{"field85":"value85","field86":"value86","field87":"value87","field88":"value88","field89":"value89","field90":"value90","field91":"value91","field92":"value92"},{"field93":"value93","field94":"value94","field95":"value95","field96":"value96","field97":"value97","field98":"value98","field99":"value99","field100":"value100"},{"field101":"value101","field102":"value102","field103":"value103","field104":"value104","field105":"value105","field106":"value106","field107":"value107","field108":"value108"}
<?php
/**
*
* @package
*/
//we might be getting POSTed json data from the back end sync
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$json = file_get_contents('php://input');
if ($json){
$data = json_decode($json, true);
/**
test to see if a straight linear POST works,
substantially the same code that works in the CPT admin update meta
**/
$post_id = wp_insert_post(array (
'post_type' => 'gwc_registry',
'post_title' => $data['title'],
'post_status' => 'publish',
'comment_status' => 'closed',
'ping_status' => 'closed'
));
/**
get_registry_fields() returns a keyed array of all fields
**/
$registry_meta_fields = get_registry_fields();
foreach ($registry_meta_fields as $key => $value){
$field_meta_key = "registry_" . $key;
update_post_meta( $post_id, $field_meta_key, $data[ $key ] );
}
exit();
}
}
do_action( 'get_header');
get_template_part('partials/header', '');
?>
<!-- archive page rendering -->
<?php
do_action( 'get_footer');
get_template_part('partials/footer', '');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment