| Current Path : /var/www/cesa.co.za/crons/ |
| Current File : /var/www/cesa.co.za/crons/awards-from-forminator-direct.php |
<?php
// Start output buffering
ob_start();
// Basic error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo "=== Direct Database Awards Script ===\n";
echo "PHP Version: " . phpversion() . "\n";
echo "Current directory: " . getcwd() . "\n";
// Set document root
if (!isset($_SERVER['DOCUMENT_ROOT']) || strlen($_SERVER['DOCUMENT_ROOT']) <= 0) {
$_SERVER['DOCUMENT_ROOT'] = str_replace('/crons', '', getcwd());
}
echo "Document root: " . $_SERVER['DOCUMENT_ROOT'] . "\n";
// Step 1: Extract database settings from wp-config.php
echo "\nStep 1: Extracting database settings\n";
$wp_config_path = $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php';
if (file_exists($wp_config_path)) {
echo "✓ wp-config.php found\n";
// Read and extract database settings
$wp_config_content = file_get_contents($wp_config_path);
preg_match("/define\(\s*'DB_HOST',\s*'([^']+)'\s*\)/", $wp_config_content, $db_host_match);
preg_match("/define\(\s*'DB_USER',\s*'([^']+)'\s*\)/", $wp_config_content, $db_user_match);
preg_match("/define\(\s*'DB_NAME',\s*'([^']+)'\s*\)/", $wp_config_content, $db_name_match);
preg_match("/define\(\s*'DB_PASSWORD',\s*'([^']*)'\s*\)/", $wp_config_content, $db_password_match);
if ($db_host_match && $db_user_match && $db_name_match) {
$db_host = $db_host_match[1];
$db_user = $db_user_match[1];
$db_name = $db_name_match[1];
$db_password = $db_password_match[1] ?? '';
echo "✓ Database settings extracted:\n";
echo " Host: $db_host\n";
echo " User: $db_user\n";
echo " Database: $db_name\n";
} else {
echo "✗ Could not extract database settings\n";
exit(1);
}
} else {
echo "✗ wp-config.php not found\n";
exit(1);
}
// Step 2: Load your custom files
echo "\nStep 2: Loading custom files\n";
try {
echo " Loading ADOdb...\n";
include_once($_SERVER['DOCUMENT_ROOT'] . "/ADOdb/adodb.inc.php");
echo "✓ ADOdb loaded\n";
echo " Loading vendor autoload...\n";
include_once($_SERVER['DOCUMENT_ROOT'] . "/vendor/autoload.php");
echo "✓ Vendor autoload loaded\n";
echo " Loading config...\n";
include_once($_SERVER['DOCUMENT_ROOT'] . "/cfg/config.php");
echo "✓ Config loaded\n";
echo " Loading sqlFunctions...\n";
include_once($_SERVER['DOCUMENT_ROOT'] . "/php/includes/sqlFunctions.php");
echo "✓ sqlFunctions loaded\n";
echo " Loading BaseTableClass...\n";
include_once($_SERVER['DOCUMENT_ROOT'] . "/php/includes/BaseTableClass.php");
echo "✓ BaseTableClass loaded\n";
echo " Loading MemberFirm...\n";
include_once($_SERVER['DOCUMENT_ROOT'] . "/php/includes/MemberFirm.php");
echo "✓ MemberFirm loaded\n";
} catch (Exception $e) {
echo "✗ Error loading custom files: " . $e->getMessage() . "\n";
exit(1);
}
// Step 3: Create database connections
echo "\nStep 3: Creating database connections\n";
try {
// Create WordPress database connection using your custom class
$sqlfWP = new sqlFunctions(WP_HOST, WPDB_USER, WPDB_PASS, WPDB_DB);
echo "✓ WordPress database connection created\n";
// Also create a direct PDO connection for testing
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "✓ Direct PDO connection created\n";
} catch (Exception $e) {
echo "✗ Error creating database connections: " . $e->getMessage() . "\n";
exit(1);
}
// Step 4: Query for forminator forms directly
echo "\nStep 4: Querying for forminator forms\n";
$wpFormsSQL = "SELECT * FROM wp_posts p "
. "INNER JOIN wp_postmeta pm ON p.id = pm.post_id "
. "WHERE p.post_type = 'forminator_forms'";
echo "Executing query: " . $wpFormsSQL . "\n";
try {
$wpForms = $sqlfWP->getAll($wpFormsSQL);
echo "✓ Query executed successfully\n";
echo "Found " . count($wpForms) . " forminator forms\n";
} catch (Exception $e) {
echo "✗ Error executing query: " . $e->getMessage() . "\n";
exit(1);
}
// Step 5: Process forms without WordPress functions
echo "\nStep 5: Processing forms\n";
$forms = array();
foreach ($wpForms as $wpForm) {
echo "Processing form ID: " . $wpForm['ID'] . "\n";
try {
// Get form meta directly from database instead of using get_post_meta
$metaSQL = "SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id = " . $wpForm['ID'];
$formMeta = $sqlfWP->getAll($metaSQL);
echo " Found " . count($formMeta) . " meta fields\n";
// Find forminator_form_meta
$forminatorMeta = null;
foreach ($formMeta as $meta) {
if ($meta['meta_key'] === 'forminator_form_meta') {
$forminatorMeta = unserialize($meta['meta_value']);
break;
}
}
if (!$forminatorMeta) {
echo " ✗ Could not find or unserialize forminator_form_meta for form ID: " . $wpForm['ID'] . "\n";
continue;
}
$formName = $forminatorMeta['settings']['form_name'] ?? 'unknown';
echo " Processing form: " . $formName . "\n";
$forms[$formName] = array(
'name' => $forminatorMeta['settings']['formName'] ?? $formName,
'fields' => array(),
'entries' => array()
);
// Process form fields
if (isset($forminatorMeta['fields']) && is_array($forminatorMeta['fields'])) {
foreach ($forminatorMeta['fields'] as $field) {
if (isset($field['field_label'])) {
$forms[$formName]['fields'][$field['id']] = array('label' => $field['field_label']);
}
}
}
// Get form entries
$entrySQL = "SELECT * FROM wp_frmt_form_entry WHERE form_id = " . $wpForm['ID'];
$formEntries = $sqlfWP->getAll($entrySQL);
echo " Found " . count($formEntries) . " entries\n";
// Process each entry
foreach ($formEntries as $formEntry) {
echo " Processing entry ID: " . $formEntry['entry_id'] . "\n";
$oneEntry = array(
'ExternalFormID' => $formName,
'ExternalEntryID' => $formEntry['entry_id'],
'EntryFormName' => $forminatorMeta['settings']['formName'] ?? $formName,
'FirmName' => '',
'FormFields' => array(),
'PreEntryHTML' => '<table border="0" cellpadding="4" cellspacing="0" border="0">',
'FullEntryHTML' => '',
'JV_Partners' => '',
);
// Process each field in the entry
foreach ($forms[$formName]['fields'] as $fieldId => $vals) {
$fieldSQL = "SELECT * FROM wp_frmt_form_entry_meta WHERE entry_id = " . $formEntry['entry_id'] . " AND meta_key = '" . $fieldId . "'";
$fieldValue = $sqlfWP->getRow($fieldSQL);
$labelText = trim($forms[$formName]['fields'][$fieldId]['label']);
if (is_array($fieldValue) && isset($fieldValue['meta_value'])) {
// Process field value based on field type and label
if (in_array($fieldId, array('text-1'))) {
$oneEntry['Firm_Name'] = $fieldValue['meta_value'];
}
if (
$labelText == 'Which awards category(ies) are you entering for? (Please select all relevant)' ||
$labelText == 'Name of Award Category' ||
$labelText == 'Which Award Category is the Submission for?'
) {
$numEntries = 0;
if (strpos(' ' . $fieldValue['meta_value'], '{') > 0) {
$fieldValue['meta_value'] = unserialize($fieldValue['meta_value']);
if (is_array($fieldValue['meta_value'])) {
$numEntries = count($fieldValue['meta_value']);
$fieldValue['meta_value'] = implode(', ', $fieldValue['meta_value']);
}
}
if ($numEntries <= 0) {
$numEntries = 1;
}
$oneEntry['Award_Category'] = $fieldValue['meta_value'];
}
$oneEntry['FormFields'][] = array(
'id' => $fieldId,
'label' => $labelText,
'value' => $fieldValue['meta_value'],
);
}
}
// Build HTML for the entry
foreach ($oneEntry['FormFields'] as $oneFormField) {
if (is_array($oneFormField['value'])) {
$oneFormField['value'] = print_r($oneFormField['value'], true);
}
$oneEntry['PreEntryHTML'] .= '<tr><td align="left" valign="top" width="40%"><b>' . $oneFormField['label'] . ':</b></td><td align="left" valign="top">' . $oneFormField['value'] . '</td></tr>';
}
$oneEntry['PreEntryHTML'] .= '</table>';
$forms[$formName]['entries'][] = $oneEntry;
var_dump($oneEntry);
exit;
}
echo " Processed " . count($forms[$formName]['entries']) . " entries for form: " . $formName . "\n";
} catch (Exception $e) {
echo " ✗ Error processing form ID " . $wpForm['ID'] . ": " . $e->getMessage() . "\n";
continue;
}
}
echo "\n=== Script completed successfully ===\n";
echo "Processed " . count($forms) . " forms\n";
// Show summary
foreach ($forms as $formName => $formData) {
echo "Form: " . $formName . " - " . count($formData['entries']) . " entries\n";
}
// Flush output buffer
ob_end_flush();