Files
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

148 lines
5.9 KiB
PHP

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class UploadHelper {
function deleteCardimageFile($data, $controller,$delete_table='',$delete_name='') {
global $savvyext;
$id = $data["id"];
$q = "SELECT a.catid,a.uniqueid,a.name,a.format,b.name as catname FROM card_images a, card_image_category b WHERE a.id='${id}' AND b.id=a.catid";
$r = $controller->db->query($q);
$f = $r->row_array();
if ($f==NULL || !is_array($f) || !isset($f["catname"])) {
$data["message"] = 'Failed to load image data!';
return $data;
}
$bucket_name = $f["catname"];
$uniqueId = $f["uniqueid"];
$controller->load->library('googlestorage');
$controller->googlestorage->Init(
$savvyext->cfgReadChar('google.storage_project_id'),
$savvyext->cfgReadChar('google.storage_auth_file')
);
$storage = $controller->googlestorage;
// Get bucket
$buckets = $storage->ListBuckets();
if (array_key_exists($bucket_name, $buckets)) {
$bucket = $buckets[$bucket_name];
}
if ($bucket==NULL || !is_object($bucket)) {
$data['message'] = 'Cannot get storage bucket!';
return $data;
}
$objectName = $uniqueId.".".$f['format'];
ob_start();
$storage->DeleteObject($bucket_name, $objectName);
$data["message"] = ob_get_clean();
if (preg_match('/^Deleted gs:\/\/(.*)\/(.*)\.(.*)$/', $data["message"], $arr)==1 &&
count($arr)>3 && $arr[1]==$bucket_name && $arr[2]==$uniqueId) {
if ($delete_table!='' && $delete_name!='') {
$q = "UPDATE ${delete_table} SET ${delete_name}=NULL WHERE ${delete_name}='${id}'";
$controller->db->query($q);
}
$q = "DELETE FROM card_images WHERE id='${id}'";
$controller->db->query($q);
$data["deleted"] = $id;
$data["message"] = "Image deleted!";
} else {
$data["deleted"] = 0;
}
return $data;
}
public function cardimagesPost($data,$controller,$uniqueId="") {
global $savvyext;
$bucket_name = '';
$catid = (int)$controller->input->post('catid');
if ($catid<1) { $data['message'] = 'Please select category'; return $data; }
$q = "SELECT name FROM card_image_category WHERE id='${catid}'";
$r = $controller->db->query($q);
foreach ($r->result() as $row) {
$bucket_name = $row->name;
break;
}
if ($bucket_name=='') {
$data['message'] = 'Invalid category';
return $data;
}
// Process file
$imgData = self::processFile('cardimg', array('jpg'=>1,'jpeg'=>1,'png'=>1,'gif'=>1));
if ($imgData==NULL || !is_array($imgData)) {
$data['message'] = 'Failed to process uploaded image! ('.$imgData.')';
return $data;
}
$controller->load->library('googlestorage');
$controller->googlestorage->Init(
$savvyext->cfgReadChar('google.storage_project_id'),
$savvyext->cfgReadChar('google.storage_auth_file')
);
$storage = $controller->googlestorage;
// Get bucket
$buckets = $storage->ListBuckets();
if (array_key_exists($bucket_name, $buckets)) {
$bucket = $buckets[$bucket_name];
} else {
// Create bucket
$bucket = $storage->CreateBucket($bucket_name);
}
if ($bucket==NULL || !is_object($bucket)) {
$data['message'] = 'Cannot get or create bucket!';
return $data;
}
if ($uniqueId=="") {
$uniqueId = $storage->UniqueId();
}
$data['format'] = $imgData['format'];
$objectName = $uniqueId.".".$imgData['format'];
$source = $imgData['tmp_name'];
$object = $storage->UploadObject($bucket_name, $objectName, $source);
if ($object==NULL || !is_object($object)) {
$data['message'] = 'Failed to upload image!';
} else {
$data['message'] = 'Image uploaded!';
// Save image data
$q = "INSERT INTO card_images (catid, uniqueid, name, file_size, format, dimensions) VALUES(";
$q.= "'${catid}','${uniqueId}','".$imgData['name']."','".$imgData['file_size']."','".$imgData['format']."','".$imgData['dimensions']."') RETURNING id";
$r = $controller->db->query($q);
$f = $r->row_array();
if ($f!=NULL && is_array($f) && $f["id"]>0) {
$data["card_image_id"] = $f["id"];
}
}
return $data;
}
private function processFile($var, $formats) {
if (!isset($_FILES[$var])) return 'The file was not uploaded!';
if (is_array($_FILES[$var]['error'])) {
foreach ($_FILES[$var]['error'] as $key => $error) {
if ($error != UPLOAD_ERR_OK) {
return $error;
}
}
} else if (isset($_FILES[$var]['error']) && $_FILES[$var]['error'] != UPLOAD_ERR_OK) {
return $_FILES[$var]['error'];
}
$error = $_FILES[$var]['error'];
$name = trim($_FILES[$var]['name']);
$file_size = $_FILES[$var]['size'];
$tmp_name = $_FILES[$var]['tmp_name'];
$format = strtolower(pathinfo($_FILES[$var]['name'], PATHINFO_EXTENSION));
if (!isset($formats[$format]) || $formats[$format]!=1) {
return 'Invalid file format: '.$format;
}
list($width, $height, $type, $attr) = getimagesize($tmp_name);
$dimensions = $width . 'x' . $height;
$result = array(
'tmp_name' => $tmp_name,
'name' => $name,
'file_size' => $file_size,
'format' => $format,
'dimensions' => $dimensions
);
return $result;
//return 'Not implemented!';
}
}