[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.143.17.75: ~ $
<?php
/**
 * SegmentPlugin for phplist.
 *
 * This file is a part of SegmentPlugin.
 *
 * SegmentPlugin is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * CriteriaPlugin is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * @category  phplist
 *
 * @author    Duncan Cameron
 * @copyright 2014-2016 Duncan Cameron
 * @license   http://www.gnu.org/licenses/gpl.html GNU General Public License, Version 3
 */

/**
 * @category  phplist
 */
abstract class SegmentPlugin_DateConditionBase extends SegmentPlugin_Condition
{
    /**
     * To be implemented by sub-classes.
     * A subclass must provide a set of callbacks that return
     *     the join clause
     *     the where clause for each operator.
     *
     * @return array
     */
    abstract protected function queryCallBacks();

    protected function validateInterval($interval)
    {
        if (!preg_match('/^([+-]?\d+\s+(day|week|month|quarter|year))s?$/i', $interval, $matches)) {
            throw new SegmentPlugin_ValueException();
        }

        return $matches[1];
    }

    protected function validateDates($op, $value)
    {
        if (!(is_array($value) && $value[0])) {
            throw new SegmentPlugin_ValueException();
        }

        try {
            $target1 = new DateTime($value[0]);
            $target1 = $target1->format('Y-m-d');
        } catch (Exception $e) {
            throw new SegmentPlugin_ValueException();
        }

        if ($op == SegmentPlugin_Operator::BETWEEN) {
            if (empty($value[1])) {
                throw new SegmentPlugin_ValueException();
            }
            try {
                $target2 = new DateTime($value[1]);
                $target2 = $target2->format('Y-m-d');
            } catch (Exception $e) {
                throw new SegmentPlugin_ValueException();
            }

            if ($target2 < $target1) {
                throw new SegmentPlugin_ValueException();
            }
        } else {
            $target2 = null;
        }

        return array($target1, $target2);
    }

    public function operators()
    {
        return array(
            SegmentPlugin_Operator::IS => s('is'),
            SegmentPlugin_Operator::AFTER => s('is after'),
            SegmentPlugin_Operator::BEFORE => s('is before'),
            SegmentPlugin_Operator::BETWEEN => s('is between'),
            SegmentPlugin_Operator::AFTERINTERVAL => s('after interval'),
        );
    }

    public function display($op, $value, $namePrefix)
    {
        if ($op == SegmentPlugin_Operator::ANNIVERSARY) {
            return '';
        }
        $value = (array) $value;
        $htmlOptions = array();

        if ($op != SegmentPlugin_Operator::AFTERINTERVAL) {
            $htmlOptions['class'] = 'flatpickr';
        }

        $html = CHtml::textField(
            $namePrefix . '[value][0]',
            $value[0],
            $htmlOptions
        );

        if ($op == SegmentPlugin_Operator::BETWEEN) {
            $html .= '&nbsp;';
            $html .= CHtml::textField(
                $namePrefix . '[value][1]',
                isset($value[1]) ? $value[1] : '',
                $htmlOptions
            );
        }

        return $html;
    }

    public function joinQuery($operator, $value)
    {
        $callBack = $this->queryCallBacks();
        $r = new stdClass();
        $r->join = $callBack['JOIN']();

        if ($operator == SegmentPlugin_Operator::ANNIVERSARY) {
            $r->where = $callBack[$operator]();
        } elseif ($operator == SegmentPlugin_Operator::AFTERINTERVAL) {
            $interval = $this->validateInterval($value[0]);
            $r->where = $callBack[$operator]($interval);
        } else {
            list($value1, $value2) = $this->validateDates($operator, $value);

            if ($operator == SegmentPlugin_Operator::BETWEEN) {
                $r->where = $callBack[$operator]($value1, $value2);
            } else {
                $r->where = $callBack[$operator]($value1);
            }
        }

        return $r;
    }
}

Filemanager

Name Type Size Permission Actions
Controller Folder 0755
lan Folder 0755
AttributeConditionCheckbox.php File 1.56 KB 0644
AttributeConditionCheckboxgroup.php File 2.37 KB 0644
AttributeConditionDate.php File 2.88 KB 0644
AttributeConditionSelect.php File 1.93 KB 0644
AttributeConditionText.php File 3.39 KB 0644
Condition.php File 2.1 KB 0644
ConditionException.php File 889 B 0644
ConditionFactory.php File 4.59 KB 0644
ControllerFactory.php File 1.54 KB 0644
DAO.php File 6.64 KB 0644
DateConditionBase.php File 4.3 KB 0644
NoConditionsException.php File 892 B 0644
Operator.php File 1.42 KB 0644
SavedSegments.php File 4.18 KB 0644
Segment.php File 7.35 KB 0644
SelectedSubscribersExport.php File 1.39 KB 0644
SubscriberConditionActivity.php File 6.46 KB 0644
SubscriberConditionEmail.php File 3.36 KB 0644
SubscriberConditionEntered.php File 1.73 KB 0644
SubscriberConditionIdentity.php File 1.85 KB 0644
SubscriberConditionListEntered.php File 1.74 KB 0644
SubscriberConditionLists.php File 1.82 KB 0644
ValueException.php File 925 B 0644
class_map.php File 2.45 KB 0644
depends.php File 1.74 KB 0644
export.php File 887 B 0644
script.html File 817 B 0644
sendtab.tpl.php File 3.56 KB 0644
styles.html File 1.14 KB 0644
version.txt File 15 B 0644
viewmessage.tpl.php File 1.51 KB 0644