⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cms.class.inc

📁 groupoffice
💻 INC
📖 第 1 页 / 共 3 页
字号:
<?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 + -