addValidations('name', array( 'required' => __('You need to specify a name.') )); } function subscribers() { return $this->has_many_through( __NAMESPACE__.'\Subscriber', __NAMESPACE__.'\SubscriberSegment', 'segment_id', 'subscriber_id' ); } function newsletters() { return $this->has_many_through( __NAMESPACE__.'\Newsletter', __NAMESPACE__.'\NewsletterSegment', 'segment_id', 'newsletter_id' ); } static function search($orm, $search = '') { return $orm->where_like('name', '%'.$search.'%'); } static function groups() { return array( array( 'name' => 'all', 'label' => __('All'), 'count' => Segment::count() ) ); } static function group($orm, $group = null) { } static function createOrUpdate($data = array()) { $segment = false; if(isset($data['id']) && (int)$data['id'] > 0) { $segment = self::findOne((int)$data['id']); } if($segment === false) { $segment = self::create(); $segment->hydrate($data); } else { unset($data['id']); $segment->set($data); } $saved = $segment->save(); if($saved === true) { return true; } else { $errors = $segment->getValidationErrors(); if(!empty($errors)) { return $errors; } } return false; } static function trash($listing) { return $listing->getSelection()->deleteMany(); } }