function handler_logs_sessions($page) { $iter = XDB::iterator('SELECT id, uid, host, ip, forward_ip, forward_host, browser, suid, flags, start FROM log_sessions ORDER BY start DESC LIMIT 50'); $sessions = array(); $users = new Collection('User'); while ($session = $iter->next()) { $user = $users->addget($session['uid']); $sessions[$session['id']] = array('user' => $user, 'host' => $session['host'], 'ip' => uint_to_ip($session['ip']), 'forward_host' => $session['forward_host'], 'forward_ip' => uint_to_ip($session['forward_ip']), 'browser' => $session['browser'], 'suid' => $session['suid'], 'flags' => $session['flags'], 'start' => new FrankizDateTime($session['start'])); } $users->select(UserSelect::base()); $page->assign('title', "Logs des sessions"); $page->assign('sessions', $sessions); $page->changeTpl('admin/logs_sessions.tpl'); }
public function sendmailfinal($isok) { if (is_null($this->user->bestEmail())) { $this->user->select(UserSelect::base()); } $mail = new FrankizMailer('validate/mail.valid.tol.tpl'); if (Env::has("ans")) { $mail->assign('comm', Env::v('ans')); } $mail->assign('isOk', $isok); if ($isok) { $mail->Subject = '[Frankiz] Ta photo tol a été validée'; } else { $mail->Subject = '[Frankiz] Ta photo tol a été refusée'; } $mail->SetFrom($this->_mail_from_addr(), $this->_mail_from_disp()); $mail->AddAddress($this->user->bestEmail(), $this->user->displayName()); $mail->AddCC($this->_mail_from_addr(), $this->_mail_from_disp()); $mail->Send(false); }
function handler_icalendar($page, $type = 'friends', $user = null, $hash = null) { $user = User::from($user); if (!$user) { return PL_FORBIDDEN; } $user->select(UserSelect::base()); if ($user->hash_rss() != $hash) { return PL_FORBIDDEN; } if ($type == 'participate') { $activities = new ActivityInstanceFilter(new PFC_AND(new AIFC_Participants(S::user()), new AIFC_END(new FrankizDateTime(), AIFC_End::AFTER))); } else { $activities = new ActivityInstanceFilter(new PFC_Or(new PFC_And(new AIFC_END(new FrankizDateTime(), AIFC_End::AFTER), new AIFC_User($user, 'restricted')), new PFC_And(new AIFC_END(new FrankizDateTime(), AIFC_End::AFTER), new AIFC_User($user, 'everybody')))); } $c = $activities->get(); $c->select(ActivityInstanceSelect::all()); $page->assign('view', $type); $page->assign('activities', $c); $page->changeTpl('activity/icalendar.tpl', NO_SKIN); pl_content_headers("text/calendar"); }
* http://br.binets.fr/ * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * 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 * ***************************************************************************/ /** /** * Force a skin to every user in groupe on_platal */ require_once dirname(__FILE__) . '/../connect.db.inc.php'; // Get all users $userfilter = new UserFilter(new UFC_Group(Group::from('on_platal'))); $users = $userfilter->get(); $users->select(UserSelect::base()); $skin = empty($argv[1]) ? 'default' : $argv[1]; foreach ($users as $u) { echo 'Forcing skin to ' . $u->login() . PHP_EOL; $u->skin($skin); }
public function objects() { return array('writer' => UserSelect::base(), 'formation' => GroupSelect::base(), '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 static function points(FrankizDateTime $begin, FrankizDateTime $end) { $res = XDB::query('SELECT uid, SUM( _vote1*5 + _vote2*2 + _vote3 - _vote4*13 + _vote5*4.2 + _vote6*6.9 + _vote7*3.14 + _vote8*3 + _vote9*7 + _vote10*7.1) as total, SUM(_vote1) as nb1, SUM(_vote2) as nb2, SUM(_vote3) as nb3, SUM(_vote4) as nb4, SUM(_vote5) as nb5, SUM(_vote6) as nb6, SUM(_vote7) as nb7, SUM(_vote8) as nb8, SUM(_vote9) as nb9, SUM(_vote10) as nb10 FROM ( SELECT uid, if(rule = 1, count(*), 0) as _vote1, if(rule = 2, count(*), 0) as _vote2, if(rule = 3, count(*), 0) as _vote3, if(rule = 4, count(*), 0) as _vote4, if(rule = 5, count(*), 0) as _vote5, if(rule = 6, count(*), 0) as _vote6, if(rule = 7, count(*), 0) as _vote7, if(rule = 8, count(*), 0) as _vote8, if(rule = 9, count(*), 0) as _vote9, if(rule = 10, count(*), 0) as _vote10 FROM qdj_votes AS qv INNER JOIN qdj AS q ON qv.qdj = q.id WHERE qv.rule >0 AND q.date BETWEEN {?} AND {?} AND uid NOT IN ( SELECT uid FROM groups AS g JOIN castes AS c ON g.gid = c.group JOIN castes_users AS cu ON cu.cid = c.cid WHERE g.name = "qdj" AND c.rights = "admin" ) GROUP BY rule, uid ) AS aux GROUP BY uid ORDER BY total DESC', $begin->toDb(), $end->toDb())->fetchAllAssoc(); $users = new collection('User'); foreach ($res as $key => $e) { $res[$key]['average'] = ($e['nb1'] + $e['nb2'] + $e['nb3'] + $e['nb4'] + $e['nb5'] + $e['nb6'] + $e['nb7'] + $e['nb8'] + $e['nb9'] + $e['nb10']) / 10; $res[$key]['user'] = $users->addget($e['uid']); unset($res[$key]['uid']); $res[$key]['deviation'] = round(sqrt((pow($e['nb1'], 2) + pow($e['nb2'], 2) + pow($e['nb3'], 2) + pow($e['nb4'], 2) + pow($e['nb5'], 2) + pow($e['nb6'], 2) + pow($e['nb7'], 2) + pow($e['nb8'], 2) + pow($e['nb9'], 2) + pow($e['nb10'], 2)) / 10 - pow($res[$key]['average'], 2)), 2); } $users->select(UserSelect::base()); return $res; }
public function sendmailfinal($isok) { if ($this->writer->bestEmail() === null) { $this->writer->select(UserSelect::base()); } $mail = new FrankizMailer('validate/mail.valid.activity.tpl'); $mail->assign('isok', $isok); $mail->assign('valid_origin', $this->valid_origin); $mail->assign('comm', Env::v('ans', '')); $mail->assign('targetGroup', $this->target->group()); $mail->assign('origin', $this->origin); if ($isok && !$this->valid_origin) { $mail->Subject = '[Frankiz] Ton activité a été validée'; } elseif ($isok) { $mail->Subject = '[Frankiz] Le groupe d\'origine de ton activité a été validé'; } else { $mail->Subject = '[Frankiz] Ton activité a été refusée'; } $mail->SetFrom($this->_mail_from_addr(), $this->_mail_from_disp()); $mail->AddAddress($this->writer->bestEmail(), $this->writer->displayName()); $mail->AddCC($this->_mail_from_addr(), $this->_mail_from_disp()); $mail->Send(false); }
public static function see() { return self::all(array('ips' => IpSelect::base(), 'users' => UserSelect::base(), 'groups' => GroupSelect::base())); }
function handler_tol_ajax_search($page) { $json = json_decode(Env::v('json')); $fields = $this->fillFields($json); $filter = $this->buildFilter($fields); $fiches = array(); if ($filter) { $uf = new UserFilter($filter, array(new UFO_Promo(true), new UFO_Name(UFO_Name::LASTNAME))); if ($json->mode == 'card') { $users = $uf->get(new PlLimit(20, (JSON::i('page', 1) - 1) * 20))->select(UserSelect::base()); } else { $users = $uf->get(new PlLimit(50, (JSON::i('page', 1) - 1) * 50))->select(UserSelect::tol()); } $page->assign('user', S::user()); $page->jsonAssign('total', $uf->getTotalCount()); foreach ($users as $k => $user) { $page->assign('result', $user); if ($json->mode == 'card') { $page->assign('mode', 'card'); } else { $page->assign('mode', 'sheet'); } try { $fiches[$user->id()] = $page->filteredFetch(FrankizPage::getTplPath('tol/result.tpl')); } catch (Exception $e) { XDB::execute('INSERT INTO tol_errors SET error = {?}', $user->id()); } } } $page->jsonAssign('mode', $json->mode); $page->jsonAssign('results', $fiches); $page->jsonAssign('success', true); return PL_JSON; }
function handler_admin($page) { $mixed = func_get_args(); array_shift($mixed); $mixed = implode('/', $mixed); if (empty($mixed)) { $wikis = Wiki::selectAll(Wiki::SELECT_BASE | Wiki::SELECT_COUNT); $page->assign('wikis', $wikis); $page->addCssLink('wiki.css'); $page->assign('title', 'Admin Wiki'); $page->changeTpl('wiki/list.tpl'); } else { if (Wiki::isId($mixed)) { $wiki = new Wiki($mixed); } else { $wiki = Wiki::from($mixed, true); // Create the Wiki if it doesn't exist } if (Env::has('newcontent')) { $wiki->update(Env::s('newcontent')); } $wiki->select(Wiki::SELECT_BASE | Wiki::SELECT_COUNT); $wiki->select(array(Wiki::SELECT_VERSION => array('versions' => array('last'), 'options' => UserSelect::base()))); $page->assign('wiki', $wiki); $page->addCssLink('wiki.css'); $page->assign('title', 'Admin Wiki: ' . $wiki->name()); $page->changeTpl('wiki/admin.tpl'); } }
public function objects() { return array('writer' => UserSelect::base()); }
public static function news() { return new NewsSelect(array_merge(self::$natives, array('read', 'star')), array('writer' => UserSelect::base(), 'target' => CasteSelect::group(), 'origin' => GroupSelect::base())); }
function handler_group_ajax_admin_users($page) { $group = Group::fromId(Json::i('gid')); $limit = 10; $total = 0; $users = false; if ($group) { $users = array(); $order = new UFO_Name(UFO_Name::LASTNAME); $filters = array(); $rights = Rights::everybody(); if (Json::s('rights', '') != '') { $rights = new Rights(Json::s('rights')); } $filters[] = new UFC_Group($group, $rights); if (Json::t('promo', '') != '') { $filters[] = new UFC_Group(explode(';', Json::v('promo'))); } if (Json::t('name', '') != '') { $filters[] = new UFC_Name(Json::t('name'), UFC_Name::LASTNAME | UFC_Name::FIRSTNAME | UFC_Name::NICKNAME, UFC_Name::CONTAINS); } $uf = new UserFilter(new PFC_And($filters), $order); $users = $uf->get(new PlLimit($limit, (Json::i('page', 1) - 1) * $limit)); $total = $uf->getTotalCount(); $export = array(); if ($users->count() > 0) { $users->select(UserSelect::base()); /* * Fetching rights */ $users_rights = $group->selectRights($users); /* * Fetching comments */ $users_comments = array(); $iter = XDB::iterRow('SELECT uid, comment FROM users_comments WHERE gid = {?} AND uid IN {?}', $group->id(), $users->ids()); while (list($uid, $comment) = $iter->next()) { $users_comments[$uid] = $comment; } /* * Exporting */ $page->assign('defaultrights', array(Rights::admin(), Rights::member(), Rights::friend())); foreach ($users as $uid => $u) { $page->assign('user', $u); $page->assign('rights', empty($users_rights[$uid]) ? array() : $users_rights[$uid]); $page->assign('comment', empty($users_comments[$uid]) ? "" : $users_comments[$uid]); $export[$uid] = $page->filteredFetch(FrankizPage::getTplPath('groups/admin_user.tpl')); } } } $page->jsonAssign('limit', $limit); $page->jsonAssign('total', $total); $page->jsonAssign('users', $export); return PL_JSON; }
public function handler_recovery($page) { global $globals; $page->addCssLink('profile.css'); $page->changeTpl('profile/recovery.tpl'); $page->assign('title', 'Nouveau mot de passe'); // Step 1 : Ask the email $page->assign('step', 'ask'); // Step 2 : Send the recovery mail if (Env::t('mail', '') != '') { // TODO: Accept forlife too list($forlife, $domain) = explode('@', Env::t('mail'), 2); $uf = new UserFilter(new UFC_Forlife($forlife, $domain)); $user = $uf->get(true); if (!$user) { $page->assign('error', 'true'); return; } $user->select(UserSelect::base()); $page->assign('email', Env::t('mail')); $mail = new FrankizMailer('profile/recovery.mail.tpl'); $hash = rand_url_id(); $user->hash($hash); $mail->assign('hash', $hash); $mail->assign('uid', $user->id()); $mail->SetFrom($globals->mails->web, 'Les Webmestres de Frankiz'); $mail->AddAddress($user->bestEmail(), $user->displayName()); $mail->subject('[Frankiz] Changement de mot de passe'); $mail->Send($user->isEmailFormatHtml()); $page->assign('step', 'mail'); } // Step 2 : Send a new password if (Env::v('hash', '') != '' && Env::v('uid', '') != '') { $user = new User(Env::v('uid')); $user->select(UserSelect::base()); if (Env::v('hash') == $user->hash()) { // TODO: log the session opening $mail = new FrankizMailer('profile/recovery_new.mail.tpl'); $new = rand_url_id(); $user->hash(''); $user->password($new); $mail->assign('new_password', $new); $mail->SetFrom($globals->mails->web, 'Les Webmestres de Frankiz'); $mail->AddAddress($user->bestEmail(), $user->displayName()); $mail->subject('[Frankiz] Nouveau mot de passe'); $mail->Send($user->isEmailFormatHtml()); $page->assign('step', 'password'); } else { $page->assign('step', 'expired'); } } }
public static function all($subs = null) { return new ActivityInstanceSelect(array_merge(self::$natives, array('participants')), array('writer' => UserSelect::base(), 'activity' => ActivitySelect::base(), 'participants' => UserSelect::base())); }