示例#1
0
 /**
  * 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;
     }
 }
示例#2
0
 /**
  * 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;
     }
 }