/** * Test fetch method */ function testFetch() { $subscriber = ezcomSubscriber::fetch(1); $this->assertType('ezcomSubscriber', $subscriber); $subscriber = ezcomSubscriber::fetch(100); $this->assertEquals(null, $subscriber); }
/** * 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(); }