예제 #1
0
파일: admin.php 프로젝트: netixx/frankiz
 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');
 }
예제 #2
0
 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);
 }
예제 #3
0
파일: activity.php 프로젝트: netixx/frankiz
 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");
 }
예제 #4
0
 *  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);
}
예제 #5
0
 public function objects()
 {
     return array('writer' => UserSelect::base(), 'formation' => GroupSelect::base(), 'origin' => GroupSelect::base());
 }
예제 #6
0
파일: validate.php 프로젝트: netixx/frankiz
 public static function validate($subs = null)
 {
     return new self(array('writer', 'type', 'group', 'created', 'item'), array('writer' => UserSelect::base(), 'group' => GroupSelect::base()));
 }
예제 #7
0
파일: qdj.php 프로젝트: netixx/frankiz
 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;
 }
예제 #8
0
 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);
 }
예제 #9
0
파일: room.php 프로젝트: netixx/frankiz
 public static function see()
 {
     return self::all(array('ips' => IpSelect::base(), 'users' => UserSelect::base(), 'groups' => GroupSelect::base()));
 }
예제 #10
0
파일: tol.php 프로젝트: netixx/frankiz
 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;
 }
예제 #11
0
파일: wiki.php 프로젝트: netixx/frankiz
 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');
     }
 }
예제 #12
0
 public function objects()
 {
     return array('writer' => UserSelect::base());
 }
예제 #13
0
파일: news.php 프로젝트: netixx/frankiz
 public static function news()
 {
     return new NewsSelect(array_merge(self::$natives, array('read', 'star')), array('writer' => UserSelect::base(), 'target' => CasteSelect::group(), 'origin' => GroupSelect::base()));
 }
예제 #14
0
파일: groups.php 프로젝트: netixx/frankiz
 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;
 }
예제 #15
0
파일: profile.php 프로젝트: netixx/frankiz
 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');
         }
     }
 }
예제 #16
0
 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()));
 }