File "assessmentbyassessor-edit.php"

Full Path: /home/humancap/cl.humancap.com.my/admin/inc/forms/assessmentbyassessor-edit.php
File size: 9.47 KB
MIME-type: text/x-php
Charset: utf-8

<?php
use phpformbuilder\Form;
use phpformbuilder\Validator\Validator;
use phpformbuilder\database\DB;
use common\Utils;
use secure\Secure;

include_once ADMIN_DIR . 'secure/class/secure/Secure.php';

$debug_content = '';

/* =============================================
    validation if posted
============================================= */

if ($_SERVER["REQUEST_METHOD"] == "POST" && Form::testToken('form-edit-assessment-by-assessor') === true) {
    $validator = Form::validate('form-edit-assessment-by-assessor', FORMVALIDATION_PHP_LANG);
    $validator->required()->validate('for_candidate_name');
    $validator->maxLength(255)->validate('for_candidate_name');
    $validator->required()->validate('assessment_id');
    $validator->integer()->validate('assessment_id');
    $validator->min(-99999999999)->validate('assessment_id');
    $validator->max(99999999999)->validate('assessment_id');
    $validator->required()->validate('name');
    $validator->maxLength(255)->validate('name');
    $validator->required()->validate('email');
    $validator->maxLength(100)->validate('email');
    $validator->required()->validate('self_or_ext');
    $validator->float()->validate('self_or_ext');
    $validator->integer()->validate('self_or_ext');
    $validator->min(-99)->validate('self_or_ext');
    $validator->max(99)->validate('self_or_ext');

    // check for errors
    if ($validator->hasErrors()) {
        $_SESSION['errors']['form-edit-assessment-by-assessor'] = $validator->getAllErrors();
    } else {
        require_once CLASS_DIR . 'phpformbuilder/database/db-connect.php';
        require_once CLASS_DIR . 'phpformbuilder/database/DB.php';
        $db = new DB(DEBUG);
        $db->setDebugMode('register');
        $values = array();
        $values['for_candidate_name'] = $_POST['for_candidate_name'];
        if (is_array($_POST['assessment_id'])) {
            $json_values = json_encode($_POST['assessment_id'], JSON_UNESCAPED_UNICODE);
            $values['assessment_id'] = $json_values;
        } else {
            $values['assessment_id'] = intval($_POST['assessment_id']);
            if ($values['assessment_id'] < 1) {
                $values['assessment_id'] = null;
            }
        }
        $values['name'] = $_POST['name'];
        $values['email'] = $_POST['email'];
        if (isset($_POST['self_or_ext'])) {
            $values['self_or_ext'] = intval($_POST['self_or_ext']);
        }
        $where = $_SESSION['assessment_by_assessor_editable_primary_keys'];

        // begin transaction
        $db->transactionBegin();

        try {
            // update assessment_by_assessor
            if (DEMO !== true && !$db->update('assessment_by_assessor', $values, $where, DEBUG_DB_QUERIES)) {
                $error = $db->error();
                throw new \Exception($error);
            } else {
                // ALL OK
                if (!DEBUG_DB_QUERIES) {
                    $db->transactionCommit();

                    $_SESSION['msg'] = Utils::alert(UPDATE_SUCCESS_MESSAGE, 'alert-success has-icon');

                    // reset form values
                    Form::clear('form-edit-assessment-by-assessor');

                    // redirect to list page
                    if (isset($_SESSION['active_list_url'])) {
                        header('Location:' . $_SESSION['active_list_url']);
                    } else {
                        header('Location:' . ADMIN_URL . 'assessmentbyassessor');
                    }

                    // if we don't exit here, $_SESSION['msg'] will be unset
                    exit();
                } else {
                    $debug_content .= $db->getDebugContent();
                    $db->transactionRollback();

                    $_SESSION['msg'] = Utils::alert(UPDATE_SUCCESS_MESSAGE . '<br>(' . DEBUG_DB_QUERIES_ENABLED . ')', 'alert-success has-icon');
                }
            }
        } catch (\Exception $e) {
            $db->transactionRollback();
            $msg_content = DB_ERROR;
            if (DEBUG) {
                $msg_content .= '<br>' . $e->getMessage() . '<br>' . $db->getLastSql();
            }
            $_SESSION['msg'] = Utils::alert($msg_content, 'alert-danger has-icon');
        }
    } // END else
} // END if POST

// register editable primary keys, which are NOT posted and will be the query update filter
// $params come from data-forms.php
// replace 'fieldname' with 'table.fieldname' to avoid ambigous query
$where_params = array_combine(
    array_map(function ($k) {
        return 'assessment_by_assessor.' . $k;
    }, array_keys($params)),
    $params
);
$_SESSION['assessment_by_assessor_editable_primary_keys'] = $where_params;

