addLogo($data_to_db['qrcode'], $options['optionlogo']);
$db = getDbInstance();
$last_id = $db->insert($this->table, $data_to_db);
}
else
$this->failure('You cannot create a new qr code with an existing name on the server!');
if ($last_id){
audit_log('qrcode_created', $this->table, $last_id);
$this->success('Qr code added successfully!');
}
else {
$this->failure('Insert failed: ' . $db->getLastError());
}
}
/**
* Edit qr code
*
*/
public function editQrcode($input_data, $data_to_db) {
$db = getDbInstance();
$old_qrcode = $this->getQrcode($input_data["id"]);
$data_to_db['filename'] = $this->sanitizeFilename($data_to_db['filename']);
$data_to_db['qrcode'] = $data_to_db['filename'].'.'.$old_qrcode["format"];
if(!file_exists(SAVED_QRCODE_DIRECTORY.$data_to_db['filename'].'.'.$old_qrcode["format"]) || $data_to_db['filename'] == $input_data["old_filename"]){
$db->where('id', $input_data["id"]);
$stat = $db->update($this->table, $data_to_db);
try{
rename(SAVED_QRCODE_DIRECTORY.$old_qrcode["qrcode"], SAVED_QRCODE_DIRECTORY.$data_to_db['filename'].'.'.$old_qrcode["format"]);
}
catch(Exception $e){
$this->failure($e->getMessage());
}
}
else
$this->failure('You cannot edit a qr code with an existing name on the server!');
if ($stat){
audit_log('qrcode_updated', $this->table, $input_data['id']);
$this->success('Qr code updated successfully!');
}
else {
$this->failure('Insert failed: ' . $db->getLastError());
}
}
/**
* Delete qr code
*
*/
public function deleteQrcode($id, $async = false) {
$db = getDbInstance();
$qrcode = $this->getQrcode($id);
$db->where('id', $id);
$status = $db->delete($this->table);
if ($status) {
audit_log('qrcode_deleted', $this->table, $id);
}
try{
unlink(SAVED_QRCODE_DIRECTORY.$qrcode["filename"].'.'.$qrcode["format"]);
}
catch(Exception $e){
$this->failure($e->getMessage());
}
if ($status)
if (!$async) {
$this->info('Qr code deleted successfully!');
}
else
if (!$async) {
$this->failure('Unable to delete qr code');
}
}
/**
* Add logo
* IMPORTANT: I do not recommend to use this option because there may be problems with the scanning of the qr code as some readers may not recognize the code
*/
private function addLogo($src, $logo = 'none') {
try
{
if($logo != 'none')
{
$logo = imagecreatefrompng($_SERVER['HTTP_HOST'].'/admin'.$logo);
$QR = imagecreatefrompng(BASE_PATH.$src);
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logo);
$logo_height = imagesy($logo);
// Scale logo to fit in the QR Code
$logo_qr_width = $QR_width/3;
$scale = $logo_width/$logo_qr_width;
$logo_qr_height = $logo_height/$scale;
// You can try also with imagecopymerge() with same arguments
imagecopyresampled($QR, $logo, $QR_width/3, $QR_height/3, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
//$output = Set directory for saving image;
header('Content-Type: image/png');
imagepng($QR /*, $output*/);
imagedestroy($QR);
}
}
catch(Exception $e)
{
$this->failure($e->getMessage());
}
}
/**
* Flash message Failure process
*/
private function failure($message) {
$_SESSION['failure'] = $message;
header('Location: ' . $this->redirect_url);
exit();
}
/**
* Flash message Success process
*/
private function success($message) {
$_SESSION['success'] = $message;
header('Location: ' . $this->redirect_url);
exit();
}
/**
* Flash message Info process
*/
private function info($message) {
$_SESSION['info'] = $message;
header('Location: ' . $this->redirect_url);
exit();
}
public function debug($data) {
echo '' . var_export($data, true) . '
';
exit();
}
}
?>