Example #1
0
 function handler_upload($page)
 {
     $page->assign('exception', false);
     $page->assign('image', false);
     if (FrankizUpload::has('file')) {
         $g = Group::from('temp')->select(GroupSelect::castes());
         $temp = $g->caste(Rights::everybody());
         try {
             $upload = FrankizUpload::v('file');
             $secret = uniqid();
             $i = new FrankizImage();
             $i->insert();
             $i->caste($temp);
             $i->label($secret);
             $i->image($upload);
             $page->assign('image', $i);
             $page->assign('secret', $secret);
         } catch (Exception $e) {
             try {
                 if ($i) {
                     $i->delete();
                 }
             } catch (Exception $eb) {
                 $page->assign('exception', $eb);
             }
             $page->assign('exception', $e);
             if ($e instanceof ImageSizeException) {
                 $page->assign('pixels', true);
             } else {
                 if ($e instanceof UploadSizeException) {
                     $page->assign('bytes', true);
                 } else {
                     if ($e instanceof ImageFormatException) {
                         $page->assign('format', true);
                     }
                 }
             }
         }
     }
     if (Env::has('delete')) {
         $image = new FrankizImage(Env::i('iid'));
         $image->select(FrankizImageSelect::base());
         if ($image->label() == Env::s('secret')) {
             $image->delete();
         }
     }
     $page->addCssLink('upload.css');
     $page->changeTpl('images/upload.tpl', SIMPLE);
 }
Example #2
0
/**
 * Update a group
 * @return Group instance
 */
function update_group($name, $label, $ns, Userfilter $filter)
{
    $gf = new GroupFilter(new GFC_Name($name));
    $g = $gf->get(true);
    if ($g instanceof Group) {
        echo 'Updating ' . $label . ' (' . $name . ', ' . $g->id() . ') ';
        $g->select(GroupSelect::castes());
    } else {
        echo 'Creating ' . $label . ' (' . $name . ') ';
        $g = new Group();
        $g->insert();
        $g->ns($ns);
        $g->name($name);
        $g->label($label);
    }
    $c = $g->caste(Rights::member());
    $c->select(CasteSelect::base());
    $c->userfilter($filter);
    $c->compute();
    echo '... ' . $c->users()->count() . ' member(s)' . "\n";
    return $g;
}
Example #3
0
 function handler_links_new($page)
 {
     if (!S::user()->perms()->hasFlag('admin')) {
         return PL_FORBIDDEN;
     }
     $label = Env::t('label', '');
     $link = Env::t('link', '');
     $description = Env::t('description', '');
     $comment = Env::t('comment', '');
     $type = Env::t('type', '');
     trace($type);
     if (Env::has('create') && $label != '' && $link != '' && ($type == 'partners' || $type == 'usefuls')) {
         $l = new Link();
         $l->insert($type);
         if (FrankizUpload::has('image') && $type == 'partners') {
             try {
                 $group = Group::from('partnership');
                 $group->select(GroupSelect::castes());
                 $image = new FrankizImage();
                 $image->insert();
                 $image->label($label);
                 $image->caste($group->caste(new Rights('everybody')));
                 $image->image(FrankizUpload::v('image'));
                 $l->image($image);
             } catch (Exception $e) {
                 $page->assign('err', $e->getMessage());
             }
         }
         $l->label($label);
         $l->link($link);
         $l->description($description);
         $l->comment($comment);
         pl_redirect('links/' . $type);
     }
     $page->assign('title', 'Nouveau lien');
     $page->addCssLink('links.css');
     $page->changeTpl('links/new_link.tpl');
 }
Example #4
0
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
 *  GNU General Public License for more details.                           *
 *                                                                         *
 *  You should have received a copy of the GNU General Public License      *
 *  along with this program; if not, write to the Free Software            *
 *  Foundation, Inc.,                                                      *
 *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
 ***************************************************************************/
/*
 * This script creates and updates the groups corresponding to the promos
 */
