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!'; } }