JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
let cms do header/title on /contact
[wfpl-cms.git] / admin_images.php
index 90a99c0..05ff2ce 100644 (file)
@@ -1,21 +1,6 @@
 <?php
 
-# This form requires wfpl. See: http://jasonwoof.org/wfpl
-
-# This form was initially auto-generated. If you would like to alter the
-# parameters and generate a new one try this URL:
-#
-# http://jasonwoof.com/metaform/?file_name=admin_images&table_name=cms_images&singular=image&plural=images&opt_email=No&opt_db=Yes&opt_listing=Yes&opt_display=Yes&opt_pass=Yes&fields=image+thumb%0D%0Aname+textbox%0D%0Acaption+textbox%0D%0Asizes+textarea&edit=yes
-
-
-# SETUP
-
-# To save results to a database, you'll need to create the cms_images table
-# (the file admin_images.sql should help with this), and create the file
-# 'code/db_connect.php' which calls db_connect() see:
-# code/wfpl/examples/db_connect.php
-#
-# if you rename any of the database fields, you'll need to update this:
+# This form requires wfpl. See: http://sametwice.com/wfpl
 
 define('ADMIN_IMAGES_DB_FIELDS', 'image,name,caption,sizes');
 
@@ -30,9 +15,8 @@ $GLOBALS['image_thumb_max_height'] = '70';
 $GLOBALS['image_file_name'] = uniqid() . getmypid() . '.jpg'; # comment this out to use uploader's filename
 
 
-require_once('code/wfpl/format.php');
-require_once('code/wfpl/email.php');
-require_once('code/wfpl/upload.php');
+require_once(DOCROOT . 'inc/wfpl/format.php');
+require_once(DOCROOT . 'inc/wfpl/upload.php');
 
 # example: 200x300
 function format_width_height($str) {
@@ -71,10 +55,7 @@ function admin_images_get_fields() {
 
 
 function admin_images_main() {
-       if(!logged_in_as_admin()) {
-               $_REQUEST['url'] = this_url();
-               return 'admin_login';
-       }
+       session_auth_must('admin_images');
 
        $id = _REQUEST_cut('edit_id');
        if($id) {
@@ -162,8 +143,37 @@ function admin_images_main_display($id) {
 }
 
 function admin_images_main_delete($id) {
-       db_delete('cms_images', 'where id=%i', $id);
-       message('Image deleted.');
+       $data = db_get_assoc('cms_images', 'image,sizes', 'where id=%i', $id);
+       if ($data) {
+               $filenames = array();
+               $space = strpos($data['image'], ' ');
+               $dot = strpos($data['image'], '.');
+               if ($space !== false && $dot !== false && $dot < $space) {
+                       $base = substr($data['image'], 0, $dot);
+                       $ext = substr($data['image'], $dot, $space - $dot);
+                       $filenames[] = "$base$ext";
+                       $filenames[] = "{$base}_thumb$ext";
+                       $sizes = explode("\n", $data['sizes']);
+                       foreach ($sizes as $max_hw) {
+                               $max_hw = format_width_height($max_hw);
+                               if($max_hw == '') {
+                                       continue;
+                               }
+                               list($max_width, $max_height) = explode('x', $max_hw);
+                               $filenames[] = "$base-{$max_width}x$max_height$ext"; # old naming scheme
+                               $filenames[] = "$base-{$max_width}-$max_height$ext"; # new namich scheme
+                       }
+               }
+               foreach ($filenames as $filename) {
+                       if (file_exists($filename)) {
+                               unlink($filename);
+                       }
+               }
+               db_delete('cms_images', 'where id=%i', $id);
+               message('Image deleted.');
+       } else {
+               message("Couldn't find image to delete. Maybe it's already been deleted?");
+       }
        return './admin_images';
 }
 
@@ -207,12 +217,12 @@ function admin_images_main_form($id = false) {
                        $saved_id = $id;
                } else {
                        db_insert_assoc('cms_images', $data);
-                       message('Image saved.');
+                       message('Image saved. Next time you open a page editor, this image will be availble in the "Insert Image" dialog.');
                        $saved_id = db_auto_id();
                }
 
                # return user to display page where they can see instructions, etc
-               return "./admin_images?id=$saved_id";
+               return "./admin_images";
 
        } elseif($id) {
                # we've recieved an edit id, but no data. So we grab the values to be edited from the database