require_once dirname(__FILE__) . '/../connect.db.inc.php';
$gf = new GroupFilter(new GFC_Name('everybody'));
$g = $gf->get(true);
$g->select(GroupSelect::castes());
$c = $g->caste(Rights::member());
$c->select(CasteSelect::base())->compute();
echo 'Groupe everybody mis à jour' . "\n";
$gf = new GroupFilter(new GFC_Name('public'));
$g = $gf->get(true);
$g->select(GroupSelect::castes());
$c = $g->caste(Rights::member());
$c->select(CasteSelect::base())->compute();
echo 'Groupe visibilité extérieure mis à jour' . "\n";
$gf = new GroupFilter(new GFC_Name('licenses'));
$g = $gf->get(true);
$g->select(GroupSelect::castes());
$c = $g->caste(Rights::member());
$c->select(CasteSelect::base())->compute();
echo 'Groupe licenses mis à jour' . "\n";
Example #5
0
 function handler_images($page)
 {
     $temp = Group::from('temp');
     $temp->select(GroupSelect::castes());
     $everybody_temp = $temp->caste(Rights::everybody());
     $if = new ImageFilter(new IFC_Caste($everybody_temp), new IFO_Created());
     $images = $if->get(new PlLimit(50))->select(FrankizImageSelect::base());
     $page->assign('title', 'Images du groupe temporaire');
     $page->assign('images', $images);
     $page->addCssLink('admin.css');
     $page->changeTpl('admin/images.tpl');
 }
Example #6
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 #7
0
 public function buildCondition(PlFilter $f)
 {
     $g = Group::from('temp')->select(GroupSelect::castes());
     $temp = $g->caste(Rights::everybody());
     return XDB::format('i.caste = {?}', $temp->id());
 }
