# bit-form/1.9/includes/Core/Database/Helper.php

Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator &amp; Custom Form Builder, version 1.9. 170 lines.

- Page: https://pluginprobe.com/plugins/bit-form/1.9/code/includes/Core/Database/Helper.php
- Raw: https://pluginprobe.com/plugins/bit-form/1.9/raw/includes/Core/Database/Helper.php
- Modified: 2022-07-17T09:28:52+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/bit-form/1.9/code/includes/Core/Database/Helper.php#L10-L20`.

```php
<?php
namespace BitCode\BitForm\Core\Database;

final class Helper {
    // public static function getTableName($className)
    // {
    //     $className = str_replace('\\', '', $className);
    //     $className = str_replace('Model', '', $className);
    //     return strtolower($className);
    // }
    public function arrValueModifyByLogic( $operator, $value ) {
        $oprators = [
            'equal'          => '["' . implode( '","', $value ) . '"]',
            'not_equal'      => '["' . implode( '","', $value ) . '"]',
            'start_with'     => '["' . implode( '","', $value ) . '"%',
            'not_start_with' => '["' . implode( '","', $value ) . '"%',
            'end_with'       => '%"' . implode( '","', $value ) . '"]',
            'not_end_with'   => '%"' . implode( '","', $value ) . '"]',
            'contain'        => '%"' . implode( '","', $value ) . '"%',
            'not_contain'    => '%"' . implode( '","', $value ) . '"%',
            'empty'          => '',
            'not_empty'      => '',
        ];

        if ( isset( $oprators[$operator] ) ) {
            return $oprators[$operator];
        }

        return $value;
    }

    public function dateQueryList() {
        return [
            'today'          => 'Y-m-d_+0 days_=',
            'till_today'     => 'Y-m-d_+0 days_<=',
            'tomorrow'       => 'Y-m-d_+1 days_=',
            'till_tomorrow'  => 'Y-m-d_+1 days_<=',
            'yesterday'      => 'Y-m-d_-1 days_=',
            'till_yesterday' => 'Y-m-d_-1 days_<=',
            'last_7_days'    => 'Y-m-d_-7 days_>=',
            'last_30_days'   => 'Y-m-d_-30 days_>=',
            'last_60_days'   => 'Y-m-d_-60 days_>=',
            'last_90_days'   => 'Y-m-d_-90 days_>=',
            'last_120_days'  => 'Y-m-d_-120 days_>=',
            'next_7_days'    => 'Y-m-d_+7 days_>=',
            'next_30_days'   => 'Y-m-d_+30 days_>=',
            'next_60_days'   => 'Y-m-d_+60 days_>=',
            'next_90_days'   => 'Y-m-d_+90 days_>=',
            'next_120_days'  => 'Y-m-d_+120 days_>=',
            'current_month'  => 'm_+0 month_=',
            'next_month'     => 'm_first day of next month_=',
            'last_month'     => 'm_first day of last month_=',
            'current_week'   => 'W_0 week_=',
            'next_week'      => 'W_+1 week_=',
            'last_week'      => 'W_-1 week_=',
            'current_year'   => 'Y_+0 year_=',
            'next_year'      => 'Y_+1 year_=',
            'last_year'      => 'Y_-1 year_=',
        ];
    }

    public function strValueModifyByLogic( $operator, $value ) {
        $timeInterval = $this->dateQueryList();

        if ( isset( $timeInterval[$operator] ) ) {
            $data = explode( '_', $timeInterval[$operator] );
            if ( is_array( $data ) && count( $data ) > 0 ) {
                $value = date( $data[0], strtotime( $data[1] ) );
            }
        }

        $oprators = [
            'greater_than'       => (int) $value,
            'less_than'          => (int) $value,
            'greater_than_equal' => (int) $value,
            'less_than_equal'    => (int) $value,
            'start_with'         => $value . '%',
            'end_with'           => '%' . $value,
            'contain'            => '%' . $value . '%',
            'empty'              => '',
            'not_empty'          => '',
            'not_start_with'     => $value . '%',
            'not_end_with'       => '%' . $value,
            'not_contain'        => '%' . $value . '%',
        ];

        if ( isset( $oprators[$operator] ) ) {
            $value = $oprators[$operator];
        }

        if ( is_array( $value ) ) {
            $value = implode( ',', $value );
        }

        return $value;

    }

    public function convertToSqlOperator( $operator ) {

        $timeInterval = $this->dateQueryList();

        if ( isset( $timeInterval[$operator] ) ) {
            $data = explode( '_', $timeInterval[$operator] );
            return $data[2];
        }

        $oprators = [
            'greater_than'       => '>',
            'less_than'          => '<',
            'greater_than_equal' => '>=',
            'less_than_equal'    => '<=',
            'equal'              => '=',
            'not_equal'          => '!=',
            'empty'              => '=',
            'not_empty'          => '!=',
            'start_with'         => 'LIKE',
            'not_start_with'     => 'NOT LIKE',
            'end_with'           => 'LIKE',
            'not_end_with'       => 'NOT LIKE',
            'contain'            => 'LIKE',
            'not_contain'        => 'NOT LIKE',
        ];

        if ( isset( $oprators[$operator] ) ) {
            return $oprators[$operator];
        }

        return $operator;
    }

    public function fieldQueryByDate( $fld, $operator, $value, $logic ) {

        $currentYear = date( 'Y' );

        $sql = '';

        $daysInterval = [
            'today',
            'till_today',
            'tomorrow',
            'till_tomorrow',
            'yesterday',
            'till_yesterday',
            'last_7_days',
            'last_30_days',
            'last_60_days',
            'last_90_days',
            'last_120_days',
            'next_7_days',
            'next_30_days',
            'next_60_days',
            'next_90_days',
            'next_120_days',
        ];
        if ( in_array( $logic, $daysInterval ) ) {
            $sql = "`$fld` $operator '$value'";
        }

        if ( in_array( $logic, ['current_month', 'next_month', 'last_month'] ) ) {
            $sql = "MONTH(`$fld`) $operator '$value' AND YEAR(`$fld`) = '$currentYear'";
        }

        if ( in_array( $logic, ['current_week', 'next_week', 'last_week'] ) ) {
            $sql = "WEEK(`$fld`) $operator '$value' AND YEAR(`$fld`) = $currentYear";
        }
        return $sql;
    }
}

```
