Phpcms2008 是一款基于 PHP+Mysql 架构的网站内容管理系统

源代码在线查看: import.class.php

软件大小: 4115 K
上传用户: gjinli88
关键词: Phpcms Mysql 2008 PHP
下载地址: 免注册下载 普通下载 VIP

相关代码

								if(!defined('CACHE_IMPORT_PATH'))				{					define('CACHE_IMPORT_PATH', PHPCMS_ROOT.'data/cache_import/');				}								class import				{					var $msg;					var $db;					var $sameserver = 0;					var $sqldb;					var $remotedb;				    var $mail_datadir = '';				    var $counter = '';					function __construct()					{						global $db;						$this->db = &$db;				        $this->mail_datadir = PHPCMS_ROOT.'data/mail/data/';				        $this->counter = 0;					}									function import()					{						$this->__construct();					}									function connect_db($dbtype, $dbhost, $dbuser, $dbpw, $dbname = '', $charset = '')					{						global $db;						$this->remotedb = $dbname;						if('mysql' == $dbtype && $dbhost == DB_HOST && $dbuser == DB_USER && $dbpw == DB_PW && DB_CHARSET == $charset)						{							$this->sameserver = 1;							if (!empty($dbname))							{								$this->sqldb = &$this->db;								if ($dbname != DB_NAME)								{									$this->sqldb->select_db($dbname);								}								return $this->sqldb;							}							return $this->db;						}						else						{							$dbclass = 'db_'.$dbtype;										if(!class_exists($dbclass))							{								require $dbclass.'.class.php';							}								$this->sqldb = new $dbclass;							if(!$this->sqldb->connect($dbhost, $dbuser, $dbpw, $this->remotedb, 0, $charset))							{								return false;							}							if('mysql' == $dbtype && $dbhost == DB_HOST && $dbuser == DB_USER && $dbpw == DB_PW)							{								$this->sameserver = 1;							}						}						return $this->sqldb;					}									function filter_fields($info, $offset, $keyid)					{										$result['table'] = trim($info['table']);						$firstdot = strpos($result['table'], ',');						if($firstdot)						{							$startpos = intval(strpos($result['table'], ' '));							$firsttable = trim(substr($result['table'], $startpos, $firstdot-$startpos));						}										$result['maxid'] = intval($info['maxid']);						$condition = str_replace('$maxid', $result['maxid'], $info['condition']);				        if($condition) $result['condition'] = " WHERE $condition";						$number = $info['number'];						if($number) $result['limit'] = " LIMIT $offset,$number";										if($this->sameserver) $this->sqldb->select_db($this->remotedb);						$r = $this->sqldb->get_one("SELECT count(*) AS total FROM $result[table] $result[condition]");						$result['total'] = $r['total'];										$result['orderby'] = $firsttable ? $firsttable.'.'.$keyid : $keyid;						$result['selectfield'] = $info['selectfield'] ? $info['selectfield'] : '*';						return $result;					}									function add_member($import_info, $offset)					{						global $member_api;						$data = array();						$keyid = $import_info['userid']['field'];						if($import_info['defaultgroupid']) $import_info['defaultgroupid'] = intval($import_info['defaultgroupid']);						$data['groupid'] = $import_info['defaultgroupid'];						if(!$keyid)						{							$this->msg = 'the_keyid_not_exists';							return false;						}						$number = $import_info['number'];						$data['modelid'] = $import_info['modelid'];						$this->connect_db($import_info['dbtype'], $import_info['dbhost'], $import_info['dbuser'], $import_info['dbpw'], $import_info['dbname'], $import_info['charset']);										$fields = cache_read($import_info['modelid'].'_fields.inc.php', CACHE_MODEL_PATH);						$memberfields = include 'admin/import_fields.inc.php';						$fields = array_merge($memberfields, $fields);						foreach($fields as $field=>$val_field)						{							if($field == 'userid') continue;							$oldfield = trim($import_info[$field]['field']);							$func = trim($import_info[$field]['func']);							$value = trim($import_info[$field]['value']);											if($value)							{								$data[$field] = $value;							}							else							{								if($oldfield && $func)								{									$oldfields[$oldfield] = $field;									$oldfuncs[$oldfield] = $func;								}								elseif($oldfield )								{									$oldfields[$oldfield] = $field;								}							}							}												$result = $this->filter_fields($import_info, $offset, $keyid);						@extract($result);												$ddata = $data;										$query= $this->sqldb->query("SELECT $selectfield FROM $table $condition ORDER BY $orderby $limit");						$importnum = $this->sqldb->num_rows($query);						while ($r = $this->sqldb->fetch_array($query))						{							$data = $ddata;							$r = new_addslashes($r);							@extract($r);							foreach ($r as $k=>$v)							{								if(isset($oldfields[$k]) && $v)								{									if($oldfuncs[$k])									{										$data[$oldfields[$k]] = $oldfuncs[$k]($v);										if(!$data[$k]) continue;									}									else									{										if(!$oldvalues[$k])	$data[$oldfields[$k]] = $v;									}								}							}							$maxid = max($maxid, $r[$keyid]);							$s[] = $data;									}												$this->sqldb->free_result($query);						if(!$this->sameserver) $this->sqldb->close();						if($this->sameserver)						{							if($import_info['charset'] != DB_CHARSET)							{								$dbclass = 'db_'.DB_DATABASE;								$this->db = new $dbclass;								$this->db->connect(DB_HOST, DB_USER, DB_PW, DB_NAME, DB_PCONNECT, DB_CHARSET);							}							else							{								$this->db->select_db(DB_NAME);							}						}						foreach ($s as $val)						{							if($import_info['membercheck'])							{								if($member_api->check_email_user($val['username'], $val['email']))	continue;							}							if(DB_CHARSET == 'utf8' && $import_info['dbtype'] == 'access') $val = str_charset(CHARSET, 'gbk', $val);							$userid = $member_api->add($val, 1);							if($val['modelid'])							{								$modelinfo = array();								$member_input = new member_input($val['modelid']);								$member_update = new member_update($val['modelid'], $userid);								$inputinfo = $member_input->get($val, 1);								$modelinfo = $inputinfo['model'];								if(is_array($modelinfo) && !empty($modelinfo))								{														$member_update->update($modelinfo);									$modelinfo['userid'] = $userid;									$member_api->edit_model($val['modelid'], $modelinfo);								}							}						}							$name = $import_info['name'];				        $finished = 0;						if($number && ($importnum < $number))					    {							$finished = 1;								}						$import_info['maxid'] = $maxid;						$import_info['importtime'] = TIME;						$this->setting($import_info, 'member');						return $finished.'-'.$total;					}									function add_content($import_info, $offset)					{						global $content;						$data = array();						$keyid = $import_info['contentid']['field'];						if(!$keyid)						{							$this->msg = 'the_keyid_not_exists';							return false;						}						$import_info['defaultcatid'] = intval($import_info['defaultcatid']);						if(!$import_info['defaultcatid'])						{							return false;						}						$number = $import_info['number'];						$data['catid'] = $import_info['defaultcatid'];						$this->connect_db($import_info['dbtype'], $import_info['dbhost'], $import_info['dbuser'], $import_info['dbpw'], $import_info['dbname'], $import_info['charset']);						$fields = cache_read($import_info['modelid'].'_fields.inc.php', CACHE_MODEL_PATH);						foreach ($fields as $field=>$val_field)						{							if($field == 'contentid') continue;							$oldfield = trim($import_info[$field]['field']);							$func = trim($import_info[$field]['func']);							$value = trim($import_info[$field]['value']);							if($value)							{								$data[$field] = $value;							}							else							{								if($oldfield && $func)								{									$oldfields[$oldfield] = $field;									$oldfuncs[$oldfield] = $func;								}								elseif($oldfield )								{									$oldfields[$oldfield] = $field;								}							}							}						$result = $this->filter_fields($import_info, $offset, $keyid);						@extract($result);						$ddata = $data;						$query = $this->sqldb->query("SELECT $selectfield FROM $table $condition ORDER BY $orderby $limit");						$importnum = $this->sqldb->num_rows($query);						while ($r = $this->sqldb->fetch_array($query))						{							$data = $ddata;							$r = new_addslashes($r);							foreach ($r as $k=>$v)							{								if(isset($oldfields[$k]) && $v)								{									if($oldfuncs[$k])									{										$data[$oldfields[$k]] = $oldfuncs[$k]($v);										if(!$data[$k]) continue;									}									else									{										if(!$oldvalues[$k])	$data[$oldfields[$k]] = $v;									}								}							}							$maxid = max($maxid, $r[$keyid]);							$s[] = $data;						}						$this->sqldb->free_result($query);						if(!$this->sameserver) $this->sqldb->close();						if($this->sameserver)						{							if($import_info['charset'] != DB_CHARSET)							{								$dbclass = 'db_'.DB_DATABASE;								$this->db = new $dbclass;								$this->db->connect(DB_HOST, DB_USER, DB_PW, DB_NAME, DB_PCONNECT, DB_CHARSET);							}							else							{								$this->db->select_db(DB_NAME);							}						}						foreach ($s as $val)						{							if($val['url']) $val['islink'] = 1;							if(DB_CHARSET == 'utf8' && $import_info['dbtype'] == 'access') $val = str_charset(CHARSET, 'gbk', $val);							$contentid = $content->add($val, 0, 1);						}				        $finished = 0;						if($number && ($importnum < $number))					    {							$finished = 1;									}						$import_info['maxid'] = $maxid;						$import_info['importtime'] = TIME;						$this->setting($import_info);						return $finished.'-'.$total;					}										function _db_content($import_info, $offset)				    {						global $attachment;				        $data = array();				        $mails = '';				        $dbinfo = cache_read('db_'.$import_info['dataname'].'.php');				        @extract($dbinfo);						$this->connect_db('mysql', $dbhost, $dbuser, $dbpw, $dbname);				        $result = $this->filter_fields($import_info, $offset);				        @extract($result);				        $query = $this->sqldb->query("SELECT $selectfield FROM $table $condition $limit");				        $i = 0;						while ($r = $this->sqldb->fetch_array($query))						{				            if(!empty($r[$import_info['email']]))				            {				                $mails.= $r[$import_info['email']]."\n";				                $i++;				            }				        }				        file_put_contents($this->mail_datadir.$import_info['mailname'].'.txt', $mails, FILE_APPEND);				        return $i.'-'.$offset.'-'.$total;				    }										/**					 * 鍙栧緱鏌愪釜瀵煎叆璁剧疆鐨勪俊鎭			

相关资源