diff --git a/application/default/views/scripts/knowledge/datacenter.phtml b/application/default/views/scripts/knowledge/datacenter.phtml
index afbf6bb9..d752644a 100644
--- a/application/default/views/scripts/knowledge/datacenter.phtml
+++ b/application/default/views/scripts/knowledge/datacenter.phtml
@@ -17,16 +17,19 @@ $this->breadcrumb()->setSeparator(' > ');
diff --git a/application/default/views/scripts/knowledge/index.phtml b/application/default/views/scripts/knowledge/index.phtml
index 66596a82..a9765cbb 100755
--- a/application/default/views/scripts/knowledge/index.phtml
+++ b/application/default/views/scripts/knowledge/index.phtml
@@ -10,16 +10,6 @@ $this->breadcrumb()->setSeparator(' > ');
= $this->partial('knowledge/navi.phtml'); ?>
-
@@ -27,10 +17,32 @@ $this->breadcrumb()->setSeparator(' > ');
+
-
西部计划文献库
+
+
数据施引文献库
+
数据施引文献库是数据用户在使用科学数据后公开发表在科技期刊上的文献,由用户自发通知数据中心、数据作者收集和数据中心集中手机三种方式进行收集整理。
+
从数据用户的文献库中,可以挖掘出更多的知识,了解用户是如何使用数据中心提供的科学数据。数据作者也可以从其中获取到数据相关的趋势性知识。
+ 数据中心也欢迎用户提供更多的公开发表成果,我们将持续更新其内容,以满足数据的深层挖掘,实现学术信息进行搜索、发现、聚集和再组织。
+
查看 »
+
+
+
作者推荐文献库
+
作者推荐文献库是对发布在数据中心的科学数据的作者所推荐的和其数据相关的科技文献,主要是由数据作者发表的、和其数据紧密相关的科学文献。
+
用户可以通过数据作者的文献库中挖掘出对应的数据信息,实现从文献到数据的一个知识挖掘。将数据中心所有的数据作者文献构建一个和数据紧密相关的知识库,可以供用户更好的了解和发现数据和知识。
+ 支持用户对数据作者的学术信息进行搜索、发现、聚集和再组织。
+
查看 »
+
+
+
WATER文献库
+
WATER文献库是对由WATER项目所相关的科技文献,包括WATER项目自身发表的文献以及WATER数据用户所发表的文献。
+
用户可以通过WATER文献库中挖掘出对应的数据信息,实现从文献到数据的一个知识挖掘。将数据中心所有的数据作者文献构建一个和数据紧密相关的知识库,可以供用户更好的了解和发现数据和知识。
+ 支持用户对数据作者的学术信息进行搜索、发现、聚集和再组织。
+
查看 »
+
+
西部计划文献库
旨在发展和形成一个支持环境与生态科学领域开放学术信息的自助存档、交流和发现的领域知识平台。
首先,实现对国家自然科学基金委组织实施的“中国西部环境与生态科学研究计划”历年来所支持的研究项目和课题所产生的有重要科研和学术价值的知识产出进行统一组织和管理,
@@ -38,20 +50,6 @@ $this->breadcrumb()->setSeparator(' > ');
特别是对有重要学术影响的研究性数字知识库所涉及的环境与生态科学领域的学术信息进行搜索、发现、聚集和再组织。
查看 » 访问seekspace »
-
-
数据作者文献库
-
数据作者文献库是对发布在数据中心的科学数据中相关的参考文献,主要是由数据作者发表的、和其数据紧密相关的科学文献。
-
用户可以通过数据作者的文献库中挖掘出对应的数据信息,实现从文献到数据的一个知识挖掘。将数据中心所有的数据作者文献构建一个和数据紧密相关的知识库,可以供用户更好的了解和发现数据和知识。
- 支持用户对数据作者的学术信息进行搜索、发现、聚集和再组织。
-
查看 »
-
-
-
数据用户文献库
-
数据用户文献库是数据用户在使用科学数据后公开发表在科技期刊上的文献,由用户自发通知数据中心、数据作者收集和数据中心集中手机三种方式进行收集整理。
-
从数据用户的文献库中,可以挖掘出更多的知识,了解用户是如何使用数据中心提供的科学数据。数据作者也可以从其中获取到数据相关的趋势性知识。
- 数据中心也欢迎用户提供更多的公开发表成果,我们将持续更新其内容,以满足数据的深层挖掘,实现学术信息进行搜索、发现、聚集和再组织。
-
查看 »
-
‹
diff --git a/application/default/views/scripts/knowledge/navi.phtml b/application/default/views/scripts/knowledge/navi.phtml
index 5ddc4339..260138ad 100644
--- a/application/default/views/scripts/knowledge/navi.phtml
+++ b/application/default/views/scripts/knowledge/navi.phtml
@@ -1,25 +1,16 @@
diff --git a/application/default/views/scripts/knowledge/paper.phtml b/application/default/views/scripts/knowledge/paper.phtml
index a0fa71e8..27313bf1 100644
--- a/application/default/views/scripts/knowledge/paper.phtml
+++ b/application/default/views/scripts/knowledge/paper.phtml
@@ -24,7 +24,7 @@ $this->headLink()->appendStylesheet('/css/colorbox.css');
作者
author as $a) : ?>
-
+ - 【所有文章】
@@ -71,7 +71,7 @@ $this->headLink()->appendStylesheet('/css/colorbox.css');
echo '
下载';
endif;
?>
-
相关数据(共?条)
+
相关数据(共?条)
@@ -79,7 +79,7 @@ $this->headLink()->appendStylesheet('/css/colorbox.css');
+
\ No newline at end of file
diff --git a/application/module/Users/Account.php b/application/module/Users/Account.php
new file mode 100644
index 00000000..e692f95c
--- /dev/null
+++ b/application/module/Users/Account.php
@@ -0,0 +1,332 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+
+
+ }
+
+ public function events(\Zend_EventManager_EventCollection $events = NULL)
+ {
+ if ($events !== NULL) {
+ $this->events = $events;
+ } elseif ($this->events === NULL) {
+ $this->events = new \Zend_EventManager_EventManager(__CLASS__);
+ }
+ return $this->events;
+ }
+
+ //获取账号信息,数组
+ public function getAccountInfo($id = 0)
+ {
+ if($id == 0)
+ {
+ $id = view::User('id');
+ }
+ $sql = "SELECT * FROM {$this->memberTable} WHERE id=$id";
+ $rs = $this->db->query($sql);
+ return $rs->fetch();
+ }
+
+ //注册
+ public function register($data)
+ {
+
+ $params = compact('data');
+ $results = $this->events()->trigger('register.checkParam', $this, $params);
+ $cache_data = $results->bottom();
+
+ if($cache_data !== true)
+ {
+ if(!is_array($cache_data))
+ {
+ return array('error'=>$cache_data);
+ }else{
+ return $cache_data;
+ }
+ }
+
+ $results = $this->events()->trigger('register.checkUser', $this, $params);
+ $cache_data = $results->bottom();
+
+ if($cache_data !== true)
+ {
+ if(!is_array($cache_data))
+ {
+ return array('error'=>$cache_data);
+ }else{
+ return $cache_data;
+ }
+ }
+
+ $loginData = array(
+ 'username'=>$data['username'],
+ 'password'=>$data['password']
+ );
+
+ $data['password'] = md5($data['password']);
+ $data['usertype'] = "member";
+ unset($data['confirm_password']);
+
+ $dbh = new dbh();
+
+ $id = $dbh->insert($this->memberTable,$data,true);
+
+ if(!empty($id) && is_numeric($id))
+ {
+ $this->storeLogin($loginData);
+ $mb = new Member();
+ $mb->putcookie($data[$this->FieldUsername],$data[$this->FieldPasword]); //username, md5(password)
+ $params = compact('data','id');
+ $results = $this->events()->trigger('register.success', $this, $params);
+ return array("success" => 1);
+ }else{
+ if($id === false)
+ {
+ return array('error'=>'服务器开小差了,请稍后再试');
+ }else{
+ return array('error'=>'服务器处理中遇到错误,请联系管理员');
+ }
+ }
+
+ }//register
+
+ //登陆
+ public function login($data)
+ {
+ $results = $this->events()->trigger('login.checkParam', $this, compact('data'));
+ $cache_data = $results->bottom();
+
+ if($cache_data !== true)
+ {
+ if(!is_array($cache_data))
+ {
+ return array('error'=>$cache_data);
+ }else{
+ return $cache_data;
+ }
+ }
+
+ $state = $this->storeLogin($data);
+
+ $mb = new Member();
+ $mb->putcookie($data[$this->FieldUsername],md5($data[$this->FieldPasword]));
+
+ return $state;
+ }//login
+
+ //storeLogin
+ public function storeLogin($data)
+ {
+ $auth = \Zend_Auth::getInstance();
+ $authAdapter = new \Zend_Auth_Adapter_DbTable($this->db);
+ $authAdapter->setTableName($this->memberTable)
+ ->setIdentityColumn($this->FieldUsername)
+ ->setCredentialColumn($this->FieldPasword);
+ $authAdapter->setIdentity($data[$this->FieldUsername])->setCredential(md5($data[$this->FieldPasword]));
+ $result = $auth->authenticate($authAdapter);
+ if ($result->isValid()) {
+
+ $user = $authAdapter->getResultRowObject(null,$this->FieldPasword);
+ $email = $user->email;
+ $results = $this->events()->trigger('login.success.createAvatar', $this, compact('email'));
+ $user->avatar = $results->bottom();
+ $auth->getStorage()->write($user);
+
+ $id = $user->id;
+ @$results = $this->events()->trigger('login.success.updateStatus', $this, compact('id'));
+
+ return array('success'=>1);
+ }
+ return array('error'=>'处理中发现错误,请重试');
+ }
+
+ //注册信息参数
+ public function getParam(\Zend_Controller_Request_Abstract $request)
+ {
+ $data = array(
+ 'username'=>$request->getParam('username'),
+ 'password'=>$request->getParam('password'),
+ 'confirm_password'=>$request->getParam('confirm_password'),
+ 'email'=>$request->getParam('email'),
+ 'realname'=>$request->getParam('realname')
+ );
+ return $data;
+ }
+
+ //获取用户账户修改参数
+ public function getEditParam(\Zend_Controller_Request_Abstract $request)
+ {
+ $type = $request->getParam('type');
+
+ if($type == "general")
+ {
+ $data = array(
+ 'realname'=>$request->getParam('realname'),
+ 'signature'=>$request->getParam('signature'),
+ 'description'=>$request->getParam('description')
+ );
+ }
+
+ if($type == "password")
+ {
+ $data = array(
+ 'password' => $request->getParam('password'),
+ 'password_new'=>$request->getParam('password_new'),
+ 'password_confirm'=>$request->getParam('password_confirm')
+ );
+ }
+ return $data;
+ }
+
+ //编辑
+ public function edit($data,$type)
+ {
+ $results = $this->events()->trigger('edit.checkParam', $this, compact('data','type'));
+ $cache_data = $results->bottom();
+
+ if($cache_data !== true)
+ {
+ return $cache_data;
+ }
+
+ if($type == "general")
+ {
+ $data['signature'] = htmlspecialchars($data['signature']);
+ $data['description'] = htmlspecialchars($data['description']);
+ }else if($type == "password")
+ {
+ $data['password'] = md5($data['password_new']);
+ unset($data['password_new']);
+ unset($data['password_confirm']);
+ }else{
+ return "参数错误";
+ }
+
+ $dbh = new dbh();
+ $uid = view::User('id');
+ if($dbh->update($this->memberTable,$data," id=$uid") === true)
+ {
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+ //找回密码
+ public function getMyPassword($email)
+ {
+ $results = $this->events()->trigger('pwd.forgot.checkParam', $this, compact('email'));
+ $cache_data = $results->bottom();
+
+ if($cache_data !== true)
+ {
+ return $cache_data;
+ }
+
+ $sql = "SELECT * FROM {$this->memberTable} WHERE email='$email'";
+ $rs = $this->db->query($sql);
+ $row = $rs->fetch();
+
+ if(!isset($row['username']) || empty($row['username']))
+ {
+ return array('error'=>"此邮箱并未注册",'place'=>'email');
+ }
+
+ $salt = md5($email.'---'.$row['username']);
+
+ $sql = "UPDATE {$this->memberTable} SET salt='$salt' WHERE id={$row['id']}";
+ $state = $this->db->exec($sql);
+
+ if($state<1)
+ {
+ return array('error'=>"处理中出现错误,请重试",'place'=>'email');
+ }
+
+ $mail_template = "forgotpassword";
+ $mail_data = array(
+ 'name'=>$row['realname'],
+ 'link'=> view::getHostLink().'/account/getpassword/salt/'.$salt
+ );
+
+ $mail = new Mail();
+
+ $mail->loadTemplate($mail_template,$mail_data);
+ $mail->addTo($email,$row['realname']);
+ $mail->send();
+
+ return array("success"=>1);
+ }
+
+ //重置密码
+ public function resetPassword($data)
+ {
+ $results = $this->events()->trigger('pwd.reset.checkParam', $this, compact('data'));
+ $cache_data = $results->bottom();
+
+ if($cache_data !== true)
+ {
+ return $cache_data;
+ }
+
+ $sql = "SELECT * FROM {$this->memberTable} WHERE salt=?";
+ $sth = $this->db->prepare($sql);
+ $sth->execute(array($data['salt']));
+ $row = $sth->fetch();
+
+ if(!isset($row['username']) || empty($row['username']))
+ {
+ return array('error'=>"您提供的校验码不正确,请重新申请重置密码",'place'=>'confirm_password');
+ }
+
+ if($row['username'] !== $data['username'])
+ {
+ return array('error'=>"您提供的校验码不正确,请重新申请重置密码",'place'=>'confirm_password');
+ }
+
+ $sql = "UPDATE {$this->memberTable} SET password='".md5($data['password'])."',salt='' WHERE id={$row['id']}";
+ $this->db->exec($sql);
+
+ $mail_template = "getpassworded";
+ $mail_data = array(
+ 'name'=>$row['realname'],
+ );
+ $mail = new Mail();
+ $mail->loadTemplate($mail_template,$mail_data);
+ $mail->addTo($row['email'],$row['realname']);
+ $mail->send();
+
+ return true;
+
+ }
+
+}
\ No newline at end of file
diff --git a/application/module/Users/Event/EditEvent.php b/application/module/Users/Event/EditEvent.php
new file mode 100644
index 00000000..99488769
--- /dev/null
+++ b/application/module/Users/Event/EditEvent.php
@@ -0,0 +1,11 @@
+event = new \Zend_EventManager_EventManager();
+
+ if(empty($type))
+ {
+ $type = "both";
+ }
+
+ $this->type = $type;
+ }
+
+ public function attach(\Zend_EventManager_EventCollection $events)
+ {
+ if($this->type == "both")
+ {
+ $this->attachRegisterEvents($events);
+ $this->attachLoginEvents($events);
+ }
+
+ if($this->type == "register")
+ {
+ $this->attachRegisterEvents($events);
+ }
+
+ if($this->type == "login")
+ {
+ $this->attachLoginEvents($events);
+ }
+ }
+
+ public function detach(\Zend_EventManager_EventCollection $events)
+ {
+
+ }
+
+ private function attachRegisterEvents(\Zend_EventManager_EventCollection $events)
+ {
+ $_Events = new RegisterOperate();
+ $events->attach('register.checkParam', array($_Events, 'checkParam'), 100);
+ $events->attach('register.checkUser', array($_Events, 'checkUser'), 80);
+ $events->attach('register.success', array($_Events, 'registerSuccess'), 50);
+ }
+
+ private function attachLoginEvents(\Zend_EventManager_EventCollection $events)
+ {
+ $_Events = new LoginOperate();
+ $events->attach('login.checkParam', array($_Events, 'checkParam'), 100);
+ $events->attach('login.success.updateStatus', array($_Events, 'updateStatus'), 50);
+ $events->attach('login.success.createAvatar', array($_Events, 'createAvatar'), 50);
+ }
+
+}
diff --git a/application/module/Users/Listener/EditListener.php b/application/module/Users/Listener/EditListener.php
new file mode 100644
index 00000000..bcf2ce56
--- /dev/null
+++ b/application/module/Users/Listener/EditListener.php
@@ -0,0 +1,35 @@
+event = new \Zend_EventManager_EventManager();
+
+ if(empty($type))
+ {
+ $type = "both";
+ }
+
+ $this->type = $type;
+ }
+
+ public function attach(\Zend_EventManager_EventCollection $events)
+ {
+ $_Events = new EditOperate();
+ $events->attach('edit.checkParam', array($_Events, 'checkParam'), 100);
+ $events->attach('edit.success', array($_Events, 'editSuccess'), 50);
+ }
+
+ public function detach(\Zend_EventManager_EventCollection $events)
+ {
+
+ }
+
+}
diff --git a/application/module/Users/Listener/PwdListener.php b/application/module/Users/Listener/PwdListener.php
new file mode 100644
index 00000000..c1afb947
--- /dev/null
+++ b/application/module/Users/Listener/PwdListener.php
@@ -0,0 +1,30 @@
+event = new \Zend_EventManager_EventManager();
+ }
+
+ public function attach(\Zend_EventManager_EventCollection $events)
+ {
+ $_Events = new PwdOperate();
+ $events->attach('pwd.forgot.checkParam', array($_Events, 'forgotPwdCheckParam'), 100);
+ $events->attach('pwd.forgot.sendmail', array($_Events, 'sendGetPasswordMail'), 50);
+ $events->attach('pwd.reset.checkParam', array($_Events, 'resetPwdCheckParam'), 100);
+ $events->attach('pwd.reset.sendmail', array($_Events, 'sendGetPasswordMail'), 50);
+ }
+
+ public function detach(\Zend_EventManager_EventCollection $events)
+ {
+
+ }
+
+}
diff --git a/application/module/Users/Member.php b/application/module/Users/Member.php
new file mode 100644
index 00000000..fcb2bce2
--- /dev/null
+++ b/application/module/Users/Member.php
@@ -0,0 +1,138 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+
+ if(!empty($_COOKIE['scr']))
+ {
+ $this->scr = $_COOKIE['scr'];
+ }
+ if(!empty($_COOKIE['user']))
+ {
+ $this->user= $_COOKIE['user'];
+ }
+ }
+
+
+ /**
+ * 检测cookie
+ */
+ public function checkcookie()
+ {
+ $uname = $this->user;
+ $hash = $this->scr;
+
+ if(!empty($uname) && !empty($hash))
+ {
+ if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$uname) || preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$hash))
+ {
+ $this->mid=0;
+ return false;
+ }
+ else{
+ $sql = "select {$this->FieldUsername} as userid,{$this->FieldPasword} as pwd from {$this->memberTable} where {$this->FieldUsername}='$uname'";
+ $rs = $this->db->query($sql);
+ $row = $rs->fetch();
+ $scr = $this->makescr($row['userid'],$row['pwd']);
+
+ if($hash == $scr)
+ {
+ $this->srpwd=$row['pwd'];
+ return true;
+ }
+ else {
+ return false;
+ }
+ }//cookie安全
+ }else {
+ return false;
+ }//exit
+ }//function checkcookie
+
+ /**
+ * putcookie
+ *
+ * 登陆成功后放置cookie,包含安全码
+ *
+ * @param String $uname
+ * @param String $pwd
+ * @param Int $time
+ */
+ public function putcookie($uname,$pwd,$time = 604800)
+ {
+ try {
+ $scrString = $this->makescr($uname,$pwd);//加密验证串:防止用户密码被盗;防止伪造cookie。
+
+ if(!is_numeric($time))
+ {
+ $time = 604800;
+ }
+
+ setcookie('user',$uname,time()+$time,'/');
+ setcookie('scr',$scrString,time()+$time,'/');
+
+ return true;
+ } catch (Exception $e) {
+ return false;
+ }
+
+ }//function putcookie
+
+ /**
+ * 生成安全码
+ *
+ * @param String $u
+ * @param String $p
+ */
+ public function makescr($u,$p)
+ {
+ return substr(md5($u.$p.$this->ck),3,20);
+ }
+
+ /**
+ * 清除cookie
+ */
+ static function flushcookie()
+ {
+ setcookie('user','',time()-99999,'/');
+ setcookie('scr','',time()-99999,'/');
+ }
+
+ public function getUser()
+ {
+ $sql = "SELECT * FROM ".$this->memberTable." m ORDER BY m.id DESC";
+ $rs = $this->db->query($sql);
+ return $rs->fetchAll();
+ }
+
+}
\ No newline at end of file
diff --git a/application/module/Users/Operation/EditOperate.php b/application/module/Users/Operation/EditOperate.php
new file mode 100644
index 00000000..a31a1d71
--- /dev/null
+++ b/application/module/Users/Operation/EditOperate.php
@@ -0,0 +1,88 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+ }
+
+ public function checkParam(\Zend_EventManager_Event $e){
+
+ $data = $e->getParam('data');
+ $type = $e->getParam('type');
+
+ if($type == 'general')
+ {
+
+ if(empty($data['realname']))
+ {
+ return "请输入真实姓名";
+ }
+
+ if(mb_strlen($data['realname'],"UTF-8")>10 )
+ {
+ return "姓名不要超过10个字";
+ }
+ }
+
+ if($type == "password")
+ {
+ if(strlen($data['password'])>18 || strlen($data['password_new'])>18)
+ {
+ return "密码过长";
+ }
+ if(strlen($data['password_new'])<=6 || strlen($data['password_confirm'])<=6)
+ {
+ return "密码过短";
+ }
+ if(md5($data['password_new']) != md5($data['password_confirm']))
+ {
+ return "两次输入的密码不同";
+ }
+
+ $uid = view::User('id');
+ $sql = "SELECT {$this->FieldPasword} FROM {$this->tbl_member} WHERE id=$uid";
+ $rs = $this->db->query($sql);
+ $row = $rs->fetch();
+
+ if(md5($data['password']) != $row[$this->FieldPasword])
+ {
+ return "原密码不正确";
+ }
+ }
+
+ return true;
+ }//checkParam
+
+ public function editSuccess(\Zend_EventManager_Event $e){
+
+ $data = $e->getParam('data');
+
+
+ return true;
+ }
+
+}
\ No newline at end of file
diff --git a/application/module/Users/Operation/LoginOperate.php b/application/module/Users/Operation/LoginOperate.php
new file mode 100644
index 00000000..7dd145f6
--- /dev/null
+++ b/application/module/Users/Operation/LoginOperate.php
@@ -0,0 +1,111 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+ }
+
+ public function checkParam(\Zend_EventManager_Event $e){
+
+ $data = $e->getParam('data');
+
+ if(!is_array($data))
+ {
+ return "参数错误";
+ }
+
+ if(empty($data['username']))
+ {
+ return array('error'=>"请输入用户名",'place'=>'username');
+ }
+
+ if(!empty($data['username']))
+ {
+ if(!preg_match("/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/",$data['username']))
+ {
+ return array('error'=>"用户名应当以字母开头,由字母数字和下划线组成,并且长度在5到25个字符之间",'place'=>'username');
+ }
+ }
+
+ if(empty($data['password']))
+ {
+ return array('error'=>"请输入密码",'place'=>'password');
+ }
+
+ $sql = "SELECT id,{$this->FieldPasword} FROM {$this->tbl_member} WHERE {$this->FieldUsername}=?";
+ $sth = $this->db->prepare($sql);
+ $rs = $sth->execute(array($data[$this->FieldUsername]));
+ $row = $sth->fetch();
+
+ if(isset($row['id']) && !empty($row['id']))
+ {
+ if(strlen($row[$this->FieldPasword]) !== 32)
+ {
+ return array('error'=>"您的密码或因安全原因或其他问题已经被重置,请先
重置密码再登陆",'place'=>'password');
+ }
+ if($row[$this->FieldPasword] !== md5($data['password']))
+ {
+ return array('error'=>"密码错误",'place'=>'password');
+ }
+ return true;
+ }else{
+ return array('error'=>"用户不存在",'place'=>'username');
+ }
+
+ }//checkParam
+
+ public function updateStatus(\Zend_EventManager_Event $e){
+
+ $id = (int)$e->getParam('id');
+
+ if(!is_numeric($id))
+ {
+ return false;
+ }
+
+ $update = array(
+ $this->FieldLastlogin => date("Y-m-d H:i:s"),
+ $this->FieldLastloginIp => $_SERVER["REMOTE_ADDR"]
+ );
+
+ $dbh = new dbh();
+ @$statusUpdate = $dbh->update($this->tbl_member,$update," id=$id ");
+
+ return true;
+ }//loginSuccess
+
+ public function createAvatar(\Zend_EventManager_Event $e){
+
+ $email = $e->getParam('email');
+ $avatar = new Gravatar();
+ return $avatar->Get($email);
+
+ }//loginSuccess
+
+
+
+}
\ No newline at end of file
diff --git a/application/module/Users/Operation/PwdOperate.php b/application/module/Users/Operation/PwdOperate.php
new file mode 100644
index 00000000..ae87513f
--- /dev/null
+++ b/application/module/Users/Operation/PwdOperate.php
@@ -0,0 +1,94 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+ }
+
+ public function forgotPwdCheckParam(\Zend_EventManager_Event $e){
+
+ $email = $e->getParam('email');
+
+ if(empty($email))
+ {
+ return array('error'=>"请输入电子邮箱,作为找回密码和接受通知的联系方式",'place'=>'email');
+ }
+
+ if (!preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',$email))
+ {
+ return array('error'=>"请输入正确的电子邮件",'place'=>'email');
+ }
+
+ return true;
+ }//checkParam
+
+ public function sendGetPasswordMail(\Zend_EventManager_Event $e){
+
+ $email = $e->getParam('email');
+
+
+ return true;
+ }
+
+ public function resetPwdCheckParam(\Zend_EventManager_Event $e)
+ {
+ $data = $e->getParam('data');
+
+ if(empty($data['username']))
+ {
+ return array('error'=>"请输入用户名",'place'=>'username');
+ }
+
+ if(empty($data['password']))
+ {
+ return array('error'=>"请输入密码",'place'=>'password');
+ }
+
+ if(strlen($data['password']) < 6)
+ {
+ return array('error'=>"密码长度太短,为了安全最少输入6位哦",'place'=>'password');
+ }
+
+ if(strlen($data['password']) > 14)
+ {
+ return array('error'=>"密码太长,亲您记得住吗?不要超过14位哦",'place'=>'password');
+ }
+
+ if(empty($data['confirm_password']))
+ {
+ return array('error'=>"请再次输入密码已确认输入正确",'place'=>'confirm_password');
+ }
+
+ if(md5($data['password']) != md5($data['confirm_password']))
+ {
+ return array('error'=>"两次输入的密码不同,请重新输入",'place'=>'confirm_password');
+ }
+
+ return true;
+ }
+
+}
\ No newline at end of file
diff --git a/application/module/Users/Operation/RegisterOperate.php b/application/module/Users/Operation/RegisterOperate.php
new file mode 100644
index 00000000..8bc1f3d1
--- /dev/null
+++ b/application/module/Users/Operation/RegisterOperate.php
@@ -0,0 +1,192 @@
+db = \Zend_Registry::get('db');
+ }else{
+ $this->db = $db;
+ }
+
+ $this->config = \Zend_Registry::get('config');
+ }
+
+ public function checkParam(\Zend_EventManager_Event $e){
+
+ $data = $e->getParam('data');
+
+ if(!is_array($data))
+ {
+ return "参数错误";
+ }
+
+ if(empty($data['username']))
+ {
+ return array('error'=>"请输入用户名",'place'=>'username');
+ }
+
+ if(!empty($data['username']))
+ {
+ if(!preg_match("/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/",$data['username']))
+ {
+ return array('error'=>"用户名应当以字母开头,由字母数字和下划线组成,并且长度在5到16个字符之间",'place'=>'username');
+ }
+ }
+
+ if(empty($data['password']))
+ {
+ return array('error'=>"请输入密码",'place'=>'password');
+ }
+
+ if(strlen($data['password']) < 6)
+ {
+ return array('error'=>"密码长度太短,为了安全最少输入6位",'place'=>'password');
+ }
+
+ if(strlen($data['password']) > 14)
+ {
+ return array('error'=>"密码太长,请不要超过14位",'place'=>'password');
+ }
+
+ if(empty($data['confirm_password']))
+ {
+ return array('error'=>"请再次输入密码已确认输入正确",'place'=>'confirm_password');
+ }
+
+ if(md5($data['password']) != md5($data['confirm_password']))
+ {
+ return array('error'=>"两次输入的密码不同,请重新输入",'place'=>'confirm_password');
+ }
+
+ if(empty($data['email']))
+ {
+ return array('error'=>"请输入电子邮箱,作为找回密码和接受通知的联系方式",'place'=>'email');
+ }
+
+ if (!preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',$data['email']))
+ {
+ return array('error'=>"请输入正确的电子邮件,推荐使用QQ邮箱和Gmail邮箱",'place'=>'email');
+ }
+
+ if(empty($data['realname']))
+ {
+ return array('error'=>"请输入姓名",'place'=>'realname');
+ }
+
+ if(mb_strlen($data['realname'],"UTF-8")>10 )
+ {
+ return array('error'=>"真实姓名请不要超过10个字",'place'=>'realname');
+ }
+
+ return true;
+ }//checkParam
+
+ public function checkUser(\Zend_EventManager_Event $e){
+
+ $data = $e->getParam('data');
+
+ if(!is_array($data))
+ {
+ return "用户信息验证失败,请重新尝试";
+ }
+
+ $sql = "SELECT id,{$this->FieldUsername},{$this->FieldEmail} FROM ".$this->tbl_member." WHERE {$this->FieldUsername}='{$data['username']}' OR {$this->FieldEmail}='{$data['email']}'";
+
+ $rs = $this->db->query($sql);
+
+ $row = $rs->fetch();
+
+ if(isset($row['id']) && !empty($row['id']))
+ {
+ if($row[$this->FieldUsername] == $data['username'])
+ {
+ return array('error'=>'您的用户名已经注册过账号,您是否
忘记了密码?','place'=>'username');
+ }
+
+ if($row[$this->FieldEmail] == $data['email'])
+ {
+ return array('error'=>'您的邮箱已经注册过账号,请换一个邮箱','place'=>'email');
+ }
+
+ return array('error'=>'您的用户名或邮箱已经使用过,注册新账号请换一个用户名');
+ }
+
+ return true;
+ }//checkUser
+
+ public function registerSuccess(\Zend_EventManager_Event $e){
+
+ $data = $e->getParam('data');
+
+ if(!is_array($data))
+ {
+ return false;
+ }
+
+ $id = $e->getParam('id');
+
+ if(!is_numeric($id))
+ {
+ return false;
+ }
+
+ $mail_template = "register";
+ $mail_data = array(
+ 'name'=>$data['realname'],
+ 'content'=>$this->getMailContent()
+ );
+
+ $mail = new Mail();
+
+ $mail->loadTemplate($mail_template,$mail_data);
+ $mail->addTo($data['email'],$data['realname']);
+ $mail->send();
+
+ return true;
+ }//registerSuccess
+
+ //邮件内容
+ public function getMailContent()
+ {
+ $sql = "SELECT v.id,v.title,v.thumb,v.status,v.content,m.realname,m.username FROM tbl_voice v
+ LEFT JOIN tbl_member m ON v.userid = m.id
+ WHERE v.status > 0
+ ORDER BY v.id DESC
+ LIMIT 5";
+ $rs = $this->db->query($sql);
+ $latest = $rs->fetchAll();
+
+ $content = "";
+
+ foreach($latest as $k=>$v)
+ {
+ if($v['thumb'] != '[]')
+ {
+ $thumb = json_decode($v['thumb'],true);
+ $text = mb_strlen($v['content'],"UTF-8") > 100 ? mb_substr($v['content'],0,100,"UTF-8") : $v['content'];
+ $content .= '
'.$v['title']. ' / ' .$v['realname'].'
'.$text.'
查看播放
';
+ }
+ }
+
+ return $content;
+ }//getMailContent();
+
+}
\ No newline at end of file