Files
globelus.pl/autoload/front/controls/class.GlobelusCv.php
Jacek Pyziak 905c0f0d89 Add candidate and employer templates, application form, and new password functionality
- Created 'dla-kandydata.php' template for candidates with job offers and registration options.
- Developed 'dla-pracodawcy.php' template for employers detailing how Globelus works and registration for new employers.
- Implemented 'advert-apply.php' for job applications, including form validation and file upload for CVs.
- Added 'new-password.php' for users to set a new password with validation for password strength and matching.
2025-05-24 11:51:42 +02:00

170 lines
6.6 KiB
PHP

<?php
namespace front\controls;
class GlobelusCv
{
static public function proposed_candidate_profile()
{
global $lang;
if ( !\front\factory\Globelus::permissions_check( $g_user = \S::get_session( 'g_user' ), __CLASS__ . "\\" . __FUNCTION__ ) )
{
header( 'Location: /logowanie' );
exit;
}
return \Tpl::view( 'globelus/cv/candidate-profile', [
'g_user' => $g_user,
'candidate' => \front\factory\GlobelusUser::user_details( \S::get( 'user_id' ) ),
] );
}
public static function candidate_profile()
{
global $lang;
if ( !\front\factory\Globelus::permissions_check( $g_user = \S::get_session( 'g_user' ), __CLASS__ . "\\" . __FUNCTION__ ) )
{
header( 'Location: /logowanie' );
exit;
}
if ( !is_array( $g_user['categories'] ) or !count( $g_user['categories'] ) )
return \Tpl::view( 'globelus/cv/alerts/cv-access' );
$next_profile = \front\factory\GlobelusCv::next_profile(
\S::get( 'user_id' ),
$g_user['categories'],
\S::get_session( 'cv-filtr-keyword' ),
\S::get_session( 'cv-filtr-countries' ),
\S::get_session( 'cv-filtr-availability' ),
\S::get_session( 'cv-filtr-categories' ),
\S::get_session( 'cv-filtr-voivodeships' ),
\S::get_session( 'cv-id_position' )
);
$prev_profile = \front\factory\GlobelusCv::prev_profile(
\S::get( 'user_id' ),
$g_user['categories'],
\S::get_session( 'cv-filtr-keyword' ),
\S::get_session( 'cv-filtr-countries' ),
\S::get_session( 'cv-filtr-availability' ),
\S::get_session( 'cv-filtr-categories' ),
\S::get_session( 'cv-filtr-voivodeships' ),
\S::get_session( 'cv-id_position' )
);
return \Tpl::view( 'globelus/cv/candidate-profile', [
'g_user' => $g_user,
'candidate' => \front\factory\GlobelusUser::user_details( \S::get( 'user_id' ) ),
'next_profile' => $next_profile,
'prev_profile' => $prev_profile
] );
}
public static function activate_access()
{
global $lang, $mdb, $globelus_settings;
if ( !\front\factory\Globelus::permissions_check( $g_user = \S::get_session( 'g_user' ), __CLASS__ . "\\" . __FUNCTION__ ) )
{
header( 'Location: /logowanie' );
exit;
}
$points = \front\factory\GlobelusFirms::get_firm_points( $g_user['id'] );
if ( $points < $globelus_settings['pkt-dostep-baza-kandydatow'] )
{
//\S::set_alert_prompt( 'Nie posiadasz wystarczającej ilości punktów aby wykupić dostęp do bazy kandydatów.' );
header( 'Location: /baza-cv' );
exit;
}
$mdb -> update( 'globelus_users', [ 'points[-]' => $globelus_settings['pkt-dostep-baza-kandydatow'], 'cv_access' => 1, 'cv_access_date' => date( 'Y-m-d', strtotime( '+30 days', time() ) ) ], [ 'id' => $g_user['id'] ] );
$mdb -> insert( 'globelus_points_history', [
'user_id' => $g_user['id'],
'points' => $globelus_settings['pkt-dostep-baza-kandydatow'],
'event_type' => 5
] );
$categories = \S::get( 'categories' );
$mdb -> delete( 'globelus_firms_categories', [ 'user_id' => $g_user['id'] ] );
if ( is_array( $categories ) and !empty ( $categories ) ) foreach ( $categories as $category )
{
if ( ++$i <= 3 )
$mdb -> insert( 'globelus_firms_categories', [
'user_id' => $g_user['id'],
'category_id' => $category
] );
}
$g_user = \front\factory\GlobelusUser::user_details( $g_user['id'] );
\S::set_session( 'g_user', $g_user );
//\S::set_alert_prompt( 'Dostęp do bazy kandydatów został aktywowany.' );
header( 'Location: /baza-cv' );
exit;
}
public static function cv_list()
{
global $lang, $globelus_settings;
if ( !\front\factory\Globelus::permissions_check( $g_user = \S::get_session( 'g_user' ), __CLASS__ . "\\" . __FUNCTION__ ) )
{
header( 'Location: /logowanie' );
exit;
}
if ( \S::get( 'filtr' ) )
{
\S::set_session( 'cv-filtr-keyword', \S::get( 'k' ) );
\S::set_session( 'cv-filtr-countries', \S::get( 'c1' ) );
\S::set_session( 'cv-filtr-availability', \S::get( 'a' ) );
\S::set_session( 'cv-filtr-categories', \S::get( 'c2' ) );
\S::set_session( 'cv-filtr-voivodeships', \S::get( 'v' ) );
\S::set_session( 'cv-id_position', \S::get( 'id_position' ) );
}
$cv_list = \front\factory\GlobelusCv::cv_list(
(int)\S::get( 'cp' ),
\front\factory\GlobelusCv::cv_list_limit,
$g_user['categories'],
\S::get_session( 'cv-filtr-keyword' ),
\S::get_session( 'cv-filtr-countries' ),
\S::get_session( 'cv-filtr-availability' ),
\S::get_session( 'cv-filtr-categories' ),
\S::get_session( 'cv-filtr-voivodeships' ),
\S::get_session( 'cv-id_position' )
);
$cv_count = \front\factory\GlobelusCv::cv_count(
$g_user['categories'],
\S::get_session( 'cv-filtr-keyword' ),
\S::get_session( 'cv-filtr-countries' ),
\S::get_session( 'cv-filtr-availability' ),
\S::get_session( 'cv-filtr-categories' ),
\S::get_session( 'cv-filtr-voivodeships' ),
\S::get_session( 'cv-id_position' )
);
return \Tpl::view( 'globelus/cv/cv-list', [
'cv_list' => $cv_list,
'cv_count' => $cv_count,
'current_page' => \S::get( 'cp' ),
'keyword' => \S::get_session( 'cv-filtr-keyword' ),
'countries' => \front\factory\Globelus::countries(),
'countries_selected' => \S::get_session( 'cv-filtr-countries' ),
'categories' => \front\factory\GlobelusAdverts::categories( $g_user['categories'] ),
'categories_selected' => \S::get_session( 'cv-filtr-categories' ),
'availability_selected' => \S::get_session( 'cv-filtr-availability' ),
'g_user' => $g_user,
'gsettings' => $globelus_settings,
'voivodeships_selected' => \S::get_session( 'cv-filtr-voivodeships' ),
'voivodeships' => \front\factory\Globelus::get_voivodeships_list(),
'positions' => \front\factory\Globelus::get_positions_list(),
'position_selected' => \S::get_session( 'cv-id_position' )
] );
}
}