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); }
/** * 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; }
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'); }
* 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";
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'); }
} } 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
public function buildCondition(PlFilter $f) { $g = Group::from('temp')->select(GroupSelect::castes()); $temp = $g->caste(Rights::everybody()); return XDB::format('i.caste = {?}', $temp->id()); }
$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
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; }
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'); }
* - 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));