diff --git a/ninjamail.class.php b/ninjamail.class.php index 5898a32..3b20cf5 100644 --- a/ninjamail.class.php +++ b/ninjamail.class.php @@ -1,318 +1,327 @@ -host = $host; - if ($key) $this->key = $key; - } - - public function check() - { - if (!$this->host || !$this->key) - return false; - return true; - } - - public function process($f, $data, $post_method = true) - { - $ch = curl_init($this->host.'/a/'.$f.'/?key='.$this->key); - curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - $data = curl_exec($ch); - curl_close($ch); - - $data = @(object)json_decode($data); - $this->data = $data; - return $data; - } - - public function login() - { - return $this->process('login', ['rkey' => md5(time().rand(0,65500).rand(0,10))]); - } - -} - - -// Send Email -class ninjaMailSend extends ninjaMail -{ - - private $to; - private $subject; - private $message; - private $message_text; - - public function to($to) - { - $this->to = $to; - return true; - } - - public function subject($s) - { - $this->subject = $s; - return true; - } - - public function message($m, $t = false) - { - $this->message = $m; - if (!$t) $this->message_text = trim(strip_tags($m)); - else $this->message_text = $t; - return true; - } - - public function send() - { - $post = [ - 'to' => $this->to, - 'subject' => $this->subject, - 'message' => $this->message, - 'message_text' => $this->message_text - ]; - return $this->process('send', $post, true)->status == 'message_queued' ? true : false; - } -} - - -// Subscribe -class ninjaMailSubscription extends ninjaMail -{ - - private $list; - private $activated = false; - - public function list($id) - { - if (is_numeric($id)) - { - $this->list = $id; - return true; - } - return false; - } - - public function activated($s) - { - if ($s) $this->activated = 1; - else $this->activated = 0; - return true; - } - - public function subscribe($email, $name = '') - { - if (!$this->list || !is_numeric($this->activated)) - return false; - - $post = [ - 'list' => $this->list, - 'name' => $name, - 'email' => $email, - 'activated' => $this->activated - ]; - return $this->process('subscribe', $post, true)->status == 'success' ? true : false; - } - - public function unsubscribe($email) - { - if (!$this->list) - return false; - - $post = [ - 'list' => $this->list, - 'email' => $email - ]; - return $this->process('unsubscribe', $post, true)->status == 'success' ? true : false; - } -} - - -// Newsletter -class ninjaMailNewsletter extends ninjaMail -{ - - private $newsletter; - private $subject; - private $message; - private $message_text; - - - public function newsletter($id = false) - { - if (is_numeric($id)) - { - $this->newsletter = $id; - return true; - } - return $this->newsletter; - } - - public function subject($s) - { - $this->subject = $s; - return true; - } - - public function message($m, $t = false) - { - $this->message = $m; - if (!$t) $this->message_text = trim(strip_tags($m)); - else $this->message_text = $t; - return true; - } - - public function query($update = false) - { - if (!$this->message) - return false; - - $post = [ - 'new' => true, - 'id' => $update ? $this->newsletter : false, - 'subject' => $this->subject, - 'message' => $this->message, - 'message_text' => $this->message_text - ]; - $data = $this->process('newsletter', $post, true); - if ($data->status == 'success') - { - $this->newsletter = $data->id; - return $data->id; - } - return false; - } - - public function create() - { - return $this->query(false); - } - - public function update() - { - if (!$this->newsletter) - return false; - - return $this->query(true); - } - - public function send($time = false) - { - if (!$this->newsletter) - return false; - - $post = [ - 'send' => true, - 'id' => $this->newsletter, - 'start' => $time ? $time : 0 - ]; - $data = $this->process('newsletter', $post, true); - if ($data->status == 'success' || $this->status == 'already_queued') - return true; - - return false; - } - - public function get() - { - return $this->process('newsletter', ['get' => true], true); - } -} - - -// Campaign -class ninjaMailCampaign extends ninjaMail -{ - private $campaign; - - public function campaign($id = false) - { - if (!$id) - return $this->campaign; - - if (is_numeric($id)) - { - $this->campaign = $id; - return true; - } - return false; - } - - public function create($name) - { - $post = [ - 'new' => true, - 'name' => $name - ]; - $data = $this->process('campaign', $post, true); - if ($data->status == 'success') - { - $this->campaign = $data->id; - return $data->id; - } - - return false; - } - - public function remove() - { - $post = [ - 'remove' => true, - 'id' => $this->campaign - ]; - return $this->process('campaign', $post, true)->status == 'success' ? true : false; - } - - public function update($lists) - { - if (!is_array($lists)) - return false; - - $post = [ - 'update' => true, - 'id' => $this->campaign, - 'lists' => $lists - ]; - return $this->process('campaign', $post, true)->status == 'success' ? true : false; - } - - public function attach($newsletter) - { - if (!is_numeric($newsletter)) - return false; - - $post = [ - 'relations' => true, - 'id' => $this->campaign, - 'newsletter' => $newsletter - ]; - return $this->process('campaign', $post, true)->status == 'success' ? true : false; - } -} - - -// Statistics -class ninjaMailStatistics extends ninjaMail -{ - - public function get($id) - { - if (!is_numeric($id)) - return false; - - $post = [ - 'newsletter' => $id, - 'type' => 1 - ]; - return $this->process('statistics', $post, true); - } - -} +host = $host; + if ($key) $this->key = $key; + } + + public function check() + { + if (!$this->host || !$this->key) + return false; + return true; + } + + public function process($f, $data, $post_method = true) + { + $ch = curl_init($this->host.'/a/'.$f.'/?key='.$this->key); + curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + $data = curl_exec($ch); + curl_close($ch); + + $data = @(object)json_decode($data); + $this->data = $data; + return $data; + } + + public function login() + { + return $this->process('login', ['rkey' => md5(time().rand(0,65500).rand(0,10))]); + } + +} + + +// Send Email +class ninjaMailSend extends ninjaMail +{ + + private $to; + private $subject; + private $message; + private $message_text; + + public function to($to) + { + $this->to = $to; + return true; + } + + public function subject($s) + { + $this->subject = $s; + return true; + } + + public function message($m, $t = false) + { + $this->message = $m; + if (!$t) $this->message_text = trim(strip_tags($m)); + else $this->message_text = $t; + return true; + } + + public function send() + { + $post = [ + 'to' => $this->to, + 'subject' => $this->subject, + 'message' => $this->message, + 'message_text' => $this->message_text + ]; + return $this->process('send', $post, true)->status == 'message_queued' ? true : false; + } +} + + +// Subscribe +class ninjaMailSubscription extends ninjaMail +{ + + private $list; + private $activated = 0; + private $forcenamechange = 0; + + public function list($id) + { + if (is_numeric($id)) + { + $this->list = $id; + return true; + } + return false; + } + + public function activated($s) + { + if ($s) $this->activated = 1; + else $this->activated = 0; + return true; + } + + public function namechange($s) + { + if ($s) $this->forcenamechange = 1; + else $this->forcenamechange = 0; + return true; + } + + public function subscribe($email, $name = '') + { + if (!$this->list || !is_numeric($this->activated)) + return false; + + $post = [ + 'list' => $this->list, + 'name' => $name, + 'email' => $email, + 'activated' => $this->activated, + 'forcenamechange' => $this->forcenamechange + ]; + return $this->process('subscribe', $post, true)->status == 'success' ? true : false; + } + + public function unsubscribe($email) + { + if (!$this->list) + return false; + + $post = [ + 'list' => $this->list, + 'email' => $email + ]; + return $this->process('unsubscribe', $post, true)->status == 'success' ? true : false; + } +} + + +// Newsletter +class ninjaMailNewsletter extends ninjaMail +{ + + private $newsletter; + private $subject; + private $message; + private $message_text; + + + public function newsletter($id = false) + { + if (is_numeric($id)) + { + $this->newsletter = $id; + return true; + } + return $this->newsletter; + } + + public function subject($s) + { + $this->subject = $s; + return true; + } + + public function message($m, $t = false) + { + $this->message = $m; + if (!$t) $this->message_text = trim(strip_tags($m)); + else $this->message_text = $t; + return true; + } + + public function query($update = false) + { + if (!$this->message) + return false; + + $post = [ + 'new' => true, + 'id' => $update ? $this->newsletter : false, + 'subject' => $this->subject, + 'message' => $this->message, + 'message_text' => $this->message_text + ]; + $data = $this->process('newsletter', $post, true); + if ($data->status == 'success') + { + $this->newsletter = $data->id; + return $data->id; + } + return false; + } + + public function create() + { + return $this->query(false); + } + + public function update() + { + if (!$this->newsletter) + return false; + + return $this->query(true); + } + + public function send($time = false) + { + if (!$this->newsletter) + return false; + + $post = [ + 'send' => true, + 'id' => $this->newsletter, + 'start' => $time ? $time : 0 + ]; + $data = $this->process('newsletter', $post, true); + if ($data->status == 'success' || $this->status == 'already_queued') + return true; + + return false; + } + + public function get() + { + return $this->process('newsletter', ['get' => true], true); + } +} + + +// Campaign +class ninjaMailCampaign extends ninjaMail +{ + private $campaign; + + public function campaign($id = false) + { + if (!$id) + return $this->campaign; + + if (is_numeric($id)) + { + $this->campaign = $id; + return true; + } + return false; + } + + public function create($name) + { + $post = [ + 'new' => true, + 'name' => $name + ]; + $data = $this->process('campaign', $post, true); + if ($data->status == 'success') + { + $this->campaign = $data->id; + return $data->id; + } + + return false; + } + + public function remove() + { + $post = [ + 'remove' => true, + 'id' => $this->campaign + ]; + return $this->process('campaign', $post, true)->status == 'success' ? true : false; + } + + public function update($lists) + { + if (!is_array($lists)) + return false; + + $post = [ + 'update' => true, + 'id' => $this->campaign, + 'lists' => $lists + ]; + return $this->process('campaign', $post, true)->status == 'success' ? true : false; + } + + public function attach($newsletter) + { + if (!is_numeric($newsletter)) + return false; + + $post = [ + 'relations' => true, + 'id' => $this->campaign, + 'newsletter' => $newsletter + ]; + return $this->process('campaign', $post, true)->status == 'success' ? true : false; + } +} + + +// Statistics +class ninjaMailStatistics extends ninjaMail +{ + + public function get($id) + { + if (!is_numeric($id)) + return false; + + $post = [ + 'newsletter' => $id, + 'type' => 1 + ]; + return $this->process('statistics', $post, true); + } + +}