public function build($runData)
 {
     $user = $runData->getUser();
     $c = new Criteria();
     $pl = $runData->getParameterList();
     $siteId = $pl->getParameterValue('siteId');
     $all = (bool) $pl->getParameterValue('all');
     $site = DB_SitePeer::instance()->selectByPrimaryKey($siteId);
     if ($all) {
         $q = "SELECT email_list.* FROM email_list WHERE " . "email_list.site_id = '{$site->getSiteId()}' " . "ORDER BY email_list.title";
         $c->setExplicitQuery($q);
         $lists = DB_EmailListPeer::instance()->select($c);
         // check if subscribed
         foreach ($lists as $list) {
             $c2 = new Criteria();
             $c2->add('user_id', $user->getUserId());
             $c2->add('list_id', $list->getListId());
             $sub = DB_EmailListSubscriberPeer::instance()->selectOne($c2);
             if ($sub) {
                 $list->setTemp('subscribed', true);
             }
         }
     } else {
         // only subscribed
         $q = "SELECT email_list.* FROM email_list, email_list_subscriber WHERE email_list_subscriber.user_id = {$user->getUserId()} " . "AND email_list_subscriber.list_id = email_list.list_id AND email_list.site_id = '{$site->getSiteId()}' " . "ORDER BY email_list.title";
         $c->setExplicitQuery($q);
         $lists = DB_EmailListPeer::instance()->select($c);
         foreach ($lists as $list) {
             $list->setTemp('subscribed', true);
         }
     }
     $runData->contextAdd('all', $all);
     $runData->contextAdd('lists', $lists);
     $runData->contextAdd('site', $site);
 }
 public function build($runData)
 {
     $pl = $runData->getParameterList();
     $totalAll = (bool) $pl->getParameterValue('totalAll');
     $user = $runData->getUser();
     $c = new Criteria();
     if ($totalAll) {
         $q = "SELECT site.* FROM site, member WHERE member.user_id = '{$user->getUserId()}' AND member.site_id = site.site_id " . "ORDER BY site.name";
         $c->setExplicitQuery($q);
         $ss = DB_SitePeer::instance()->select($c);
         $sites = array();
         foreach ($ss as $s) {
             $sites[$s->getUnixName()] = array('site' => $s);
         }
     } else {
         $q = "SELECT email_list.* FROM email_list, email_list_subscriber, site WHERE email_list_subscriber.user_id = {$user->getUserId()} " . "AND email_list_subscriber.list_id = email_list.list_id AND email_list.site_id = site.site_id " . "ORDER BY site.name, email_list.title";
         $c->setExplicitQuery($q);
         $lists = DB_EmailListPeer::instance()->select($c);
         // sorry  for the DIIIIRTY STYLE!!!
         $sites = array();
         foreach ($lists as $l) {
             $s = DB_SitePeer::instance()->selectByPrimaryKey($l->getSiteId());
             if (!isset($sites[$s->getUnixName()])) {
                 $sites[$s->getUnixName()] = array('site' => $s, 'lists' => array());
             }
             $sites[$s->getUnixName()]['lists'][] = $l;
             $l->setTemp('site', $s);
         }
     }
     $runData->contextAdd('lists', $lists);
     $runData->contextAdd('sites', $sites);
     $runData->contextAdd('totalAll', $totalAll);
     $runData->contextAdd('user', $user);
 }
 public function build($runData)
 {
     $site = $runData->getTemp('site');
     $pl = $runData->getParameterList();
     $listId = $pl->getParameterValue("listId");
     $db = Database::connection();
     $db->begin();
     // get the list
     $c = new Criteria();
     $c->add('site_id', $site->getSiteId());
     $c->add('list_id', $listId);
     $list = DB_EmailListPeer::instance()->selectOne($c);
     if (!$list) {
         throw new ProcessException('The requested list  cannot be found.');
     }
     // get all subscribers
     $q = "SELECT ozone_user.* FROM email_list_subscriber, ozone_user WHERE " . "email_list_subscriber.list_id = '{$list->getListId()}' AND email_list_subscriber.user_id = ozone_user.user_id " . "ORDER BY ozone_user.nick_name";
     $c = new Criteria();
     $c->setExplicitQuery($q);
     $users = DB_OzoneUserPeer::instance()->select($c);
     $runData->contextAdd('users', $users);
     $runData->contextAdd('list', $list);
     $runData->contextAdd('site', $site);
 }
 public function unsubscribeEvent($runData)
 {
     $pl = $runData->getParameterList();
     $site = $runData->getTemp("site");
     $siteId = $site->getSiteId();
     $listId = $pl->getParameterValue('listId');
     $userId = $pl->getParameterValue('userId');
     $c = new Criteria();
     $c->add('list_id', $listId);
     $c->add('site_id', $site->getSiteId());
     $db = Database::connection();
     $db->begin();
     $list = DB_EmailListPeer::instance()->selectOne($c);
     if (!$list) {
         throw new ProcessException('The requested list  cannot be found.');
     }
     $c = new Criteria();
     $c->add('list_id', $listId);
     $c->add('user_id', $userId);
     DB_EmailListSubscriberPeer::instance()->delete($c);
     $list->calculateSubscriberCount();
     $list->save();
     $db->commit();
 }