# give/4.16.8/src/TestData/Framework/MetaRepository.php

GiveWP – Donation Plugin and Fundraising Platform, version 4.16.8. 52 lines.

- Page: https://pluginprobe.com/plugins/give/4.16.8/code/src/TestData/Framework/MetaRepository.php
- Raw: https://pluginprobe.com/plugins/give/4.16.8/raw/src/TestData/Framework/MetaRepository.php
- Modified: 2021-11-23T23:55:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/give/4.16.8/code/src/TestData/Framework/MetaRepository.php#L10-L20`.

```php
<?php

namespace Give\TestData\Framework;

class MetaRepository
{

    /** @var string */
    protected $tableName;

    /** @var string */
    protected $relationshipColumnName;

    /**
     * @param string $relationshipColumnName
     */
    public function __construct($tableName, $relationshipColumnName)
    {
        global $wpdb;
        $this->wpdb = $wpdb;
        $this->tableName = $wpdb->prefix . $tableName;
        $this->relationshipColumnName = $relationshipColumnName;
    }

    public function persist($relationshipID, $metaData)
    {
        $values = array_map(
            function ($metaKey, $metaValue) use ($relationshipID) {
                return sprintf("( %s, '%s', '%s' )", $relationshipID, esc_sql($metaKey), esc_sql($metaValue));
            },
            array_keys($metaData),
            $metaData
        );

        $this->wpdb->query(
            $this->getSql($values)
        );
    }

    protected function getSql($values)
    {
        $format = "INSERT INTO $this->tableName {$this->getColumns()} VALUES %s";

        return sprintf($format, implode(',', $values));
    }

    protected function getColumns()
    {
        return sprintf('( %s, meta_key, meta_value )', $this->relationshipColumnName);
    }
}

```
