/** * getlist * get the filelist according to the params * * @param string * @return mixed */ private function getlist($type, $order_sort, $limit, $keyword) { // Defaults if (!preg_match('/jpg|png|gif|all/', $type)) { $type = 'all'; } if (!check_value($order_sort)) { $order_sort = 'date_desc'; } if (!check_value($limit)) { $limit = 50; } // Type cleaning if ($type == 'all') { $type_qry = ''; } else { $types = explode(',', $type); $types_qry = array(); foreach ($types as $type_qry) { if (!in_array($type_qry, array('jpg', 'png', 'gif', 'all'))) { continue; // Continue (and warn)... } $types_qry[] = "'" . $type_qry . "'"; } $sql_types = implode(',', $types_qry); $type_qry = "WHERE image_type IN ({$sql_types})"; } // Order sort $ordersort = explode("_", $order_sort); $order = strtolower($ordersort[0]); $sort = strtolower($ordersort[1]); // Order clean if (!in_array($order, array('date', 'size'))) { $order = "date"; } $order = 'image_' . $order; // Sort clean if (!in_array($sort, array('asc', 'desc'))) { $sort = "desc"; } // Limits clean $limits = explode(',', $limit); $limits_qry = array(); if (count($limits) > 1) { for ($i = 0; $i <= 1; ++$i) { // Allow only two limits $limits_qry[] = intval($limits[$i]); } $sql_limits = implode(',', $limits_qry); } else { $sql_limits = intval($limit); } $base_qry = "SELECT * FROM chv_images LEFT JOIN chv_storages ON chv_images.storage_id = chv_storages.storage_id {$type_qry}"; $prepare = array(); if (check_value($keyword)) { $prepare[':keyword'] = "%{$keyword}%"; $keyword_qry = check_value($type_qry) ? "AND" : "WHERE" . " chv_images.image_name LIKE :keyword"; } $results = $this->dB->query_fetch("SELECT * FROM chv_images LEFT JOIN chv_storages ON chv_images.storage_id = chv_storages.storage_id {$type_qry} {$keyword_qry} ORDER BY {$order} {$sort} LIMIT {$sql_limits}", $prepare); if (is_array($results)) { // Now we got the results: Fix the result array in something actually usable $output = array(); foreach ($results as $result) { foreach ($result as $filevalues) { $file_array = $result; $image_target = get_image_target($file_array); // if the image doesn't exits remove it from the dB if ($this->dB->must_delete_image_record($file_array['image_id'], $image_target)) { unset($output['"' . $file_array['image_id'] . '"']); continue 2; } // Recreate the thumb recreate_thumb($image_target); $filename = $file_array['image_name'] . '.' . $file_array['image_type']; $file_array['image_viewer'] = __CHV_BASE_URL__ . __CHV_VIRTUALFOLDER_IMAGE__ . '/' . encodeID($file_array['image_id']); $file_array['image_size'] = format_bytes($result['image_size'], 0); $file_array['image_url'] = absolute_to_url($image_target['image_path']); $file_array['image_thumb_url'] = absolute_to_url($image_target['image_thumb_path']); $file_array['image_shorturl'] = __CHV_BASE_URL__ . encodeID($file_array['image_id']); $file_array['timestamp'] = strtotime($file_array['image_date']); $file_array['image_date'] = date('Y-m-d', $file_array['timestamp']); } $output['"' . $file_array['image_id'] . '"'] = $file_array; // Defined as "1" instead of 1 to don't rely on browser json sort (Chrome) } return $output; } else { return $this->dB->error; } }
/** * image_info * get the image info from the dB * * @access public * @param string * @return array */ public function image_info($id) { $query = 'SELECT * FROM chv_images LEFT JOIN chv_storages ON chv_images.storage_id = chv_storages.storage_id WHERE '; // Legacy request (file.ext) if (preg_match("/(\\w*\\.)(jpg|png|gif)\$/", $id)) { $target = explode(".", $id); $query .= 'chv_images.storage_id=1 AND chv_images.image_name=? AND chv_images.image_type=?'; $query_array = array($target[0], $target[1]); } else { $query .= 'chv_images.image_id=?'; $query_array = array($id); } $imageDB = $this->query_fetch_single($query, $query_array); if (is_array($imageDB)) { $id = $imageDB['image_id']; $id_public = encodeID($id); $image_target = get_image_target($imageDB); // if the image doesn't exits remove it from the dB if ($this->must_delete_image_record($id, $image_target)) { $this->dead = true; $this->error = "file doesn't exists"; return false; } else { // Recreate the thumb recreate_thumb($image_target); // Fix the dB values just in case... $imageDB['image_width'] = intval($imageDB['image_width']); $imageDB['image_height'] = intval($imageDB['image_height']); $imageDB['image_size'] = intval($imageDB['image_size']); // Populate the array $populate = array('image_filename' => $imageDB['image_name'] . '.' . $imageDB['image_type'], 'image_id_public' => $id_public, 'image_path' => $image_target['image_path'], 'image_url' => absolute_to_url($image_target['image_path']), 'image_attr' => 'width="' . $imageDB['image_width'] . '" height="' . $imageDB['image_height'] . '"', 'image_bytes' => intval($imageDB['image_size']), 'image_size' => format_bytes($imageDB['image_size']), 'image_thumb_url' => absolute_to_url($image_target['image_thumb_path']), 'image_thumb_path' => $image_target['image_thumb_path'], 'image_thumb_width' => chevereto_config('thumb_width'), 'image_thumb_height' => chevereto_config('thumb_height'), 'image_viewer' => __CHV_BASE_URL__ . __CHV_VIRTUALFOLDER_IMAGE__ . '/' . $id_public, 'image_shorturl' => __CHV_BASE_URL__ . $id_public, 'image_delete_url' => __CHV_BASE_URL__ . 'delete/image/' . $id_public . '/' . $imageDB['image_delete_hash'], 'image_delete_confirm_url' => __CHV_BASE_URL__ . 'delete-confirm/image/' . $id_public . '/' . $imageDB['image_delete_hash']); return array_merge($imageDB, $populate); } } else { $this->error = 'invalid id record (' . $id . ')'; return false; } }