HEX
Server: Apache/2.2.15 (CentOS)
System: Linux ip-10-0-2-146.eu-west-1.compute.internal 2.6.32-754.35.1.el6.centos.plus.x86_64 #1 SMP Sat Nov 7 11:33:42 UTC 2020 x86_64
User: root (0)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /www/exchange0old/exchange/admin/cron/transaction_relation_fix.php
<?php
/**
 * Created by PhpStorm.
 * User: Admin
 * Date: 07.09.2016
 * Time: 17:48
 */

if (php_sapi_name() != 'cli') {
    exit();
}

require_once('../../Bin/init.php');
require_once(ROOT_FOLDER . 'Bin/Security.php');
require_once(ROOT_FOLDER . '/Bin/constants.php');

$query = new Bin_Query();
$table = 'transaction_relations';
$viewQuery = "SELECT trans.manual_transaction_id,
              trans.notes
              FROM manual_transactions AS trans
              WHERE trans.status = 1 AND trans.notes LIKE 'TB from #%'
              UNION
              SELECT rej_trans.manual_transaction_id,
              rej_trans.notes
              FROM manual_transactions_rejected AS rej_trans
              WHERE rej_trans.status = 1 AND rej_trans.notes LIKE 'TB from #%'";

$query->executeQuery($viewQuery);
$transactions = $query->records;
$transactionIds = array();
$output = array();
foreach ($transactions as $transaction) {
    $child_id = (int)$transaction['manual_transaction_id'];
    if (stripos($transaction['notes'], 'TB from #') !== false) {
        $n = str_replace('TB from #', '', $transaction['notes']);
        $n = explode(' ', $n);
        $parent_id = (int)$n[0];
        $output[] = array('parent_transaction_id' => $parent_id, 'transaction_id' => $child_id);
        $transactionIds[] = $child_id;
    }
}

$updateSqlQuery = "UPDATE $table SET parent_transaction_id = CASE ";
foreach ($output as $value) {
    $parent_id = empty($value['parent_transaction_id']) ? 'NULL' : $value['parent_transaction_id'];
    $child_id = $value['transaction_id'];
    $updateSqlQuery .= "WHEN transaction_id = '$child_id' THEN '$parent_id' ";
}
$updateSqlQuery .= "END WHERE transaction_id IN (" . implode(',', $transactionIds) . ")";
$query->executeQuery($updateSqlQuery);

echo "Found and updated " . count($output) . " relations.";