Example #1
0
 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');
 }
Example #2
0
 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);
}
Example #4
0
/**
 * 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());
}
Example #6
0
 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');
 }
Example #7
0
 public function objects()
 {
     return array('writer' => UserSelect::base(), 'target' => CasteSelect::validate(), 'origin' => GroupSelect::base());
 }
Example #8
0
 public static function validate($subs = null)
 {
     return new self(array('writer', 'type', 'group', 'created', 'item'), array('writer' => UserSelect::base(), 'group' => GroupSelect::base()));
 }
Example #9
0
 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');
 }
Example #10
0
 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');
 }
Example #11
0
            }
        } 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
Example #12
0
 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');
     }
 }
Example #13
0
 public static function groups()
 {
     return new RemoteSelect(array_merge(self::$natives, array('groups')), array('groups' => GroupSelect::base()));
 }
Example #14
0
 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');
 }
Example #15
0
 public function objects()
 {
     return array('writer' => UserSelect::base(), 'formation' => GroupSelect::base(), 'origin' => GroupSelect::base());
 }
Example #16
0
 public static function see()
 {
     return self::all(array('ips' => IpSelect::base(), 'users' => UserSelect::base(), 'groups' => GroupSelect::base()));
 }
Example #17
0
 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');
 }
Example #18
0
 public static function news()
 {
     return new NewsSelect(array_merge(self::$natives, array('read', 'star')), array('writer' => UserSelect::base(), 'target' => CasteSelect::group(), 'origin' => GroupSelect::base()));
 }
Example #19
0
 public static function group()
 {
     return new CasteSelect(array('group', 'rights'), array('group' => GroupSelect::base()));
 }
Example #20
0
 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);
 }
Example #21
0
 public static function base()
 {
     return new ActivitySelect(self::$natives, array('target' => CasteSelect::validate(), 'origin' => GroupSelect::base()));
 }