function handler_rooms($page) { $rf = new RoomFilter(new RFC_Prefix('BATACL')); $rooms = $rf->get(); $rooms->select(RoomSelect::see(array('groups' => GroupSelect::base()))); $page->assign('rooms', $rooms); $page->changeTpl('rooms/rooms.tpl'); }
public function sendmailadmin() { if (is_null($this->user->bestEmail())) { $this->user->select(UserSelect::base()); } $mail = new FrankizMailer('validate/mail.admin.tol.tpl'); $mail->assign('user', $this->user->displayName()); $group = Group::from('tol'); $group->select(GroupSelect::base()); $mail->assign('targetGroup', $group); $mail->subject("[Frankiz] Validation d'une photo tol"); $mail->SetFrom($this->user->bestEmail(), $this->user->displayName()); $mail->AddAddress($this->_mail_from_addr(), $this->_mail_from_disp()); $mail->Send(false); }
function smarty_function_origin_picker($params, &$smarty) { $gf = new GroupFilter(new PFC_And(new PFC_Not(new GFC_Namespace(Group::NS_USER)), new GFC_User(S::user(), Rights::admin())), new GFO_Score()); $gs = $gf->get(); if ($params['not_only_admin']) { $gfo = new GroupFilter(new PFC_And(new GFC_Namespace(array(Group::NS_BINET, Group::NS_FREE)), new GFC_User(S::user(), Rights::restricted())), new GFO_Score()); $gso = $gfo->get()->diff($gs); $temp = new Collection(); $temp->merge($gs)->merge($gso); $temp->select(GroupSelect::base()); $smarty->assign('not_admin', $gso); } else { $gs = $gf->get()->select(GroupSelect::base()); } $smarty->assign($params['out'], $gs); }
/** * Create an image for a promotion, for a group, if needed */ function create_promo_image(Group $g, $promo) { $g->select(GroupSelect::base()); if ($g->image()) { return; } if ($promo % 2 == 0) { $upload = FrankizUpload::fromFile(dirname(__FILE__) . '/../images/rouje.png'); $label = 'Chic à la rouje'; } else { $upload = FrankizUpload::fromFile(dirname(__FILE__) . '/../images/jone.png'); $label = 'Chic à la jone'; } $i = new FrankizImage(); $i->insert(); $i->caste($g->caste(Rights::everybody())); $i->label($label); $i->image($upload, false); $g->image($i); }
function smarty_function_target_picker($params, &$smarty) { // Get user groups $everybody_groups = S::user()->castes(Rights::everybody())->groups(); // Get Frankiz special groups $fkz = new Collection('Group'); $fkz->add(array('everybody', 'public')); $fkz->select(new GroupSelect(array('description'))); // BDE, study and promo groups $study_groups = $everybody_groups->filter('ns', Group::NS_BDE); $study_groups->merge($everybody_groups->filter('ns', Group::NS_PROMO)); $study_groups->merge($everybody_groups->filter('ns', Group::NS_STUDY)); // Get all groups user is admin, without the user one $gs = S::user()->castes(Rights::admin())->groups(); $gs->diff($fkz); $gs->filter(function ($g) { return $g->ns() != Group::NS_USER; }); if ($params['even_only_friend']) { $gfo = new GroupFilter(new PFC_And(new GFC_Namespace(array(Group::NS_BINET, Group::NS_FREE)), new GFC_User(S::user(), Rights::everybody())), new GFO_Score()); $gso = $gfo->get()->diff($gs)->diff($fkz); $temp = new Collection(); $temp->merge($gs)->merge($gso); $temp->select(GroupSelect::base()); $smarty->assign('only_friend', $gso); $temp = new Collection(); $temp->merge($gs)->merge($fkz)->merge($gso); $temp->select(GroupSelect::base()); } else { $temp = new Collection(); $temp->merge($gs)->merge($fkz); $temp->select(GroupSelect::base()); } $smarty->assign($params['user_groups'], $gs); $smarty->assign($params['fkz_groups'], $fkz); $smarty->assign($params['study_groups'], $study_groups); $smarty->assign($params['own_group'], S::user()->group()); }
function handler_validate($page, $gid = null, $vid = null) { $page->assign('msg', ''); $gf = new GroupFilter(new PFC_Or(new GFC_Id($gid), new GFC_Name($gid))); $group = $gf->get(true); if (!$group) { throw new Exception("This Group (' . {$gid} . ') doesn't exist"); } $group->select(GroupSelect::base()); if (!S::user()->hasRights($group, Rights::admin())) { throw new Exception("You don't have the credential to validate request in this group"); } $filter = new ValidateFilter(new VFC_Group($group)); $collec = $filter->get()->select(ValidateSelect::validate()); if (Env::has('val_id')) { $el = $collec->get(Env::v('val_id')); if (!$el) { $page->assign('msg', 'La validation a déjà été effectuée.'); } else { if (Env::has('accept') || Env::has('delete')) { S::logger()->log('admin/validate', array('type' => $el->type(), 'writer' => $el->writer()->id(), 'group' => $el->group()->id(), 'created' => $el->created()->toDb(), 'valid' => Env::has('accept'), 'item' => $el->itemToDb())); } if ($el->handle_form() && (Env::has('accept') || Env::has('delete'))) { $collec->remove(Env::v('val_id')); } } } $page->assign('validation', is_null($vid) ? 0 : $vid); $page->assign('isEdition', false); $page->assign('gid', $gid); $page->assign('group', $group); $page->assign('val', $collec); $page->addCssLink('validate.css'); $page->addCssLink('surveys.css'); $page->assign('title', "Validations des requêtes"); $page->changeTpl('validate/validate.tpl'); }
public function objects() { return array('writer' => UserSelect::base(), 'target' => CasteSelect::validate(), 'origin' => GroupSelect::base()); }
public static function validate($subs = null) { return new self(array('writer', 'type', 'group', 'created', 'item'), array('writer' => UserSelect::base(), 'group' => GroupSelect::base())); }
public function handler_defaultfilters($page) { S::user()->select(UserSelect::login()); if (Env::has('options')) { $groups = new Collection('Group'); $gids = explode(';', Env::s('promo')); if (Env::t('promo', '') != '') { $groups->add($gids); } $groups->select(GroupSelect::base()); S::user()->defaultFilters($groups); } $page->assign('user', S::user()); $page->addCssLink('profile.css'); $page->assign('title', "Filtre par défaut"); $page->changeTpl('profile/defaultfilters.tpl'); }
function handler_activity($page) { $title = Env::t('title', ''); $desc = Env::t('activity_description', ''); $activities = new ActivityFilter(new PFC_And(new AFC_TargetGroup(S::user()->castes(Rights::admin())->groups()), new AFC_Regular(true))); $activities = $activities->get(); $activities->select(ActivitySelect::base()); if (Env::has('send_new')) { $required_fields = array('origin_activity_proposal', 'target_group_activity', 'title', 'begin', 'end'); foreach ($required_fields as $field) { if (Env::v($field, '') == '') { throw new Exception("Missing field ({$field})"); } } try { // Origin & Target if (Env::t('origin_activity_proposal') == 'false') { $origin = false; } else { $origin = new Group(Env::i('origin_activity_proposal')); } list($target, $target_group) = self::target_picker_to_caste_group('activity'); $begin = new FrankizDateTime(Env::t('begin')); $end = new FrankizDateTime(Env::t('end')); if ($origin !== false && !S::user()->hasRights($origin, Rights::admin())) { if (S::user()->hasRights($origin, Rights::restricted())) { $valid_origin = true; $origin->select(GroupSelect::base()); } else { throw new Exception("Invalid credentials for origin Group"); } } else { $valid_origin = false; } $target->select(CasteSelect::validate()); $av = new ActivityValidate(array('writer' => S::user(), 'target' => $target, 'title' => $title, 'description' => $desc, 'begin' => $begin, 'end' => $end, 'origin' => $origin, 'valid_origin' => $valid_origin)); if ($origin !== false || S::user()->group()->id() != $target->group()->id()) { $v = new Validate(array('writer' => S::user(), 'group' => $valid_origin ? $origin : $target_group, 'item' => $av, 'type' => 'activity')); $v->insert(); } else { $av->commit(); $page->assign('auto', true); } $page->assign('envoye', true); } catch (Exception $e) { $page->assign('msg', $e->getMessage() . 'La date est incorrecte.'); } } if (Env::has('send_reg')) { $begin = Env::t('begin'); $end = Env::t('end'); $date = Env::t('other_date'); $aid = Env::i('regular_activity_proposal', ''); $a = $activities->get($aid); if (!$a) { $page->assign('msg', 'Tu n\'as pas le droit de créer de nouvelles instances de cette activité.'); } else { $dates = $a->next_dates(5); foreach ($dates as $temp) { foreach ($temp as $dat) { if (Env::has($dat . '_regular_proposal')) { try { $begin_c = new FrankizDateTime($dat . ' ' . $begin . ':00'); $end_c = new FrankizDateTime($dat . ' ' . $end . ':00'); $av = new ActivityInstance(array('activity' => $a, 'writer' => S::user(), 'begin' => $begin_c, 'end' => $end_c, 'comment' => Env::t('activity_comment', ''))); $av->insert(); } catch (Exception $e) { $page->assign('msg', 'Les dates sont fausses.'); } } } } if (Env::has('other_regular_proposal')) { try { $begin_c = new FrankizDateTime($date . ' ' . $begin . ':00'); $end_c = new FrankizDateTime($date . ' ' . $end . ':00'); $av = new ActivityInstance(array('activity' => $a, 'writer' => S::user(), 'begin' => $begin_c, 'end' => $end_c, 'comment' => Env::t('activity_comment', ''))); $av->insert(); } catch (Exception $e) { $page->assign('msg', 'Les dates sont fausses.'); } } $page->assign('msg', 'Ton activité a été rajoutée.'); } } $page->assign('title_activity', $title); $page->assign('desc', $desc); $page->assign('regular_activities', $activities); $page->assign('title', 'Proposer une activité'); $page->addCssLink('validate.css'); $page->changeTpl('validate/prop.activity.tpl'); }
} } elseif ($g->ns() == 'sport') { if (!preg_match('/^sport_[a-z]+$/', $g->name())) { echo "Warning: sport group " . $gtext . " has an invalid name\n"; } } elseif ($g->ns() == 'bde') { if ($g->name() != 'adherents-kes') { echo "Warning: unknown BDE " . $gtext . "\n"; } } elseif (!in_array($g->ns(), array('study', 'promo', 'binet', 'free'))) { echo "Error: Unknown NS " . $g->ns() . " for group " . $gtext . "\n"; } } } // Fetch groups $groups = Group::selectAll(GroupSelect::base())->select(GroupSelect::castes()); $groups = $groups->toArray(); krsort($groups); // Remember used castes $used_castes = array(); echo "Checking " . count($groups) . " groups\n"; while (!empty($groups)) { $g = array_pop($groups); check_group($g); foreach ($g->castes() as $c) { array_push($used_castes, $c->id()); } // Frees memory unset($g); } // Fetch castes
function handler_admin($page, $id = null, $action = null) { $page->assign('title', "Administration de l'authentification externe"); $page->assign('remoterights_available', implode(',', Remote::availableRights())); // Find remote $remote = null; if ($id == 'new') { $remote = new Remote(); $remote->insert(); } elseif (Remote::isId($id)) { $remote = new Remote($id); // Delete a remote if ($action == 'delete') { $remote->delete(); $remote = null; } } if (!empty($remote)) { $remote->select(RemoteSelect::groups()); if (Env::has('change_remote')) { $remote->site(Env::t('site')); $remote->label(Env::t('label')); $remote->privkey(Env::t('privkey')); $rights = explode(',', Env::t('rights')); foreach ($rights as $k => $v) { $rights[$k] = strtolower(trim($v)); } $rights = array_intersect($rights, Remote::availableRights()); $remote->rights(new PlFlagSet(implode(',', $rights))); $groups = new Collection('Group'); $groups_fields = array('binets', 'frees'); foreach ($groups_fields as $field) { foreach (explode(';', Env::t($field)) as $gid) { $gid = trim($gid); if ($gid) { $groups->add(new Group($gid)); } } } $groups->select(GroupSelect::base()); $remote->groups($groups); } $page->assign('remote', $remote); $page->changeTpl('remote/admin.tpl'); } else { $remotes = Remote::selectAll(RemoteSelect::groups()); $page->assign('remotes', $remotes); $page->changeTpl('remote/list.tpl'); } }
public static function groups() { return new RemoteSelect(array_merge(self::$natives, array('groups')), array('groups' => GroupSelect::base())); }
function handler_group_see($page, $group = null) { global $platal; $page->addCssLink('groups.css'); $group = Group::fromId($group); if (!$group) { $page->assign('title', "Ce groupe n'existe pas"); $page->changeTpl('groups/no_group.tpl'); return; } // Fetch the group $group->select(GroupSelect::base()); $page->assign('group', $group); // Check rights if (S::i('auth') <= AUTH_PUBLIC && !$group->external()) { $platal->force_login($page); return; } $group->select(GroupSelect::see()); $page->assign('roomMaster', $group->isRoomMaster()); $promos = S::user()->castes()->groups()->filter('ns', Group::NS_PROMO); $page->assign('promos', $promos); // Relation between the user & the group $page->assign('user', S::user()); if ($group->ns() != 'user') { $caste = $group->caste(Rights::member()); if (!is_null($caste)) { $page->assign('member_allowed', $caste->userfilter()); } } $page->assign('title', $group->label()); $page->changeTpl('groups/group.tpl'); }
public function objects() { return array('writer' => UserSelect::base(), 'formation' => GroupSelect::base(), 'origin' => GroupSelect::base()); }
public static function see() { return self::all(array('ips' => IpSelect::base(), 'users' => UserSelect::base(), 'groups' => GroupSelect::base())); }
function handler_tol($page) { $fields = $this->fillFields(); $already_groups = new Collection('Group'); $filter = $this->buildFilter($fields, $already_groups); $page->assign('promoDefaultFilters', S::user()->defaultFilters()->filter('ns', Group::NS_PROMO)); if ($filter) { if ($already_groups->count() > 0) { $already_groups->select(GroupSelect::base()); } $filterWithDefaultFilters = $filter; if (S::user()->defaultFilters()->count() > 0) { $filterWithDefaultFilters = new PFC_And($filter, new UFC_Group(S::user()->defaultFilters())); } $order = array(new UFO_Promo(true), new UFO_Name(UFO_Name::LASTNAME)); $uf = new UserFilter($filterWithDefaultFilters, $order); $users = $uf->get(new PlLimit(50, 0)); if ($users->count() == 0) { $uf = new UserFilter($filter, $order); $users = $uf->get(new PlLimit(50, 0)); $page->assign('promoDefaultFilters', null); } $users->select(UserSelect::tol()); $page->assign('results', $users); $page->assign('mode', 'sheet'); $page->assign('total', $uf->getTotalCount()); } $page->assign('already_groups', $already_groups); $page->assign('user', S::user()); $page->assign('fields', $fields); $page->assign('title', 'Trombino On Line'); $page->addCssLink('tol.css'); $page->changeTpl('tol/tol.tpl'); }
public static function news() { return new NewsSelect(array_merge(self::$natives, array('read', 'star')), array('writer' => UserSelect::base(), 'target' => CasteSelect::group(), 'origin' => GroupSelect::base())); }
public static function group() { return new CasteSelect(array('group', 'rights'), array('group' => GroupSelect::base())); }
public static function login() { $cb = function ($users) { $web = Group::from('webmasters'); foreach ($users as $u) { if ($u->hasRights($web, Rights::member())) { $u->perms()->addFlag('web'); } } }; return new UserSelect(array_merge(self::$natives, array('rooms', 'minimodules', 'castes', 'poly', 'comments', 'defaultfilters', 'studies', 'cuvisibility')), array('castes' => CasteSelect::group(), 'defaultfilters' => GroupSelect::base()), $cb); }
public static function base() { return new ActivitySelect(self::$natives, array('target' => CasteSelect::validate(), 'origin' => GroupSelect::base())); }