if (!isset($_SESSION['errors']['form-edit-assessment-by-assessor']) || empty($_SESSION['errors']['form-edit-assessment-by-assessor'])) { // If no error registered
    $from = 'assessment_by_assessor  LEFT JOIN assessment ON assessment_by_assessor.assessment_id=assessment.id';
    $columns = 'assessment_by_assessor.id, assessment_by_assessor.for_candidate_name, assessment_by_assessor.assessment_id, assessment_by_assessor.name, assessment_by_assessor.email, assessment_by_assessor.self_or_ext';

    $where = $_SESSION['assessment_by_assessor_editable_primary_keys'];

    // if restricted rights
    if (ADMIN_LOCKED === true && Secure::canUpdateRestricted('assessment_by_assessor')) {
        $where = array_merge($where, Secure::getRestrictionQuery('assessment_by_assessor'));
    }

    $db = new DB(DEBUG);
    $db->setDebugMode('register');

    $db->select($from, $columns, $where, array(), DEBUG_DB_QUERIES);
    if ($db->rowCount() < 1) {
        if (DEBUG) {
            exit($db->getLastSql() . ' : No Record Found');
        } else {
            exit('No Record Found');
        }
    }
    if (DEBUG_DB_QUERIES) {
        $debug_content .= $db->getDebugContent();
    }
    $row = $db->fetch();
    $_SESSION['form-edit-assessment-by-assessor']['id'] = $row->id;
    $_SESSION['form-edit-assessment-by-assessor']['for_candidate_name'] = $row->for_candidate_name;
    $_SESSION['form-edit-assessment-by-assessor']['assessment_id'] = $row->assessment_id;
    $_SESSION['form-edit-assessment-by-assessor']['name'] = $row->name;
    $_SESSION['form-edit-assessment-by-assessor']['email'] = $row->email;
    $_SESSION['form-edit-assessment-by-assessor']['self_or_ext'] = $row->self_or_ext;
}
// $params come from data-forms.php
$pk_url_params = http_build_query($params, '', '/');

$form = new Form('form-edit-assessment-by-assessor', 'horizontal', 'novalidate');
$form->setAction(ADMIN_URL . 'assessmentbyassessor/edit/' . $pk_url_params);
$form->startFieldset();

// id --

$form->setCols(2, 10);
$form->addInput('hidden', 'id', '');

// for_candidate_name --

$form->setCols(2, 10);
$form->addInput('text', 'for_candidate_name', '', 'For Candidate Name', 'required');

// assessment_id --
$from = 'assessment';
$columns = 'assessment.id, assessment.name';
$where = array();
$extras = array(
    'select_distinct' => true,
    'order_by' => 'assessment.name'
);

// restrict if relationship table is the users table OR if the relationship table is used in the restriction query
if (ADMIN_LOCKED === true && Secure::canCreateRestricted('assessment_by_assessor')) {
    $secure_restriction_query = Secure::getRestrictionQuery('assessment_by_assessor');
    if (!empty($secure_restriction_query)) {
        if ('assessment' == USERS_TABLE) {
            $restriction_query = 'assessment.id = ' . $_SESSION['secure_user_ID'];
            $where[] = $restriction_query;
        } elseif (preg_match('/assessment\./', $secure_restriction_query[0])) {
            $restriction_query = 'assessment_by_assessor' . $secure_restriction_query[0];
            $where[] = $restriction_query;
        }
    }
}

// default value if no record exist
$value = '';
$display_value = '';

$db = new DB(DEBUG);
$db->setDebugMode('register');

$db->select($from, $columns, $where, $extras, DEBUG_DB_QUERIES);

if (DEBUG_DB_QUERIES) {
    $debug_content .= $db->getDebugContent();
}

$db_count = $db->rowCount();
if (!empty($db_count)) {
    while ($row = $db->fetch()) {
        $value = $row->id;
        $display_value = $row->name;
        if ($db_count > 1) {
            $form->addOption('assessment_id', $value, $display_value);
        }
    }
}

if ($db_count > 1) {
    $form->addSelect('assessment_id', 'Assessment Id', 'required, data-slimselect=true');
} else {
    // for display purpose
    $form->addInput('text', 'assessment_id-display', $display_value, 'Assessment Id', 'readonly');

    // for send purpose
    $form->addInput('hidden', 'assessment_id', $value);
}

// name --
$form->addInput('text', 'name', '', 'Name', 'required');

// email --
$form->addInput('text', 'email', '', 'Email', 'required');

// self_or_ext --
$form->addHelper('Enter 1 for Self and 2 for External', 'self_or_ext', 'after');
$form->addInput('number', 'self_or_ext', '', 'Self Or Ext', 'required');
$form->addBtn('button', 'cancel', 0, '<i class="' . ICON_BACK . ' prepend"></i>' . CANCEL, 'class=btn btn-warning, data-ladda-button=true, data-style=zoom-in, onclick=history.go(-1)', 'btn-group');
$form->addBtn('submit', 'submit-btn', 1, SUBMIT . '<i class="' . ICON_CHECKMARK . ' append"></i>', 'class=btn btn-success, data-ladda-button=true, data-style=zoom-in', 'btn-group');
$form->setCols(0, 12);
$form->centerContent();
$form->printBtnGroup('btn-group');
$form->endFieldset();
$form->addPlugin('pretty-checkbox', '#form-edit-assessment-by-assessor');
$form->addPlugin('formvalidation', '#form-edit-assessment-by-assessor', 'default', array('language' => FORMVALIDATION_JAVASCRIPT_LANG));