public static function assign_json_to_map(PlPage $page, $pids = null) { if (!is_null($pids)) { $where = XDB::format(' AND pa.pid IN {?}', $pids); } else { $where = ''; } if (!S::logged() || !S::user()->checkPerms('directory_ax')) { $where .= " AND pa.pub = 'public'"; $name_publicity = 'public'; } else { if (!S::user()->checkPerms('directory_private')) { $where .= " AND pa.pub = 'ax'"; $name_publicity = 'public'; } else { $name_publicity = 'private'; } } $data = XDB::rawFetchAllAssoc('SELECT pa.latitude, pa.longitude, GROUP_CONCAT(DISTINCT p.hrpid SEPARATOR \',\') AS hrpid, GROUP_CONCAT(pd.promo SEPARATOR \',\') AS promo, GROUP_CONCAT(DISTINCT pd.' . $name_publicity . '_name, \' (\', pd.promo, \')\' SEPARATOR \', \') AS name, GROUP_CONCAT(DISTINCT pa.pid SEPARATOR \',\') AS pid FROM profile_addresses AS pa INNER JOIN profiles AS p ON (pa.pid = p.pid) INNER JOIN profile_display AS pd ON (pd.pid = pa.pid) WHERE pa.type = \'home\' AND p.deathdate IS NULL AND pa.latitude IS NOT NULL AND pa.longitude IS NOT NULL' . $where . ' GROUP BY pa.latitude, pa.longitude'); $page->jsonAssign('data', $data); }
public function prepare(PlPage $page, $id) { $wp = new PlWikiPage((@$GLOBALS['IS_XNET_SITE'] ? 'ReviewXnet' : 'Review') . '.' . ucfirst($id)); $wp->buildCache(); $page->assign('cacheExists', $wp->cacheFilename()); $page->assign('article', $wp->name); }
public function force_login(PlPage $page) { $redirect = S::v('loginX'); if (!$redirect) { $page->trigError('Impossible de s\'authentifier. Problème de configuration de plat/al.'); return; } http_redirect($redirect); }
public function force_login(PlPage $page) { header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden'); if (S::logged()) { $page->changeTpl('core/password_prompt_logged.tpl'); } else { $page->changeTpl('core/password_prompt.tpl'); } $page->assign_by_ref('platal', $this); $page->run(); }
public function __construct() { global $globals; parent::__construct(); $this->register_function('list_all_my_groups', 'list_all_my_groups'); $this->register_modifier('cat_pp', 'cat_pp'); $this->assign('it_is_xnet', true); global $globals; $this->assign('is_logged', S::logged()); if ($globals->asso('id')) { $this->assign('asso', $globals->asso()); $this->setType($globals->asso('cat')); $this->assign('is_admin', may_update()); $this->assign('is_member', is_member()); } if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { $this->addJsLink('json2.js'); } $this->addJsLink('jquery.xorg.js'); $this->addJsLink('overlib.js'); $this->addJsLink('core.js'); $this->addJsLink('xorg.js'); if ($globals->core->sentry_js_dsn) { $this->addJsLink('raven.min.js'); } $this->setTitle('Les associations polytechniciennes'); }
public function __construct() { global $globals; parent::__construct(); // Set the default page $this->changeTpl('platal/index.tpl'); if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { $this->addJsLink('json2.js'); } $this->addJsLink('jquery.xorg.js'); $this->addJsLink('overlib.js'); $this->addJsLink('core.js'); $this->addJsLink('xorg.js'); if ($globals->core->sentry_js_dsn) { $this->addJsLink('raven.min.js'); } $this->setTitle('le site des élèves et anciens élèves de l\'École polytechnique'); if (S::logged() && S::user()->checkPerms('admin')) { $types = array(S::user()->type); $perms = DirEnum::getOptions(DirEnum::ACCOUNTTYPES); ksort($perms); foreach ($perms as $type => $perm) { if (!empty($perm) && $type != $types[0]) { $types[] = $type; } } $this->assign('account_types_list', $types); $skins = DirEnum::getOptions(DirEnum::SKINS); asort($skins); $this->assign('skin_list', $skins); } }
private function upload_image(PlPage $page, PlUpload $upload) { if (@(!$_FILES['image']['tmp_name']) && !Env::v('image_url')) { return true; } if (!$upload->upload($_FILES['image']) && !$upload->download(Env::v('image_url'))) { $page->trigError('Impossible de télécharger l\'image'); return false; } elseif (!$upload->isType('image')) { $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.'); $upload->rm(); return false; } elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) { $page->trigError('Impossible de retraiter l\'image'); return false; } return true; }
function handler_search(PlPage $page, PlUser $authUser, $payload, $mode = 'quick') { if (!isset($payload['quick'])) { $page->trigError('Malformed search query'); return PL_BAD_REQUEST; } $query = trim($payload['quick']); if (@$payload['allow_special']) { if (starts_with($query, 'admin:')) { $page->jsonAssign('link_type', 'admin'); $query = substr($query, 6); } else { if (starts_with($query, 'adm:')) { $page->jsonAssign('link_type', 'admin'); $query = substr($query, 4); } else { if (starts_with('admin', $query) || strpos($query, ':') !== false) { $page->jsonAssign('profile_count', -1); $page->jsonAssign('profiles', array()); return PL_JSON; } else { $page->jsonAssign('link_type', 'profile'); } } } } if (strlen($query) < 3) { $page->jsonAssign('profile_count', -1); $page->jsonAssign('profiles', array()); return PL_JSON; } Env::set('quick', $query); foreach (array('with_soundex', 'exact') as $key) { if (isset($payload[$key])) { Env::set($key, $payload[$key]); } } require_once 'userset.inc.php'; $view = new QuickSearchSet(); $view->addMod('json', 'JSon', true, $payload); $view->apply('api/1/search', $page, 'json'); return PL_JSON; }
function handler_bulkmail(PlPage $page, PlUser $authUser, $payload) { require_once 'partnersharing.inc.php'; $partner = PartnerSharing::fetchByAPIUser($authUser); if ($partner == null || !$partner->has_bulkmail) { return PL_FORBIDDEN; } if (!isset($payload['uids'])) { $page->trigError('Malformed query.'); return PL_BAD_REQUEST; } $uids = $payload['uids']; $pf = new UserFilter(new PFC_And(new UFC_PartnerSharingID($partner->id, $uids), new UFC_HasValidEmail(), new UFC_PartnerSharingEmail($partner->id))); $contexts = array(); foreach ($pf->iterUsers() as $user) { $contexts[] = array('name' => $user->fullName(), 'email' => $user->bestEmail(), 'gender' => $user->isFemale() ? 'woman' : 'man'); } $page->jsonAssign('contexts', $contexts); return PL_JSON; }
public function _prepare(PlPage $page, $id) { $page->assign('mygroups', XDB::iterator("SELECT a.nom, a.site, a.diminutif, a.unsub_url, a.pub, m.perms\n FROM groups AS a\n INNER JOIN group_members AS m ON (m.asso_id = a.id)\n WHERE m.uid = {?} AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')", $this->owner->id())); $page->assign('listgroups', XDB::iterator("SELECT a.nom, a.diminutif, a.sub_url,\n IF (a.cat = 'Institutions', a.cat, d.nom) AS dom\n FROM groups AS a\n LEFT JOIN group_dom AS d ON (d.id = a.dom)\n WHERE a.inscriptible != 0\n AND (a.cat = 'GroupesX' OR a.cat = 'Institutions')\n ORDER BY a.cat, a.dom, a.nom")); $page->assign('old', (int) date('Y') >= $this->profile->grad_year); }
function handler_p_edit($page, $hrpid = null, $opened_tab = null, $mode = null, $success = null) { global $globals; if (in_array($hrpid, array('general', 'adresses', 'emploi', 'poly', 'deco', 'mentor', 'deltaten'))) { $aux = $opened_tab; $opened_tab = $hrpid; $hrpid = $aux; $url_error = true; } else { $url_error = false; } $profile = $this->findProfile($hrpid); if (!$profile instanceof Profile && ($profile == PL_NOT_FOUND || $profile == PL_FORBIDDEN)) { return $profile; } if (is_null($hrpid) || $url_error) { pl_redirect('profile/edit/' . $profile->hrid() . (is_null($opened_tab) ? '' : '/' . $opened_tab)); } // Build the page $page->addJsLink('jquery.ui.xorg.js'); $page->addJsLink('education.js', true, false); /* dynamic content */ $page->addJsLink('grades.js', true, false); /* dynamic content */ $page->addJsLink('profile.js'); $wiz = new PlWizard('Profil', PlPage::getCoreTpl('plwizard.tpl'), true, true, false); $wiz->addUserData('profile', $profile); $wiz->addUserData('owner', $profile->owner()); $this->load('page.inc.php'); $wiz->addPage('ProfilePageGeneral', 'Général', 'general'); $wiz->addPage('ProfilePageAddresses', 'Adresses personnelles', 'adresses'); $wiz->addPage('ProfilePageJobs', 'Informations professionnelles', 'emploi'); $viewPrivate = S::user()->checkPerms(User::PERM_DIRECTORY_PRIVATE); if ($viewPrivate) { $wiz->addPage('ProfilePageGroups', 'Groupes X - Binets', 'poly'); } $wiz->addPage('ProfilePageDecos', 'Décorations - Medailles', 'deco'); if ($viewPrivate) { $wiz->addPage('ProfilePageMentor', 'Mentoring', 'mentor'); } if ($viewPrivate && $profile->isDeltatenEnabled(Profile::DELTATEN_OLD)) { $wiz->addPage('ProfilePageDeltaten', 'Opération N N-10', 'deltaten'); } $wiz->apply($page, 'profile/edit/' . $profile->hrid(), $opened_tab, $mode); if (!$profile->birthdate) { $page->trigWarning("Ta date de naissance n'est pas renseignée, ce qui t'empêcheras de réaliser" . " la procédure de récupération de mot de passe si un jour tu le perdais."); } $page->setTitle('Mon Profil'); $page->assign('hrpid', $profile->hrid()); $page->assign('viewPrivate', $viewPrivate); $page->assign('isMe', S::user()->isMyProfile($profile)); if (isset($success) && $success) { $page->trigSuccess('Ton profil a bien été mis à jour.'); } }
function handler_review($page, $action = null, $mode = null) { // Include X-XRDS-Location response-header for Yadis discovery global $globals; header('X-XRDS-Location: ' . $globals->baseurl . '/openid/xrds'); $this->load('review.inc.php'); $dom = 'Review'; if (@$GLOBALS['IS_XNET_SITE']) { $dom .= 'Xnet'; } $wp = new PlWikiPage($dom . '.Admin'); $conf = explode('%0a', $wp->getField('text')); $wiz = new PlWizard('Tour d\'horizon', PlPage::getCoreTpl('plwizard.tpl'), true); foreach ($conf as $line) { $list = preg_split('/\\s*[*|]\\s*/', $line, -1, PREG_SPLIT_NO_EMPTY); $wiz->addPage('ReviewPage', $list[0], $list[1]); } $wiz->apply($page, 'review', $action, $mode); }
function fill_email_combobox(PlPage $page, array $retrieve, $user = null) { require_once 'emails.inc.php'; if (is_null($user)) { $user = S::user(); } /* Always refetch the profile. */ $profile = $user->profile(true); $emails = array(); if (in_array('source', $retrieve)) { $emails['Emails polytechniciens'] = XDB::fetchColumn('SELECT CONCAT(s.email, \'@\', d.name) FROM email_source_account AS s INNER JOIN email_virtual_domains AS m ON (s.domain = m.id) INNER JOIN email_virtual_domains AS d ON (d.aliasing = m.id) WHERE s.uid = {?} ORDER BY s.email, d.name', $user->id()); } if (in_array('redirect', $retrieve)) { $redirect = new Redirect($user); $emails['Redirections'] = array(); foreach ($redirect->emails as $redirect_it) { if ($redirect_it->is_redirection()) { $emails['Redirections'][] = $redirect_it->email; } } } if ($profile) { if (in_array('job', $retrieve)) { $emails['Emails professionels'] = XDB::fetchColumn('SELECT email FROM profile_job WHERE pid = {?} AND email IS NOT NULL AND email != \'\'', $profile->id()); } if ($profile->email_directory) { if (in_array('directory', $retrieve)) { foreach ($emails as &$email_list) { foreach ($email_list as $key => $email) { if ($profile->email_directory == $email) { unset($email_list[$key]); } } } $emails['Email annuaire AX'] = array($profile->email_directory); } elseif (in_array('stripped_directory', $retrieve)) { if (User::isForeignEmailAddress($profile->email_directory)) { $is_redirect = XDB::fetchOneCell('SELECT COUNT(*) FROM email_redirect_account WHERE uid = {?} AND redirect = {?}', $user->id(), $profile->email_directory); if ($is_redirect == 0) { $emails['Email annuaire AX'] = array($profile->email_directory); } } } } if (isset($emails['Emails professionels']) && isset($emails['Redirections'])) { $intersect = array_intersect($emails['Emails professionels'], $emails['Redirections']); foreach ($intersect as $key => $email) { unset($emails['Emails professionels'][$key]); } } } $emails_count = 0; foreach ($emails as $email_list) { $emails_count += count($email_list); } $page->assign('emails_count', $emails_count); $page->assign('email_lists', $emails); }
public function _prepare(PlPage $page, $id) { $res = XDB::iterator('SELECT *, FIND_IN_SET(\'validation\', flags) AS validate FROM profile_medal_enum ORDER BY type, text'); $mlist = array(); while ($tmp = $res->next()) { $mlist[$tmp['type']][] = $tmp; } $page->assign('medal_list', $mlist); $fullType = array('ordre' => 'Ordres', 'croix' => 'Croix', 'militaire' => 'Médailles militaires', 'honneur' => 'Médailles d\'honneur', 'resistance' => 'Médailles de la résistance', 'prix' => 'Prix', 'sport' => 'Médailles sportives'); $page->assign('fullType', $fullType); }
public function apply(PlPage $page) { $export = array(); $start = isset($this->params['offset']) ? $this->params['offset'] : 0; $count = isset($this->params['count']) ? $this->params['count'] : 10; $profiles = $this->set->get(new PlLimit($start, $count)); foreach ($profiles as $profile) { $export[] = $profile->export(); } $page->jsonAssign('profile_count', $this->set->count()); $page->jsonAssign('profiles', $export); }
public function _prepare(PlPage $page, $id) { require_once "education.func.inc.php"; $res = XDB::query("SELECT id, field\n FROM profile_education_field_enum\n ORDER BY field"); $page->assign('edu_fields', $res->fetchAllAssoc()); require_once "emails.combobox.inc.php"; fill_email_combobox($page, array('source', 'redirect', 'job', 'directory'), $this->owner); $res = XDB::query("SELECT nw.nwid AS type, nw.name\n FROM profile_networking_enum AS nw\n ORDER BY name"); $page->assign('network_list', $res->fetchAllAssoc()); $page->assign('lastnames', array('main' => 'Nom patronymique', 'marital' => 'Nom marital', 'ordinary' => 'Nom usuel')); $page->assign('firstnames', array('firstname_main' => 'Prénom', 'firstname_ordinary' => 'Prénom usuel', 'pseudonym' => 'Pseudonyme (nom de plume)')); $page->assign('other_names', array('nickname' => 'Surnom', 'firstname' => 'Autre prénom', 'lastname' => 'Autre nom')); $page->assign('isFemale', $this->profile->isFemale() ? 1 : 0); }
public function prepare(PlPage $page, $id) { if (count($this->values) == 0) { $this->fetchData(); } foreach ($this->values as $field => &$value) { $page->assign($field, $value); } $this->_prepare($page, $id); $page->assign('profile', $this->profile); $page->assign('owner', $this->owner); $page->assign('profile_page', $this->pg_template); $page->assign('errors', $this->errors); }
function handler_accounts(PlPage $page) { $page->changeTpl('admin/accounts.tpl'); $page->setTitle('Administration - Comptes'); if (Post::has('create_account')) { S::assert_xsrf_token(); $firstname = Post::t('firstname'); $lastname = mb_strtoupper(Post::t('lastname')); $sex = Post::s('sex'); $email = Post::t('email'); $type = Post::s('type'); if (!$type) { $page->trigError("Empty account type"); } elseif (!isvalid_email($email)) { $page->trigError("Invalid email address: {$email}"); } elseif (strlen(Post::s('pwhash')) != 40) { $page->trigError("Invalid password hash"); } else { $login = PlUser::makeHrid($firstname, $lastname, $type); $full_name = $firstname . ' ' . $lastname; $directory_name = $lastname . ' ' . $firstname; XDB::execute("INSERT INTO accounts (hruid, type, state, password,\n registration_date, email, full_name,\n display_name, sex, directory_name,\n lastname, firstname)\n VALUES ({?}, {?}, 'active', {?}, NOW(), {?}, {?}, {?}, {?}, {?}, {?}, {?})", $login, $type, Post::s('pwhash'), $email, $full_name, $full_name, $sex, $directory_name, $lastname, $firstname); } } $uf = new UserFilter(new UFC_AccountType('ax', 'school', 'fx')); $page->assign('users', $uf->iterUsers()); }
protected function prepareText(PlPage $page, array $user) { $page->assign('intro', $this->getIntro()); $page->assign('u', $user); $page->assign('sign', $this->getSignature()); $page->assign('personal_notes', $this->getPersonalNotes()); }
public function addCssLink($css) { $csss = unflatten($css); $exceptions = array(); foreach ($csss as $css) { try { parent::addCssLink(self::getCssPath($css)); } catch (SkinFileNotFoundException $e) { $exceptions[] = $e; } } return SkinFileNotFoundException::merge($exceptions); }
public function _prepare(PlPage $page, $id) { $page->assign('countryList', XDB::iterator("SELECT iso_3166_1_a2, country\n FROM geoloc_countries\n ORDER BY country")); $page->assign('hrpid', $this->profile->hrpid); $page->assign('comp_list', XDB::iterator("SELECT id, text_fr, FIND_IN_SET('titre',flags) AS title\n FROM profile_skill_enum")); $page->assign('comp_level', array('initié' => 'initié', 'bonne connaissance' => 'bonne connaissance', 'expert' => 'expert')); $page->assign('lang_list', XDB::iterator('SELECT iso_639_2b, language FROM profile_langskill_enum ORDER BY language')); $page->assign('lang_level', array(1 => 'connaissance basique', 2 => 'maîtrise des bases', 3 => 'maîtrise limitée', 4 => 'maîtrise générale', 5 => 'bonne maîtrise', 6 => 'maîtrise complète')); }
function handler_csv(PlPage $page, PlUser $user) { $page->changeTpl('carnet/mescontacts.outlook.tpl', NO_SKIN); $pf = new ProfileFilter(new UFC_Contact($user)); require_once 'carnet/outlook.inc.php'; Outlook::output_profiles($pf->getProfiles(), 'fr'); }
public function assignToPage(PlPage $page) { $response = $this->get(); $page->jsonAssign('matches', $response['matches']); $page->jsonAssign('profiles', $response['profiles']); }
protected function prepare() { $tpl = parent::prepare(); global $wiz; $wiz = new PlWizard('Banana', PlPage::getCoreTpl('plwizard.tpl'), true, false); foreach ($this->pages as $name => &$mpage) { $wiz->addPage($this->handler, $mpage['text'], $name); } $wiz->apply(Platal::page(), $this->base, $this->page); return $tpl; }
public function _prepare(PlPage $page, $id) { $page->assign('hrpid', $this->profile->hrpid); }