<?php
/***************************************************************************
- * Copyright (C) 2003-2011 Polytechnique.org *
+ * Copyright (C) 2003-2013 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
const GROUP_XORG = 'Polytechnique.org';
const GROUP_AX = 'AX';
const GROUP_EP = 'Ecole';
+ const GROUP_FX = 'FX';
// Searches on mutiple fields
const SEARCH_ALL = 'all';
/** Get the count of subscribers to the NL.
* @return Number of subscribers.
*/
- public function subscriberCount()
+ public function subscriberCount($lost = null, $sex = null, $grade = null, $first_promo = null, $last_promo = null)
{
- $uf = new UserFilter(new UFC_NLSubscribed($this->id));
+ $cond = new PFC_And(new UFC_NLSubscribed($this->id));
+ if (!is_null($sex)) {
+ $cond->addChild(new UFC_Sex($sex));
+ }
+ if (!is_null($grade)) {
+ $cond->addChild(new UFC_Promo('>=', $grade, $first_promo));
+ $cond->addChild(new UFC_Promo('<=', $grade, $last_promo));
+ }
+ if (!($lost === null)) {
+ if ($lost === true) {
+ $cond->addChild(new PFC_Not(new UFC_HasEmailRedirect()));
+ } else {
+ $cond->addChild(new UFC_HasEmailRedirect());
+ }
+ }
+ $uf = new UserFilter($cond);
return $uf->getTotalCount();
}
/** Get the count of subscribers with non valid redirection.
*/
- public function lostSubscriberCount()
+ public function lostSubscriberCount($sex = null)
{
- $uf = new UserFilter(new PFC_And(new UFC_NLSubscribed($this->id), new PFC_Not(new UFC_HasEmailRedirect())));
- return $uf->getTotalCount();
+ return $this->subscriberCount(true, $sex);
}
/** Get the number of subscribers to the NL whose last received mailing was $last.
return 'ax';
case self::GROUP_EP:
return 'epletter';
+ case self::GROUP_FX:
+ return 'fxletter';
default:
// Don't display groups NLs on X.org
assert(!$enforce_xnet);
return 'ax/admin';
case self::GROUP_EP:
return 'epletter/admin';
+ case self::GROUP_FX:
+ return 'fxletter/admin';
+ default:
+ // Don't display groups NLs on X.org
+ assert(!$enforce_xnet);
+ }
+ }
+
+ /** Get the prefix to use for all 'stat' pages of this NL.
+ */
+ public function statPrefix($enforce_xnet = true, $with_group = true)
+ {
+ if (!empty($GLOBALS['IS_XNET_SITE'])) {
+ if ($with_group) {
+ return $this->group . '/stat/nl';
+ } else {
+ return 'stat/nl';
+ }
+ }
+ switch ($this->group) {
+ case self::GROUP_XORG:
+ return 'stat/newsletter';
+ case self::GROUP_AX:
+ return 'ax/stat';
+ case self::GROUP_EP:
+ return 'epletter/stat';
+ case self::GROUP_FX:
+ return 'fxletter/stat';
default:
// Don't display groups NLs on X.org
assert(!$enforce_xnet);
{
return array(
'index' => array('link' => $this->prefix(), 'title' => 'Archives'),
- 'admin' => array('link' => $this->adminPrefix(), 'title' => 'Administrer')
+ 'admin' => array('link' => $this->adminPrefix(), 'title' => 'Administrer'),
+ 'stats' => array('link' => $this->statPrefix(), 'title' => 'Statistiques')
);
}
case self::GROUP_XORG:
case self::GROUP_AX:
case self::GROUP_EP:
+ case self::GROUP_FX:
return false;
default:
return true;