Example #8
0
    $groups_friend = new Collection('Group');
    while ($g_datas = $g_iter->next()) {
        $g = new Group($g_datas['binet_id']);
        if (preg_match('/ympath?isant/', $g_datas['remarque'])) {
            $groups_friend->add($g);
        } else {
            $groups_member->add($g);
        }
        $u->comments($g, conv($g_datas['remarque']));
        if ($g->id() == 1 && strlen(conv_name($u->nickname())) > 1) {
            $u->addStudy(0, $datas['promo'], (int) $datas['promo'] + 4, $datas['promo'], conv_name($u->nickname()));
        }
    }
    $temp = new Collection('Group');
    $temp->safeMerge(array($groups_member, $groups_friend));
    $temp->select(GroupSelect::castes());
    foreach ($groups_member as $g) {
        $g->caste(Rights::member())->addUser($u);
    }
    foreach ($groups_friend as $g) {
        $g->caste(Rights::friend())->addUser($u);
    }
    $k++;
    echo 'User ' . str_pad($k, 4, '0', STR_PAD_LEFT) . '/' . $users . ' : ' . str_pad($u->id(), 5, '0', STR_PAD_LEFT) . ' - ' . $datas['promo'] . ' - ' . str_pad($groups_member->count(), 2, '0', STR_PAD_LEFT) . " members - " . str_pad($groups_friend->count(), 2, '0', STR_PAD_LEFT) . " friends - " . substr(microtime(true) - $t, 0, 5) . '   ' . $u->login() . "\n";
}
echo "-----------------------------------------------\n";
XDB::execute('UPDATE account SET skin = "default"');
echo "default skin set \n";
XDB::execute('INSERT INTO users_minimodules
                          (SELECT uid, "birthday",     "COL_LEFT",   0 FROM account WHERE uid > 0)');
XDB::execute('INSERT INTO users_minimodules
Example #9
0
 function handler_group_ajax_news($page, $group)
 {
     $group = Group::fromId($group);
     $news = false;
     if ($group) {
         $news = array();
         $group->select(GroupSelect::castes());
         $filters = new UFC_Group(explode(';', Json::v('promo')));
         $onlybefore = new NFC_Begin(new FrankizDateTime(), NFC_Begin::BEFORE);
         if (S::user()->hasRights($group, Rights::admin()) || S::user()->isWeb()) {
             $onlybefore = new PFC_True();
         }
         $nf = new NewsFilter(new PFC_And(new NFC_Origin($group), new NFC_CanBeSeen(S::user()), $onlybefore), new NFO_Begin(true));
         $ns = $nf->get(new PlLimit(10))->select(NewsSelect::head());
         foreach ($ns as $nid => $n) {
             $page->assign('news', $n);
             $news[$nid] = $page->fetch(FrankizPage::getTplPath('groups/news.tpl'));
         }
     }
     $page->jsonAssign('news', $news);
     return PL_JSON;
 }
Example #10
0
 public function handler_admin_account($page, $hruid = null, $added = false)
 {
     $err = array();
     $msg = array();
     $add = false;
     if ($added) {
         $msg[] = "L'utilisateur a été ajouté avec succès";
     }
     if ($hruid === null) {
         $user = new User();
         $add = true;
     } else {
         $user = new UserFilter(new UFC_Hruid($hruid));
         $user = $user->get(true);
         if ($user !== false) {
             $user->select(UserSelect::tol());
         } else {
             throw new Exception("Impossible de charger les données de l'utilisateur " . $hruid);
         }
     }
     if (Env::has('add_room') && !$add) {
         $r = Room::batchFrom(array(Env::t('rid')));
         if ($r->count() == 0) {
             $err[] = "La chambre entrée n'existe pas.";
         } else {
             $user->addRoom($r->pop());
         }
     }
     if (Env::has('del_room') && !$add) {
         $r = Room::batchFrom(array(Env::t('rid')));
         if ($r->count() == 0) {
             $err[] = "La chambre entrée n'existe pas.";
         } else {
             $user->removeRoom($r->pop());
         }
     }
     if (Env::has('add_perm') && !$add && S::user()->isAdmin()) {
         $user->addPerm(Env::t('perm'));
     }
     if (Env::has('del_perm') && !$add && S::user()->isAdmin()) {
         $user->removePerm(Env::t('perm'));
     }
     if (Env::has('upd_study') && !$add) {
         $user->updateStudy(Env::t('formation_id'), Env::t('forlife'), Env::t('year_in'), Env::t('year_out'), Env::t('promo'));
     }
     if (Env::has('add_study') && !$add) {
         $user->addStudy(Env::t('formation_id'), Env::t('year_in'), Env::t('year_out'), Env::t('promo'), Env::t('forlife'));
     }
     if (Env::has('del_study') && !$add) {
         $user->removeStudy(Env::t('formation_id'), Env::t('forlife'));
     }
     if (Env::has('add_group') && !$add) {
         $g = Group::from(Env::t('name'))->select(GroupSelect::castes());
         $g->caste(Rights::member())->addUser($user);
     }
     if (Env::has('del_group') && !$add) {
         $g = Group::from(Env::t('name'))->select(GroupSelect::castes());
         $g->caste(Rights::member())->removeUser($user);
     }
     if (Env::has('change_profile')) {
         if ($add) {
             if (Env::blank('hruid')) {
                 $hruid = Env::t('firstname') . '.' . Env::t('lastname');
                 $hruid = strtolower($hruid);
                 $already = new UserFilter(new UFC_Hruid($hruid));
                 $nbr = 1;
                 while ($already->getTotalCount() > 0) {
                     $nbr++;
                     $hruid = Env::t('firstname') . '.' . Env::t('lastname') . '.' . $nbr;
                     $hruid = strtolower($hruid);
                     $already = new UserFilter(new UFC_Hruid($hruid));
                 }
             } else {
                 $hruid = Env::t('hruid');
                 $already = new UserFilter(new UFC_Hruid($hruid));
                 if ($already->getTotalCount() > 0) {
                     throw new Exception("Le hruid spécifié est déjà pris.");
                 }
             }
             $user->insert();
             if (Env::blank('hruid')) {
                 $user->hruid($hruid);
             }
             $msg[] = "L'utilisateur a été ajouté.";
         }
         if (Env::has('image')) {
             $group = Group::from('tol')->select(GroupSelect::castes());
             $image = new ImageFilter(new PFC_And(new IFC_Id(Env::i('image')), new IFC_Temp()));
             $image = $image->get(true);
             if (!$image) {
                 throw new Exception("This image doesn't exist anymore");
             }
             $image->select(FrankizImageSelect::caste());
             $image->label($user->fullName());
             $image->caste($group->caste(Rights::everybody()));
             $tv = new TolValidate($image, $user);
             $v = new Validate(array('writer' => $user, 'group' => $group, 'item' => $tv, 'type' => 'tol'));
             $v->insert();
             $msg[] = 'La demande de changement de photo tol a été prise en compte.
                 Les tolmestres essaieront de te la valider au plus tôt.';
         }
         if (Env::has('password')) {
             $user->password(Env::t('password'));
         }
         if (!Env::blank('hruid')) {
             $user->hruid(Env::t('hruid'));
         }
         $user->nickname(Env::t('nickname'));
         $user->lastname(Env::t('lastname'));
         $user->firstname(Env::t('firstname'));
         $user->birthdate(new FrankizDateTime(Env::t('birthdate')));
         $user->gender(Env::t('gender') == 'man' ? User::GENDER_MALE : User::GENDER_FEMALE);
         $user->email(Env::t('bestalias'));
         $user->cellphone(new Phone(Env::t('cellphone')));
         $user->skin(Env::t('skin'));
         $user->email_format(Env::t('format') == 'text' ? User::FORMAT_TEXT : User::FORMAT_HTML);
         $user->comment(Env::t('comment'));
         if ($add) {
             //Let's add common minimodules if requested (we copy them from anonymous.internal (uid 0) one's)
             if (Env::has('addCommonMinimodules')) {
                 $user->select(UserSelect::minimodules());
                 $user->copyMinimodulesFromUser(0);
             }
             pl_redirect('profile/admin/account/' . $user->hruid() . '/added');
         }
     }
     if (!empty($err)) {
         $page->assign('err', $err);
     }
     if (!empty($msg)) {
         $page->assign('msg', $msg);
     }
     $page->assign('formations', XDB::query("SELECT formation_id, label FROM formations")->fetchAllAssoc());
     $gfun = new GroupFilter(new PFC_And(new GFC_Namespace('nationality'), new GFC_User($user)));
     $page->assign('user_nationalities', $gfun->get()->select(GroupSelect::base())->toArray());
     $gfn = new GroupFilter(new GFC_Namespace('nationality'));
     $page->assign('nationalities', $gfn->get()->select(GroupSelect::base())->toArray());
     $gfus = new GroupFilter(new PFC_And(new GFC_Namespace('sport'), new GFC_User($user)));
     $page->assign('user_sports', $gfus->get()->select(GroupSelect::base())->toArray());
     $gfs = new GroupFilter(new GFC_Namespace('sport'));
     $page->assign('sports', $gfs->get()->select(GroupSelect::base())->toArray());
     $page->assign('userEdit', $user);
     $page->addCssLink('profile.css');
     $page->assign('add', $add);
     $page->assign('title', "Changement du profil : " . $user->fullName());
     if ($add) {
         $page->assign('title', "Création d'un utilisateur");
     }
     $page->assign('perms', array('admin'));
     $page->changeTpl('profile/admin_account.tpl');
 }
Example #11
0
 * - Folder to search the pictures in
 * - Method of the User to use to find the correct picture
 * - Load the original picture or the current photo ?
 * 
 * Example :
 * ./import.tol.php '{"type":"user","condition":{"type":"uid","uids":[2]}}' . poly original
 *
 * Or :
 *
 * ./import.tol.php '{"type":"user","condition":{"type":"promo","comparison":"=","promo":2008}}' /home/2008/riton/dev/tol/2008 poly original
 * 
 */
require_once dirname(__FILE__) . '/connect.db.inc.php';
$globals->debug = 0;
$gf = new GroupFilter(new GFC_Name('tol'));
$group = $gf->get(true)->select(GroupSelect::castes());
$tol_caste = $group->caste(Rights::everybody());
// Concerned users
$uf = UserFilter::fromExport(json_decode($argv[1], true));
// Folder to look in
$folder = $argv[2];
// Field to use for the "join"
$field = $argv[3];
// Update original or current picture ?
$original = $argv[4] == 'photo' ? false : true;
$total = $uf->getTotalCount();
$chunk = empty($argv[5]) ? 100 : $argv[5];
$from = 0;
while (true) {
    echo "Chunk from {$from} to " . ($from + $chunk) . "\n";
    $users = $uf->get(new PlLimit($chunk, $from));