148 lines
5.9 KiB
PHP
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!';
|
|
}
|
|
}
|