[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@52.15.57.54: ~ $
<?php

namespace MailPoet\Models;

if (!defined('ABSPATH')) exit;


/**
 * @property int $id
 * @property int $subscriberId
 * @property int $segmentId
 * @property string $status
 */

class SubscriberSegment extends Model {
  public static $_table = MP_SUBSCRIBER_SEGMENT_TABLE; // phpcs:ignore PSR2.Classes.PropertyDeclaration

  public function subscriber() {
    return $this->has_one(__NAMESPACE__ . '\Subscriber', 'id', 'subscriber_id');
  }

  public static function unsubscribeFromSegments($subscriber, $segmentIds = []) {
    if (!$subscriber) return false;

    // Reset confirmation emails count, so user can resubscribe
    $subscriber->countConfirmations = 0;
    $subscriber->save();

    $wpSegment = Segment::getWPSegment();

    if (!empty($segmentIds)) {
      // unsubscribe from segments
      foreach ($segmentIds as $segmentId) {

        // do not remove subscriptions to the WP Users segment
        if ($wpSegment !== false && (int)$wpSegment->id === (int)$segmentId) {
          continue;
        }

        if ((int)$segmentId > 0) {
          self::createOrUpdate([
            'subscriber_id' => $subscriber->id,
            'segment_id' => $segmentId,
            'status' => Subscriber::STATUS_UNSUBSCRIBED,
          ]);
        }
      }
    } else {
      // unsubscribe from all segments (except the WP users and WooCommerce customers segments)
      $subscriptions = self::where('subscriber_id', $subscriber->id);

      if ($wpSegment !== false) {
        $subscriptions = $subscriptions->whereNotEqual(
          'segment_id', $wpSegment->id
        );
      }

      $subscriptions->findResultSet()
        ->set('status', Subscriber::STATUS_UNSUBSCRIBED)
        ->save();
    }
    return true;
  }

  public static function resubscribeToAllSegments($subscriber) {
    if ($subscriber === false) return false;
    // (re)subscribe to all segments linked to the subscriber
    return self::where('subscriber_id', $subscriber->id)
      ->findResultSet()
      ->set('status', Subscriber::STATUS_SUBSCRIBED)
      ->save();
  }

  public static function subscribeToSegments($subscriber, $segmentIds = []) {
    if ($subscriber === false) return false;
    if (!empty($segmentIds)) {
      // subscribe to specified segments
      foreach ($segmentIds as $segmentId) {
        if ((int)$segmentId > 0) {
          self::createOrUpdate([
            'subscriber_id' => $subscriber->id,
            'segment_id' => $segmentId,
            'status' => Subscriber::STATUS_SUBSCRIBED,
          ]);
        }
      }
      return true;
    }
  }

  public static function resetSubscriptions($subscriber, $segmentIds = []) {
    self::unsubscribeFromSegments($subscriber);
    return self::subscribeToSegments($subscriber, $segmentIds);
  }

  public static function subscribeManyToSegments(
    $subscriberIds = [],
    $segmentIds = []
  ) {
    if (empty($subscriberIds) || empty($segmentIds)) {
      return false;
    }

    // create many subscriptions to each segment
    $values = [];
    $rowCount = 0;
    foreach ($segmentIds as &$segmentId) {
      foreach ($subscriberIds as &$subscriberId) {
        $values[] = (int)$subscriberId;
        $values[] = (int)$segmentId;
        $rowCount++;
      }
    }

    $query = [
      'INSERT IGNORE INTO `' . self::$_table . '`',
      '(`subscriber_id`, `segment_id`, `created_at`)',
      'VALUES ' . rtrim(str_repeat('(?, ?, NOW()),', $rowCount), ','),
    ];
    self::rawExecute(join(' ', $query), $values);

    return true;
  }

  public static function deleteManySubscriptions($subscriberIds = [], $segmentIds = []) {
    if (empty($subscriberIds)) return false;

    // delete subscribers' relations to segments (except WP and WooCommerce segments)
    $subscriptions = self::whereIn(
      'subscriber_id', $subscriberIds
    );

    $wpSegment = Segment::getWPSegment();
    $wcSegment = Segment::getWooCommerceSegment();
    if ($wpSegment !== false) {
      $subscriptions = $subscriptions->whereNotEqual(
        'segment_id', $wpSegment->id
      );
    }
    if ($wcSegment !== false) {
      $subscriptions = $subscriptions->whereNotEqual(
        'segment_id', $wcSegment->id
      );
    }

    if (!empty($segmentIds)) {
      $subscriptions = $subscriptions->whereIn('segment_id', $segmentIds);
    }

    return $subscriptions->deleteMany();
  }

  public static function deleteSubscriptions($subscriber, $segmentIds = []) {
    if ($subscriber === false) return false;

    $wpSegment = Segment::getWPSegment();
    $wcSegment = Segment::getWooCommerceSegment();

    $subscriptions = self::where('subscriber_id', $subscriber->id)
      ->whereNotIn('segment_id', [$wpSegment->id, $wcSegment->id]);

    if (!empty($segmentIds)) {
      $subscriptions = $subscriptions->whereIn('segment_id', $segmentIds);
    }
    return $subscriptions->deleteMany();
  }

  public static function subscribed($orm) {
    return $orm->where('status', Subscriber::STATUS_SUBSCRIBED);
  }

  public static function createOrUpdate($data = []) {
    $keys = false;
    if (isset($data['subscriber_id']) && isset($data['segment_id'])) {
      $keys = [
        'subscriber_id' => (int)$data['subscriber_id'],
        'segment_id' => (int)$data['segment_id'],
      ];
    }
    return parent::_createOrUpdate($data, $keys);
  }
}

Filemanager

Name Type Size Permission Actions
CustomField.php File 3.79 KB 0644
DynamicSegment.php File 4.05 KB 0644
DynamicSegmentFilter.php File 1.35 KB 0644
Form.php File 4.02 KB 0644
MappingToExternalEntities.php File 378 B 0644
Model.php File 13.58 KB 0644
ModelValidator.php File 2.44 KB 0644
Newsletter.php File 15.14 KB 0644
NewsletterLink.php File 530 B 0644
NewsletterOption.php File 670 B 0644
NewsletterOptionField.php File 939 B 0644
NewsletterSegment.php File 312 B 0644
ScheduledTask.php File 6.58 KB 0644
ScheduledTaskSubscriber.php File 5.31 KB 0644
Segment.php File 10.89 KB 0644
SendingQueue.php File 4.31 KB 0644
StatisticsClicks.php File 1.08 KB 0644
StatisticsForms.php File 1.85 KB 0644
StatisticsNewsletters.php File 1.61 KB 0644
StatisticsOpens.php File 807 B 0644
StatisticsUnsubscribes.php File 821 B 0644
StatisticsWooCommercePurchases.php File 1.5 KB 0644
Subscriber.php File 20.83 KB 0644
SubscriberCustomField.php File 2.5 KB 0644
SubscriberIP.php File 1.12 KB 0644
SubscriberSegment.php File 5.2 KB 0644
index.php File 0 B 0644