Example #1
0
 /**
  * Test fetch method
  */
 function testFetch()
 {
     $subscriber = ezcomSubscriber::fetch(1);
     $this->assertType('ezcomSubscriber', $subscriber);
     $subscriber = ezcomSubscriber::fetch(100);
     $this->assertEquals(null, $subscriber);
 }
Example #2
0
 /**
  * Test exists method
  */
 public function testExists()
 {
     $subscriptionType = 'ezcomcomment';
     //insert a subscriber object and subscription object
     $time = time();
     $testemail = '*****@*****.**';
     $subscriber = ezcomSubscriber::create();
     $subscriber->setAttribute('email', $testemail);
     $subscriber->setAttribute('user_id', 10);
     $subscriber->setAttribute('enabled', 0);
     $subscriber->store();
     $subscription = ezcomSubscription::create();
     $subscription->setAttribute('user_id', 15);
     $subscription->setAttribute('subscriber_id', $subscriber->attribute('id'));
     $subscription->setAttribute('subscription_type', $subscriptionType);
     $subscription->setAttribute('content_id', '210');
     $subscription->setAttribute('subscription_time', $time);
     $subscription->setAttribute('enabled', 1);
     $subscription->setAttribute('language_id', 2);
     $subscription->store();
     //1. test if the subscription exists by contentID
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType);
     $this->assertTrue($exists);
     $exists = ezcomSubscription::exists('20009', '2', $subscriptionType);
     $this->assertFalse($exists);
     $exists = ezcomSubscription::exists('20009', '2', 'othertypesssss');
     $this->assertFalse($exists);
     $exists = ezcomSubscription::exists('20009', '2', 'othertypesssss', null, null);
     $this->assertNull($exists);
     //2. test if the subsription exists by contenetID and enabled
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, null, 0);
     $this->assertTrue($exists);
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, null, 1);
     $this->assertFalse($exists);
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, null, 12);
     $this->assertNull($exists);
     //3. test if the subscription exists by contentID and email
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, $testemail);
     $this->assertTrue($exists);
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, '*****@*****.**');
     $this->assertFalse($exists);
     //4. test if the subscription exists by contentID, email and enabled
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, $testemail, 0);
     $this->assertTrue($exists);
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, $testemail, 1);
     $this->assertFalse($exists);
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, '*****@*****.**', 0);
     $this->assertFalse($exists);
     $exists = ezcomSubscription::exists('210', '2', $subscriptionType, $testemail, 46);
     $this->assertNull($exists);
 }
 public function testActivateSubscription()
 {
     $subscriber = ezcomSubscriber::create();
     $subscriber->setAttribute('email', '*****@*****.**');
     $subscriber->setAttribute('user_id', 10);
     $subscriber->store();
     $subscription = ezcomSubscription::create();
     $subscription->setAttribute('subscriber_id', $subscriber->attribute('id'));
     $subscription->setAttribute('subscriber_type', 'ezcomcomment');
     $subscription->setAttribute('enabled', 0);
     $subscription->setAttribute('content_id', '10_2');
     $hashString = ezcomUtility::instance()->generateSubscriptionHashString($subscription);
     $subscription->setAttribute('hash_string', $hashString);
     $subscription->store();
     $id = $subscription->attribute('id');
     $tpl = eZTemplate::factory();
     $subscriptionManager = ezcomSubscriptionManager::instance($tpl, null, null, 'ezcomSubscriptionManager');
     $subscriptionManager->activateSubscription($hashString);
     $subscriptionActivated = ezcomSubscription::fetch($id);
     $this->assertEquals(1, $subscriptionActivated->attribute('enabled'));
 }
 /**
  * Test executeSending method via email
  * email account needed 
  * NB: the user should be able to get one mail with 'email testing' as the subject 
  * @return
  */
 public function testExuecuteSending()
 {
     $subscriber = ezcomSubscriber::create();
     $subscriber->setAttribute('email', '*****@*****.**');
     $subscriber->store();
     $notificationManager = ezcomNotificationManager::instance('ezcomNotificationEmailManager');
     $notificationManager->executeSending('email testing!', 'email test subject', $subscriber);
 }
 /**
  * clean up subscription based on an email address and content, language,
  *  make the subscription consistent.
  *  example:
  * @param string $email
  * @return true - there is subscription deleted
  *         false - no subscription deleted
  *         null - error
  */
 static function cleanupSubscription($email, $contentobjectID, $languageID)
 {
     //2. get subscriber
     $subscriber = ezcomSubscriber::fetchByEmail($email);
     if (is_null($subscriber)) {
         return false;
     }
     $subscriberID = $subscriber->attribute('id');
     //3. clean up subscription
     $querySubscription = "DELETE FROM ezcomment_subscription" . " WHERE subscriber_id = {$subscriberID} " . " AND content_id = {$contentID}" . " AND language_id= {$languageID}";
     $db->query($querySubscription);
     return true;
 }
    if (!is_null($Params['HashString']) && $Params['HashString'] != '') {
        $page = $Params['HashString'];
    }
}
$tpl->setVariable('current_page', $page);
//TODO: validate page
if (!is_numeric($page)) {
    eZDebug::writeError('Page is not numeric!', 'Setting');
    return;
}
$subscriber = null;
if (!$user->isAnonymous()) {
    $email = $user->attribute('email');
    $subscriber = ezcomSubscriber::fetchByEmail($email);
} else {
    $subscriber = ezcomSubscriber::fetchByHashString($hashString);
}
if (is_null($subscriber)) {
    $Result = array();
    $Result['content'] = $tpl->fetch('design:comment/setting.tpl');
    $Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('ezcomments/comment/setting', 'Comment settings')));
    return $Result;
}
$tpl->setVariable('subscriber', $subscriber);
$email = $subscriber->attribute('email');
$module = $Params['Module'];
if ($module->isCurrentAction('Save')) {
    $subscriberID = $http->postVariable('SubscriberID');
    if ($http->hasPostVariable('CheckboxName')) {
        $checkboxNameList = $http->postVariable('CheckboxName');
        foreach ($checkboxNameList as $checkboxName) {
 /**
  * Test the addcomment method in ezcomComment
  */
 public function testAddComment()
 {
     //1. test adding a comment without notification
     $time = time();
     $contentObjectID = 209;
     $languageID = 2;
     $comment = ezcomComment::create();
     $comment->setAttribute('name', 'xc');
     $comment->setAttribute('email', '*****@*****.**');
     $comment->setAttribute('text', 'This is a test comment:)');
     $comment->setAttribute('contentobject_id', $contentObjectID);
     $comment->setAttribute('language_id', $languageID);
     $comment->setAttribute('created', $time);
     $comment->setAttribute('modified', $time);
     $user = eZUser::currentUser();
     $commentManager = ezcomCommentManager::instance();
     //1.1 without subscription
     $result = $commentManager->addComment($comment, $user);
     $this->assertSame(true, $result);
     //1.2 with subscription
     //add subscriber
     $time = $time + 1;
     $comment = ezcomComment::create();
     $comment->setAttribute('name', 'xc');
     $comment->setAttribute('email', '*****@*****.**');
     $comment->setAttribute('text', 'This is a test comment:)');
     $comment->setAttribute('contentobject_id', $contentObjectID);
     $comment->setAttribute('language_id', $languageID);
     $comment->setAttribute('created', $time);
     $comment->setAttribute('modified', $time);
     $subscriber = ezcomSubscriber::create();
     $subscriber->setAttribute('user_id', $user->attribute('contentobject_id'));
     $subscriber->setAttribute('email', $comment->attribute('email'));
     $subscriber->store();
     //add subscription
     $subscription = ezcomSubscription::create();
     $subscription->setAttribute('subscriber_id', $subscriber->attribute('id'));
     $subscription->setAttribute('content_id', $contentObjectID);
     $subscription->setAttribute('language_id', $languageID);
     $subscription->setAttribute('user_id', $user->attribute('contentobject_id'));
     $subscription->setAttribute('subscription_type', 'ezcomcomment');
     $subscription->setAttribute('subscription_time', $time);
     $subscription->store();
     //add comment
     $result = $commentManager->addComment($comment, $user);
     $this->assertSame(true, $result);
     //verify the notification
     $notifications = ezcomNotification::fetchNotificationList(1, 1, 0, array('id' => 'desc'));
     $this->assertEquals($contentObjectID, $notifications[0]->attribute('contentobject_id'));
     $this->assertEquals($comment->attribute('id'), $notifications[0]->attribute('comment_id'));
     $this->assertEquals($languageID, $notifications[0]->attribute('language_id'));
     //2. test adding a comment with notification
     $time2 = time() + 3;
     $contentObjectID = 210;
     $languageID = 2;
     $comment2 = ezcomComment::create();
     $comment2->setAttribute('name', 'chen');
     $comment2->setAttribute('email', '*****@*****.**');
     $comment2->setAttribute('text', 'notified comment');
     $comment2->setAttribute('contentobject_id', $contentObjectID);
     $comment2->setAttribute('language_id', $languageID);
     $comment2->setAttribute('created', $time2);
     $comment2->setAttribute('modified', $time2);
     $user2 = eZUser::currentUser();
     //2.1 if there is no subscription
     $result2 = $commentManager->addComment($comment2, $user2, $time2);
     $this->assertSame(true, $result2);
     $notifications = ezcomNotification::fetchNotificationList(1, 1, 0, array('id' => 'desc'));
     $this->assertNotEquals($notifications[0]->attribute('comment_id'), $comment2->attribute('id'));
     //assert that there is no new notification
     //2.2 if there is already subscription
     $comment2 = ezcomComment::create();
     $comment2->setAttribute('name', 'chen');
     $comment2->setAttribute('email', '*****@*****.**');
     $comment2->setAttribute('text', 'notified comment');
     $comment2->setAttribute('contentobject_id', $contentObjectID);
     $comment2->setAttribute('language_id', $languageID);
     $time2 = $time2 + 1;
     //add subscriber
     $subscriber = ezcomSubscriber::create();
     $subscriber->setAttribute('user_id', $user2->attribute('contentobject_id'));
     $subscriber->setAttribute('email', $comment2->attribute('email'));
     $subscriber->store();
     //add subscription
     $subscription = ezcomSubscription::create();
     $subscription->setAttribute('subscriber_id', $subscriber->attribute('id'));
     $subscription->setAttribute('content_id', $contentObjectID);
     $subscription->setAttribute('language_id', $languageID);
     $subscription->setAttribute('user_id', $user2->attribute('contentobject_id'));
     $subscription->setAttribute('subscription_type', 'ezcomcomment');
     $subscription->setAttribute('subscription_time', $time2);
     $subscription->store();
     //add comment
     $comment2->setAttribute('created', $time2);
     $comment2->setAttribute('modified', $time2);
     $result = $commentManager->addComment($comment2, $user2, $time2);
     $this->assertSame(true, $result);
     //vertify the notification
     $notifications = ezcomNotification::fetchNotificationList(1, 1, 0, array('id' => 'desc'));
     $this->assertEquals($contentObjectID, $notifications[0]->attribute('contentobject_id'));
     $this->assertEquals($comment2->attribute('id'), $notifications[0]->attribute('comment_id'));
     $this->assertEquals($languageID, $notifications[0]->attribute('language_id'));
 }
 $contentLanguage = $contentObjectArray['language_id'];
 $notifications = $db->arrayQuery('SELECT * FROM ezcomment_notification ' . 'WHERE contentobject_id = ' . $contentObjectID);
 // fetch content object
 $contentObject = eZContentObject::fetch($contentObjectID, true);
 $contentLanguageLocale = eZContentLanguage::fetch($contentLanguage)->attribute('locale');
 $contentObject->setCurrentLanguage($contentLanguageLocale);
 if (is_null($contentObject)) {
     $cli->output("Content doesn't exist, delete the notification. Content ID:" . $contentObjectID);
     $db->query('DELETE FROM ezcomment_notification WHERE contentobject_id=' . $contentObjectID);
     continue;
 }
 // fetch subscribers
 $subscriptionList = $db->arrayQuery("SELECT subscriber_id FROM ezcomment_subscription" . " WHERE enabled = 1" . " AND content_id = {$contentObjectID}" . " AND language_id = {$contentLanguage}");
 $subscriberList = array();
 foreach ($subscriptionList as $subscription) {
     $subscriberList[] = ezcomSubscriber::fetch($subscription['subscriber_id']);
 }
 //fetch comment list
 $commentList = array();
 foreach ($notifications as $notification) {
     // fetch comment object
     $comment = ezcomComment::fetch($notification['comment_id']);
     if (is_null($comment)) {
         $cli->output("Comment doesn't exist, delete the notification. Comment ID:" . $notification['comment_id']);
         $db->query('DELETE FROM ezcomment_notification WHERE id=' . $notification['id']);
         continue;
     }
     $commentList[] = $comment;
 }
 try {
     $notificationManager = ezcomNotificationManager::instance();
 /**
  * delete the subscription given the subscriber's email
  * @param $email
  * @param $contentObjectID
  * @param $languageID
  * @return unknown_type
  */
 public function deleteSubscription($email, $contentObjectID, $languageID)
 {
     $subscriber = ezcomSubscriber::fetchByEmail($email);
     $cond = array();
     $cond['subscriber_id'] = $subscriber->attribute('id');
     $cond['content_id'] = $contentObjectID;
     $cond['language_id'] = $languageID;
     $cond['subscription_type'] = 'ezcomcomment';
     $subscription = ezcomSubscription::fetchByCond($cond);
     $subscription->remove();
 }