3 cx_require('lib', 'db.php');
4 cx_require('lib', 'setup.php');
5 cx_require('lib', 'user_data.php');
14 public function __construct($dict) {
15 $this->id = $dict['image_id']; // FIXME, hide when not used?
16 $this->uid = $dict['image_uid'];
17 $this->alt_text = $dict['image_alt_text'];
18 $this->url = $this->uid . '.' . $dict['image_type'];
21 public function get_permalink_path() {
22 $permalink = '/data/images/' . $this->url;
27 function cx_images_add_image($site_id, $alt_text, $image_path, $image_original_filename) {
28 $path_parts = pathinfo($image_original_filename);
30 $uid = hash_file("sha256", $image_path);
32 $target_name = $uid . "." . $path_parts['extension'];
33 $path = cx_user_data_path('images', $target_name);
35 move_uploaded_file($image_path, $path);
37 $creation_time = $update_time = time();
39 $sql = 'INSERT INTO images (
46 VALUES (?, ?, ?, ?, ?, ?);';
47 cx_db_exec($sql, $site_id, $creation_time, $update_time, $uid, $path_parts['extension'], $alt_text);
50 function cx_images_get(int $limit = 0) {
57 ORDER BY image_creation_time DESC';
60 $sql .= ' LIMIT ' . $limit;
65 foreach (cx_db_query($sql) as $image) {
66 $i = new Image($image);
71 function cx_images_find_image($image_id) {
82 foreach (cx_db_query($sql, $image_id, $image_id . "%") as $image) {
83 $i = new Image($image);
90 cx_setup_register(1, function() {
91 cx_db_exec('CREATE TABLE images (
92 image_id INTEGER PRIMARY KEY,
93 image_site_id INTEGER,
94 image_creation_time INTEGER,
95 image_update_time INTEGER,
98 image_alt_text STRING,
100 FOREIGN KEY(image_site_id) REFERENCES sites(site_id)
103 $image_dir = cx_user_data_path('images');
104 if (is_dir($image_dir) == false) {
105 mkdir($image_dir, recursive: true);