Your IP : 216.73.217.79


Current Path : /var/www/cesa.co.za/crons/
Upload File :
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();