require_once 'smarty/libs/Smarty.class.php';
-class PlatalPage extends Smarty
+abstract class PlatalPage extends Smarty
{
private $_page_type;
private $_tpl;
$this->compile_check = !empty($globals->debug);
- $this->_page_type = $type;
- $this->_tpl = $tpl;
+ $this->changeTpl($tpl, $type);
$this->_errors = array();
$this->_jsonVars = array();
$this->_failure = false;
exit;
}
+ abstract public function run();
+
// }}}
// {{{ function nb_errs()
if (is_null($view)) {
return false;
}
- if (empty($GLOBALS['IS_XNET_SITE'])) {
- $page->changeTpl('core/plset.tpl');
- } else {
- new_group_open_page('core/plset.tpl');
- }
+ $page->changeTpl('core/plset.tpl');
$page->assign('plset_base', $baseurl);
$page->assign('plset_mods', $this->mods);
$page->assign('plset_mod', $this->mod);
// {{{ function new_skinned_page()
-function new_page($tpl_name, $type = SKINNED)
+function new_skinned_page($tpl_name, $refuse_access = false)
{
global $page, $globals;
require_once("xnet/page.inc.php");
- $page = new XnetPage($tpl_name, $type);
- $page->assign('xorg_tpl', $tpl_name);
- $page->assign('is_logged', S::logged());
-}
-
-function new_skinned_page($tpl_name)
-{
- return new_page($tpl_name);
-}
-
-// }}}
-// {{{ function new_group_open_page()
-
-function new_group_open_page($tpl_name, $refuse_access = false)
-{
- global $page, $globals;
-
- new_page($tpl_name);
-
- $page->assign('asso', $globals->asso());
- $page->setType($globals->asso('cat'));
- $page->assign('is_admin', may_update());
- $page->assign('is_member', is_member());
-
+ if (!$page instanceof XnetPage) {
+ $page = new XnetPage($tpl_name, $type);
+ } else {
+ $page->changeTpl($tpl_name, $type);
+ }
if ($refuse_access) {
$page->kill("Vous n'avez pas les droits suffisants pour accéder à cette page");
}
}
// }}}
-// {{{ function new_group_page()
-
-function new_group_page($tpl_name)
-{
- new_group_open_page($tpl_name, !is_member() && !S::has_perms());
-}
-
-// }}}
-// {{{ function new_groupadmin_page()
-
-function new_groupadmin_page($tpl_name)
-{
- new_group_open_page($tpl_name, !may_update());
-}
-
-// }}}
// {{{ function new_annu_page()
function new_annu_page($tpl_name)
{
global $globals;
- new_group_open_page($tpl_name,
- !may_update()
- && (!is_member() || $globals->asso('pub') != 'public')
- && $globals->asso('cat') != 'Promotions');
-}
-
-// }}}
-// {{{ function new_admin_page()
-
-function new_admin_page($tpl_name)
-{
- global $page, $globals;
-
- new_page($tpl_name);
-
- check_perms();
-
- if ($globals->asso('cat')) {
- $page->assign('asso', $globals->asso());
- $page->setType($globals->asso('cat'));
- }
+ new_skinned_page($tpl_name,
+ !may_update()
+ && (!is_member() || $globals->asso('pub') != 'public')
+ && $globals->asso('cat') != 'Promotions');
}
// }}}
}
// }}}
+ // {{{ function changeTpl()
+
+ public function changeTpl($tpl, $type = SKINNED)
+ {
+ global $globals;
+ parent::changeTpl($tpl, $type);
+ $this->assign('is_logged', S::logged());
+ if ($globals->asso('id')) {
+ $this->assign('asso', $globals->asso());
+ $this->setType($globals->asso('cat'));
+ $this->assign('is_admin', may_update());
+ $this->assign('is_member', is_member());
+ }
+ }
+
+ // }}}
// {{{ function setType
public function setType($type)
{
// {{{ function init
- public static function init() {
+ public static function init()
+ {
global $globals;
S::init();
}
}
-// }}}
+// {{{ function new_skinned_page()
-function _new_page($type, $tpl_name, $admin=false)
+function new_skinned_page($tpl_name)
{
global $page;
- if (!empty($admin)) {
- $page = new XorgAdmin($tpl_name, $type);
- } else {
+ if (!$page instanceof XorgPage) {
$page = new XorgPage($tpl_name, $type);
+ } else {
+ $page->changeTpl($tpl_name, $type);
}
-
- $page->assign('xorg_tpl', $tpl_name);
-}
-
-// {{{ function new_skinned_page()
-
-function new_skinned_page($tpl_name)
-{
- _new_page(SKINNED, $tpl_name);
-}
-
-// }}}
-// {{{ function new_admin_page()
-
-function new_admin_page($tpl_name)
-{
- _new_page(SKINNED, $tpl_name, true);
}
-// }}}
-
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>
{
global $globals;
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
- if (!empty($GLOBALS['IS_XNET_SITE']) && $globals->asso()) {
- new_skinned_page('core/403.tpl');
- } else {
- $page->changeTpl('core/403.tpl');
- }
+ $page->changeTpl('core/403.tpl');
}
function handler_404(&$page)
{
global $globals, $platal;
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
- if (!empty($GLOBALS['IS_XNET_SITE']) && $globals->asso()) {
- new_group_open_page('core/404.tpl');
- } else {
- $page->changeTpl('core/404.tpl');
- }
+ $page->changeTpl('core/404.tpl');
$page->assign('near', $platal->near_hook());
}
}
}
- function changeTpl($tpl)
- {
- if (!empty($GLOBALS['IS_XNET_SITE'])) {
- new_group_open_page($tpl);
- } else {
- global $page;
- $page->changeTpl($tpl);
- }
- }
-
function handler_members(&$page, $liste = null)
{
if (is_null($liste)) {
$this->prepare_client($page);
- $this->changeTpl('lists/members.tpl');
+ $page->changeTpl('lists/members.tpl');
if (Get::has('del')) {
$this->client->unsubscribe($liste);
$this->prepare_client($page);
- $this->changeTpl('lists/trombi.tpl');
+ $page->changeTpl('lists/trombi.tpl');
if (Get::has('del')) {
$this->client->unsubscribe($liste);
$domain = $this->prepare_client($page);
- $this->changeTpl('lists/archives.tpl');
+ $page->changeTpl('lists/archives.tpl');
if (list($det) = $this->client->get_members($liste)) {
if (substr($liste,0,5) != 'promo' && ($det['ins'] || $det['priv'])
$domain = $this->prepare_client($page);
- $this->changeTpl('lists/moderate.tpl');
+ $page->changeTpl('lists/moderate.tpl');
$page->register_modifier('hdc', 'list_header_decode');
if (list($subs,$mails) = $this->client->get_pending_ops($liste)) {
foreach($subs as $user) {
if ($user['id'] == Env::v('sid')) {
- $this->changeTpl('lists/moderate_sub.tpl');
+ $page->changeTpl('lists/moderate_sub.tpl');
$page->assign('del_user', $user);
return;
}
$domain = $this->prepare_client($page);
- $this->changeTpl('lists/admin.tpl');
+ $page->changeTpl('lists/admin.tpl');
if (Env::has('send_mark')) {
$actions = Env::v('mk_action');
$this->prepare_client($page);
- $this->changeTpl('lists/options.tpl');
+ $page->changeTpl('lists/options.tpl');
if (Post::has('submit')) {
$values = $_POST;
$type = 'list';
}
- $this->changeTpl('lists/delete.tpl');
+ $page->changeTpl('lists/delete.tpl');
if (Post::v('valid') == 'OUI') {
if ($this->client->delete_list($liste, Post::b('del_archive'))) {
foreach (array('', '-owner', '-admin', '-bounces') as $app) {
$this->prepare_client($page);
- $this->changeTpl('lists/soptions.tpl');
+ $page->changeTpl('lists/soptions.tpl');
if (Post::has('submit')) {
$values = $_POST;
$this->prepare_client($page);
- $this->changeTpl('lists/check.tpl');
+ $page->changeTpl('lists/check.tpl');
if (Post::has('correct')) {
$this->client->check_options($liste, true);
}
function handler_admin_all(&$page) {
- $this->changeTpl('lists/admin_all.tpl');
+ $page->changeTpl('lists/admin_all.tpl');
$page->assign('xorg_title','Polytechnique.org - Administration - Mailing lists');
$client = new MMList(S::v('uid'), S::v('password'));
'payment' => $this->make_hook('payment', AUTH_MDP),
'payment/cyber_return' => $this->make_hook('cyber_return', AUTH_PUBLIC),
'payment/paypal_return' => $this->make_hook('paypal_return', AUTH_PUBLIC),
- '%grp/paiement' => $this->make_hook('xnet_payment', AUTH_MDP),
- '%grp/payment' => $this->make_hook('xnet_payment', AUTH_MDP),
+ '%grp/paiement' => $this->make_hook('xnet_payment', AUTH_MDP, 'groupmember'),
+ '%grp/payment' => $this->make_hook('xnet_payment', AUTH_MDP, 'groupmember'),
'%grp/payment/cyber_return' => $this->make_hook('cyber_return', AUTH_PUBLIC),
'%grp/payment/paypal_return' => $this->make_hook('paypal_return', AUTH_PUBLIC),
'admin/payments' => $this->make_hook('admin', AUTH_MDP, 'admin'),
if (!$res->numRows()) {
return PL_FORBIDDEN;
}
- new_group_page('payment/index.tpl');
- } else {
- $page->changeTpl('payment/index.tpl');
- $page->assign('xorg_title','Polytechnique.org - Télépaiements');
}
+ $page->changeTpl('payment/index.tpl');
+ $page->assign('xorg_title','Polytechnique.org - Télépaiements');
// initialisation
$op = Env::v('op', 'select');
if (!is_null($pid)) {
return $this->handler_payment($page, $pid);
}
- new_group_page('payment/xnet.tpl');
+ $page->changeTpl('payment/xnet.tpl');
$res = XDB::query(
"SELECT id, text, url
function handler_admin(&$page)
{
- new_admin_page('xnet/admin.tpl');
+ $page->changeTpl('xnet/admin.tpl');
if (Get::has('del')) {
$res = XDB::query('SELECT id, nom, mail_domain
'%grp/events/csv' => $this->make_hook('csv', AUTH_MDP),
'%grp/events/ical' => $this->make_hook('ical', AUTH_MDP),
'%grp/events/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'),
- '%grp/events/admin' => $this->make_hook('admin', AUTH_MDP),
+ '%grp/events/admin' => $this->make_hook('admin', AUTH_MDP, 'groupmember'),
);
}
{
global $globals;
- if ($archive == 'archive') {
- $archive = true;
- new_groupadmin_page('xnetevents/index.tpl');
- } else {
- $archive = false;
- new_group_open_page('xnetevents/index.tpl');
- }
-
+ $page->changeTpl('xnetevents/index.tpl');
$action = null;
+ $archive = ($archive == 'archive' && may_update());
+
if (Post::has('del')) {
$action = 'del';
$eid = Post::v('del');
function handler_sub(&$page, $eid = null)
{
require_once dirname(__FILE__).'/xnetevents/xnetevents.inc.php';
-
- new_group_open_page('xnetevents/subscribe.tpl');
+ $page->changeTpl('xnetevents/subscribe.tpl');
$evt = get_event_detail($eid);
if (!$evt) {
}
}
- new_groupadmin_page('xnetevents/edit.tpl');
+ $page->changeTpl('xnetevents/edit.tpl');
$moments = range(1, 4);
$error = false;
return PL_NOT_FOUND;
}
- if ($evt['show_participants']) {
- new_group_page('xnetevents/admin.tpl');
- } else {
- new_groupadmin_page('xnetevents/admin.tpl');
+ $page->changeTpl('xnetevents/admin.tpl');
+ if (!$evt['show_participants'] && !may_update()) {
+ return PL_FORBIDDEN;
}
if (may_update() && Post::v('adm')) {
'%grp/site' => $this->make_hook('site', AUTH_PUBLIC),
'%grp/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'),
'%grp/mail' => $this->make_hook('mail', AUTH_MDP, 'groupadmin'),
- '%grp/forum' => $this->make_hook('forum', AUTH_MDP),
+ '%grp/forum' => $this->make_hook('forum', AUTH_MDP, 'groupmember'),
'%grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP),
'%grp/annuaire/vcard' => $this->make_hook('vcard', AUTH_MDP),
'%grp/trombi' => $this->make_hook('trombi', AUTH_MDP),
'%grp/subscribe' => $this->make_hook('subscribe', AUTH_MDP),
- '%grp/unsubscribe' => $this->make_hook('unsubscribe', AUTH_MDP),
+ '%grp/unsubscribe' => $this->make_hook('unsubscribe', AUTH_MDP, 'groupmember'),
'%grp/change_rights' => $this->make_hook('change_rights', AUTH_MDP),
if (!is_null($arg)) {
return PL_NOT_FOUND;
}
-
- new_group_open_page('xnetgrp/asso.tpl');
+ $page->changeTpl('xnetgrp/asso.tpl');
if (S::logged()) {
if (Env::has('read')) {
function handler_edit(&$page)
{
global $globals;
-
- new_groupadmin_page('xnetgrp/edit.tpl');
+ $page->changeTpl('xnetgrp/edit.tpl');
if (Post::has('submit')) {
if (S::has_perms()) {
{
global $globals;
- new_groupadmin_page('xnetgrp/mail.tpl');
+ $page->changeTpl('xnetgrp/mail.tpl');
$mmlist = new MMList(S::v('uid'), S::v('password'),
$globals->asso('mail_domain'));
$page->assign('listes', $mmlist->get_lists());
function handler_forum(&$page, $group = null, $artid = null)
{
global $globals;
- new_group_page('xnetgrp/forum.tpl');
+ $page->changeTpl('xnetgrp/forum.tpl');
if (!$globals->asso('forum')) {
return PL_NOT_FOUND;
}
$view->addMod('trombi', 'Trombinoscope', true, array('with_admin' => false, 'with_promo' => true));
$view->apply('trombi', $page, 'trombi', $action, $subaction);
}
-
- function _trombi_getlist($offset, $limit)
- {
- global $globals;
- $where = "WHERE m.asso_id= '".addslashes($globals->asso('id'))."'";
-
- $res = XDB::query(
- "SELECT COUNT(*)
- FROM auth_user_md5 AS u
- RIGHT JOIN photo AS p ON u.user_id=p.uid
- INNER JOIN groupex.membres AS m ON (m.uid = u.user_id)
- $where");
- $pnb = $res->fetchOneCell();
-
- $res = XDB::query("SELECT promo, user_id, a.alias AS forlife,
- IF (nom_usage='', u.nom, nom_usage) AS nom, u.prenom
- FROM photo AS p
- INNER JOIN auth_user_md5 AS u ON u.user_id=p.uid
- INNER JOIN aliases AS a ON ( u.user_id=a.id AND a.type='a_vie' )
- INNER JOIN groupex.membres AS m ON (m.uid = u.user_id)
- $where
- ORDER BY promo, u.nom, u.prenom LIMIT {?}, {?}", $offset*$limit, $limit);
-
- return array($pnb, $res->fetchAllAssoc());
- }
function handler_vcard(&$page, $photos = null)
{
function handler_subscribe(&$page, $u = null)
{
global $globals;
-
- new_group_open_page('xnetgrp/inscrire.tpl');
+ $page->changeTpl('xnetgrp/inscrire.tpl');
if (!$globals->asso('inscriptible'))
$page->kill("Il n'est pas possible de s'inscire en ligne à ce "
global $globals;
require_once dirname(__FILE__) . '/xnetgrp/mail.inc.php';
-
- new_groupadmin_page('xnetgrp/annuaire-admin.tpl');
+ $page->changeTpl('xnetgrp/annuaire-admin.tpl');
$mmlist = new MMList(S::v('uid'), S::v('password'),
$globals->asso('mail_domain'));
$lists = $mmlist->get_lists();
{
global $globals;
- new_groupadmin_page('xnetgrp/membres-add.tpl');
+ $page->changeTpl('xnetgrp/membres-add.tpl');
$page->addJsLink('ajax.js');
if (is_null($email)) {
function handler_unsubscribe(&$page)
{
- new_group_page('xnetgrp/membres-del.tpl');
+ $page->changeTpl('xnetgrp/membres-del.tpl');
$user = get_infos(S::v('forlife'));
if (empty($user)) {
return PL_NOT_FOUND;
function handler_admin_member_del(&$page, $user = null)
{
- new_groupadmin_page('xnetgrp/membres-del.tpl');
+ $page->changeTpl('xnetgrp/membres-del.tpl');
$user = get_infos($user);
if (empty($user)) {
return PL_NOT_FOUND;
{
global $globals;
- new_groupadmin_page('xnetgrp/membres-edit.tpl');
+ $page->changeTpl('xnetgrp/membres-edit.tpl');
$user = get_infos($user);
if (empty($user)) {
function handler_edit_announce(&$page, $aid = null)
{
global $globals, $platal;
- new_groupadmin_page('xnetgrp/announce-edit.tpl');
+ $page->changeTpl('xnetgrp/announce-edit.tpl');
$page->register_modifier('wiki_to_html', array('MiniWiki','WikiToHTML'));
$page->assign('new', is_null($aid));
$art = array();
function handler_admin_announce(&$page)
{
global $globals;
- new_groupadmin_page('xnetgrp/announce-admin.tpl');
+ $page->changeTpl('xnetgrp/announce-admin.tpl');
if (Env::has('del')) {
XDB::execute("DELETE FROM groupex.announces
function handlers()
{
return array(
- '%grp/lists' => $this->make_hook('lists', AUTH_MDP),
- '%grp/lists/create' => $this->make_hook('create', AUTH_MDP),
+ '%grp/lists' => $this->make_hook('lists', AUTH_MDP, 'groupmember'),
+ '%grp/lists/create' => $this->make_hook('create', AUTH_MDP, 'groupmember'),
'%grp/lists/members' => $this->make_hook('members', AUTH_COOKIE),
'%grp/lists/trombi' => $this->make_hook('trombi', AUTH_COOKIE),
return PL_NOT_FOUND;
}
$this->prepare_client($page);
-
- new_group_page('xnetlists/index.tpl');
+ $page->changeTpl('xnetlists/index.tpl');
if (Get::has('del')) {
$this->client->unsubscribe(Get::v('del'));
return PL_NOT_FOUND;
}
$this->prepare_client($page);
-
$page->changeTpl('xnetlists/create.tpl');
if (!Post::has('submit')) {
return PL_NOT_FOUND;
}
$this->prepare_client($page);
-
$page->changeTpl('xnetlists/sync.tpl');
if (Env::has('add')) {
if (!$globals->asso('mail_domain') || is_null($lfull)) {
return PL_NOT_FOUND;
}
-
- new_groupadmin_page('xnetlists/alias-admin.tpl');
+ $page->changeTpl('xnetlists/alias-admin.tpl');
if (Env::has('add_member')) {
$add = Env::v('add_member');
if (!$globals->asso('mail_domain')) {
return PL_NOT_FOUND;
}
- new_groupadmin_page('xnetlists/alias-create.tpl');
+ $page->changeTpl('xnetlists/alias-create.tpl');
if (!Post::has('submit')) {
return;