data['$admin_links']['$edit_page_id'] = $id; } function admin_pages_main_delete($id) { db_delete('cms_pages', 'where id=%i', $id); message('Page deleted.'); return './admin_pages'; } # get all images from admin_images (for cms) function admin_pages_get_images() { $out = []; $rows = db_get_assocs('cms_images', 'image,name,caption', "order by coalesce(nullif(name, ''), caption), created_at"); if ($rows) { $id = -1; foreach($rows as &$row) { $id += 1; $parts = explode(' ', $row['image'] . ' ', 7); $out[] = [ 'id' => '' . $id, 'src' => $parts[0], 'aspect' => ''.(round(100000 * ((int)$parts[2]) / ((int)$parts[1]) / 1000)).'%', 'name' => $row['name'], 'caption' => $row['caption'] ]; } unset($row); } return $out; } function admin_pages_main_listing() { $data = array(); $desc = ''; $sort = _REQUEST_cut('sort'); if ($sort && substr($sort, 0, 1) === '-') { $sort = substr($sort, 1); $desc = ' DESC '; } else { $data["sorting-by-$sort"] = '-'; } $legal_sorts = explode(',', ADMIN_PAGES_DB_FIELDS); if (!$sort || !in_array($sort, $legal_sorts)) { $sort = 'filename'; } $data['rows'] = db_get_assocs('cms_pages', 'id,coalesce(nullif(nav_title,\'\'), title) as title,filename', "order by $sort $desc limit 1000"); tem_set('listing', $data); } function admin_pages_main_form($id = false) { if($id) { tem_set('id', $id); } tem_set('$basename', 'admin_pages'); pulldown('layout', [ ['0', "Full (no sidebar)"], ['1', "With Plain Sidebar"], ['2', "With Bordered Sidebar"] ]); $navbar_options = array(array('ignored', 'Not at all'), array('0', 'First')); $rows = db_get_rows('cms_pages', 'id,coalesce(nullif(nav_title,\'\'), title) as title,navbar', 'where navbar != 0 order by navbar'); if($rows) for($i = 0; $i < count($rows); ++$i) { list($other_id, $other_title, $other_ord) = $rows[$i]; if($other_id != $id) { # don't display ourselves $navbar_options[] = array($i + 1, "After \"$other_title\""); } } pulldown('navbar', $navbar_options, PULLDOWN_2D); if(isset($_POST['title'])) { $data = admin_pages_get_fields(); # We'll save anything (no required fields) $data['navbar'] = db_reposition('cms_pages', $id, $data['navbar'], 'navbar', 'page'); if($data['navbar'] && $data['filename'] == '') { message('This page was removed from the navigation column because it does not have a filename. (Pages without filenames are visible only to admins.)'); $data['navbar'] = 0; } if($id) { db_update_assoc('cms_pages', $data, 'where id=%i', $id); $id = $id; message('Page updated.'); } else { db_insert_assoc('cms_pages', $data); $id = db_auto_id(); message('Page saved.'); } if($data['filename']) { return "./$data[filename]"; } else { return "./admin_pages?id=$id"; } } elseif($id) { # we've recieved an edit id, but no data. So we grab the values to be edited from the database $data = db_get_assoc('cms_pages', ADMIN_PAGES_DB_FIELDS, 'where id=%i', $id); if($data['navbar']) { $data['navbar'] = db_count('cms_pages', 'where navbar!=0 && navbar<%i', $data['navbar']); } else { $data['navbar'] = 'ignored'; } } else { # form not submitted, set default values: $data = array('filename' => format_cms_filename($_REQUEST['new_filename'])); } if (!isset($data['layout']) || $data['layout'] === '' || $data['layout'] === '0') { $data['sidebar_editor_display'] = 'none'; } else { $data['sidebar_editor_display'] = 'block'; } tem_set('wfpl_images_json', json_encode(admin_pages_get_images())); tem_set('wfpl_image_width_full', WFPL_IMAGE_WIDTH_FULL); tem_set('wfpl_image_width_small', WFPL_IMAGE_WIDTH_SMALL); tem_set('wfpl_image_width_thumb', WFPL_IMAGE_WIDTH_THUMB); tem_set('form', $data); tem_set('$head'); # wysiwyg init goes in }