📄 cms.class.inc
字号:
<?php/*Copyright Intermesh 2003Author: Merijn Schering <mschering@intermesh.nl>Version: 1.0 Release date: 08 July 2003This program is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by theFree Software Foundation; either version 2 of the License, or (at youroption) any later version.*/define('NORMAL_DISPLAY', 0);define('MULTIPAGE_DISPLAY', 1);class cms extends db{ function cms() { $this->db(); } function get_settings($user_id) { $this->query("SELECT * FROM cms_settings WHERE user_id='$user_id'"); if ($this->next_record()) { return $this->Record; }else { $this->query("INSERT INTO cms_settings ". "(user_id, sort_field, sort_order) VALUES ". "('$user_id', 'cms_files.priority', 'ASC')"); return $this->get_settings($user_id); } } function set_sorting($user_id, $sort_field, $sort_order) { $sql = "UPDATE cms_settings SET sort_field='$sort_field' , ". "sort_order='$sort_order' WHERE user_id='$user_id'"; return $this->query($sql); } function resolve_url($path, $root_folder_id) { $path = explode('/', $path); $last_folder_id = $root_folder_id; $count = count($path); for($i=0;$i<$count;$i++) { if ($path[$i] != '') { if(!$new_folder_id = $this->folder_exists($last_folder_id, $path[$i])) { $file_id = $this->file_exists($last_folder_id, $path[$i]); if(!$file_id = $this->file_exists($last_folder_id, $path[$i])) { echo $i.': '.$path[$i].' last folder id: '.$last_folder_id.'<br />'; return false; } }else { $last_folder_id = $new_folder_id; } } } $path['folder_id'] = $last_folder_id; if (isset($file_id)) { $path['file_id'] = $file_id; } return $path; } function move_file($file_id, $new_folder_id) { //if the name exists add (1) behind it. if($file = $this->get_file($file_id)) { $name = $file['name']; $x=0; while ($this->file_exists($new_folder_id, $name)) { $x++; $name = strip_extension($file['name']).' ('.$x.').'.get_extension($file['name']); } $priority = $this->get_next_priority($new_folder_id); return $this->query("UPDATE cms_files SET folder_id='$new_folder_id', name='$name', priority='$priority' WHERE id='$file_id'"); } return false; } function move_folder($folder_id, $new_parent_id) { if ($folder = $this->get_folder($folder_id)) { if ($folder['parent_id'] != $new_parent_id) { //don't move folders into thier own path if (!$this->is_in_path($folder_id, $new_parent_id)) { //if the name exists add (1) behind it. $name = $folder['name']; $x=0; while ($this->folder_exists($new_parent_id, $name)) { $x++; $name = $folder['name'].' ('.$x.')'; } $priority = $this->get_next_priority($new_parent_id); return $this->query("UPDATE cms_folders SET parent_id='$new_parent_id', name='$name', priority='$priority' WHERE id='$folder_id'"); } } } return false; } function copy_file($file_id, $new_folder_id) { //if the name exists add (1) behind it. if($file = $this->get_file($file_id)) { $name = $file['name']; $x=0; while ($this->file_exists($new_folder_id, $name)) { $x++; $name = strip_extension($file['name']).' ('.$x.').'.get_extension($file['name']); } return $this->add_file($new_folder_id, addslashes($name), addslashes($file['content']), addslashes($file['title']), addslashes($file['description']), addslashes($file['keywords'])); } return false; } function copy_folder($folder_id, $new_parent_id) { if ($folder = $this->get_folder($folder_id)) { //don't move folders into thier own path if (!$this->is_in_path($folder_id, $new_parent_id)) { //if the name exists add (1) behind it. $name = $folder['name']; $x=0; while ($this->folder_exists($new_parent_id, $name)) { $x++; $name = $folder['name'].' ('.$x.')'; } if($new_folder_id = $this->add_folder($new_parent_id, $name)) { $cms = new cms(); $this->get_files($folder_id); while($this->next_record()) { if(!$cms->copy_file($this->f('id'), $new_folder_id)) { return false; } } $this->get_folders($folder_id); while($this->next_record()) { if(!$this->copy_folder($this->f('id'),$new_folder_id)) { return false; } } return true; } } } return false; } /* Check if a folder is in the path of another folder. This is used to check if we can move a folder into another. */ function is_in_path($check_folder_id, $target_folder_id) { if($target_folder_id == 0) { return false; }elseif ($target_folder_id == $check_folder_id) { return true; }else { $folder = $this->get_folder($target_folder_id); return $this->is_in_path($check_folder_id, $folder['parent_id']); } } function file_exists($folder_id, $filename) { $this->query("SELECT id FROM cms_files WHERE folder_id='$folder_id' AND name='$filename'"); if ($this->next_record()) { return $this->f('id'); } return false; } //builds the full path to this directory with links function get_path($folder_id) { $path = ''; while($folder = $this->get_folder($folder_id)) { $path = '/'.$folder['name'].$path; $folder_id = $folder['parent_id']; } return $path; } function add_language($site_id, $template_id, $name, $title='', $description='', $keywords='', $sort_order='0', $language_code='en') { if($title == '') $title = $name; //create a root folder for the new site if ($root_folder_id = $this->add_folder(0, $name)) { $language_id = $this->nextid('cms_languages'); if($language_id > 0) { $sql = "INSERT INTO cms_languages (id, site_id, template_id, name, title, description, keywords, root_folder_id, language_code) ". "VALUES ('$language_id', '$site_id', '$template_id', '$name', '$title', '$description', '$keywords', '$root_folder_id', '$language_code')"; if($this->query($sql)) { return $language_id; } } } return false; } function get_languages($site_id) { $sql = "SELECT * FROM cms_languages WHERE site_id='$site_id' ORDER BY sort_order ASC"; $this->query($sql); return $this->num_rows(); } function get_language($language_id) { $sql = "SELECT * FROM cms_languages WHERE id='$language_id'"; $this->query($sql); if($this->next_record()) { return $this->Record; } return false; } function update_language($language_id, $template_id, $name, $title, $description, $keywords, $sort_order, $language_code='en') { $sql = "UPDATE cms_languages SET language_code='$language_code', name='$name', template_id='$template_id', title='$title',description='$description', ". "keywords='$keywords', sort_order='$sort_order' ". "WHERE id='$language_id'"; return $this->query($sql); } function save_language_image($language_id, $image_url) { $sql = "UPDATE cms_languages SET image_url='$image_url'". "WHERE id='$language_id'"; return $this->query($sql); } function delete_language($language_id) { if($language = $this->get_language($language_id)) { $this->delete_folder($language['root_folder_id']); $sql = "DELETE FROM cms_languages WHERE id='$language_id'"; return $this->query($sql); } return false; } //functions for personal sites function add_site($user_id, $domain, $webmaster, $allow_properties, $multilingual, $name, $title, $description, $keywords, $acl_read, $acl_write, $template_id, $language_code) { $domain = $this->prepare_domain($domain); //create the site $site_id = $this->nextid('cms_sites'); if ($site_id > 0) { if($this->query("INSERT INTO cms_sites (id, user_id, domain, webmaster, allow_properties, multilingual, acl_read, acl_write) ". "VALUES ('$site_id', '$user_id', '$domain', '$webmaster', '$allow_properties', '$multilingual', '$acl_read',". " '$acl_write')")) { $this->add_language($site_id, $template_id, $name, $title,$description, $keywords, '0', $language_code); return $site_id; } } return false; } function delete_site($site_id) { $cms = new cms(); if($site = $this->get_site($site_id)) { $this->get_languages($site_id); while($this->next_record()) { $cms->delete_language($this->f('id')); } if($this->query("DELETE FROM cms_sites WHERE id='$site_id'")) { global $GO_SECURITY; $GO_SECURITY->delete_acl($site['acl_read']); $GO_SECURITY->delete_acl($site['acl_write']); return true; } } return false; } function update_site($site_id,$domain, $webmaster, $allow_properties, $multilingual, $acl_read) { $domain = $this->prepare_domain($domain); return $this->query("UPDATE cms_sites SET domain='$domain', webmaster='$webmaster', allow_properties='$allow_properties', multilingual='$multilingual', acl_read='$acl_read' WHERE id='$site_id'"); } function set_publishing($site_id, $publish_style, $publish_path) { return $this->query("UPDATE cms_sites SET publish_style='$publish_style', publish_path='$publish_path' WHERE id='$site_id'"); } function get_site_by_publish_path($path) { $this->query("SELECT * FROM cms_sites WHERE publish_path='$path'"); if ($this->next_record()) { return $this->Record; }else { return false; } } function get_site($site_id) { $this->query("SELECT * FROM cms_sites WHERE id='$site_id'"); if ($this->next_record()) { return $this->Record; } return false; } function prepare_domain($domain) { $domain = preg_replace("/http(s?):\/\//i", '', $domain); if (substr($domain, -1)=='/') { $domain = substr($domain,0, -1); } return $domain; } function get_site_by_domain($domain, $recurse=false) { $domain = $this->prepare_domain($domain); $this->query("SELECT * FROM cms_sites WHERE domain='$domain'"); if ($this->next_record()) { return $this->Record; }elseif($recurse) { while($pos = strpos($domain,'.')) { $domain = substr($domain, $pos+1); return $this->get_site_by_domain($domain, true); } } return false; } function get_sites() { $this->query("SELECT * FROM cms_sites"); return $this->num_rows(); } function get_authorized_sites($user_id) { /*$sql = "SELECT DISTINCT cms_sites.* FROM cms_sites, acl, users_groups WHERE ". "cms_sites.acl_write = acl.acl_id". " AND (( acl.group_id = users_groups.group_id AND users_groups.user_id = ".$user_id." AND acl.user_id = 0 ) OR (". "acl.group_id = 0 AND acl.user_id = ".$user_id." ) ) ORDER BY cms_sites.domain ASC";*/ $sql = "SELECT DISTINCT cms_sites. *". "FROM cms_sites ". " INNER JOIN acl ON ( cms_sites.acl_read = acl.acl_id ". "OR cms_sites.acl_write = acl.acl_id ) ". "LEFT JOIN users_groups ON acl.group_id = users_groups.group_id ". "WHERE acl.user_id=$user_id ". "OR users_groups.user_id=$user_id". " ORDER BY cms_sites.domain ASC"; $this->query($sql); return $this->num_rows(); } function get_subscribed_sites($user_id) { $this->query("SELECT cms_sites.* FROM cms_sites LEFT JOIN cms_subscribed ON (cms_subscribed.site_id=cms_sites.id) WHERE cms_subscribed.user_id='$user_id' ORDER BY cms_sites.domain ASC"); return $this->num_rows(); } function subscribe_site($user_id, $site_id) { return $this->query("INSERT INTO cms_subscribed (user_id, site_id) VALUES ('$user_id', '$site_id')"); } function unsubscribe_site($user_id, $site_id) { return $this->query("DELETE FROM cms_subscribed WHERE user_id='$user_id' AND site_id='$site_id'"); } function is_subscribed($user_id, $site_id) { $this->query("SELECT * FROM cms_subscribed WHERE user_id='$user_id' AND site_id='$site_id'"); return $this->next_record(); } //functions for files and folders of sites function get_files($folder_id, $sort = "priority", $direction = "ASC") { $sql = "SELECT * FROM cms_files WHERE folder_id='$folder_id' ORDER BY $sort $direction"; $this->query($sql); return $this->num_rows(); } function get_hot_items($folder_id) { $sql = "SELECT * FROM cms_files WHERE folder_id='$folder_id' AND hot_item='1' ORDER BY priority ASC"; $this->query($sql); return $this->num_rows(); } function get_visible_folders($folder_id) { $this->query("SELECT * FROM cms_folders WHERE parent_id='$folder_id' AND disabled='0' ORDER BY priority ASC"); return $this->num_rows(); } function get_folders($folder_id, $sort = "priority", $direction = "ASC") { $this->query("SELECT * FROM cms_folders WHERE parent_id='$folder_id' ORDER BY '$sort' $direction"); return $this->num_rows(); } function get_items($folder_id, $only_visible=false)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -