代码解读--unclient/client.php_2

接代码解读--unclient/client.php_1
0518./**
0519. * 用户登陆检查
0520. *
0521. * @param string $username  用户名/uid
0522. * @param string $password  密码
0523. * @param int $isuid        是否为uid
0524. * @param int $checkques    是否使用检查安全问答
0525. * @param int $questionid   安全提问
0526. * @param string $answer    安全提问答案
0527. * @return array (uid/status, username, password, email)
0528.    数组第一项
0529.    1  : 成功
0530.    -1 : 用户不存在,或者被删除
0531.    -2 : 密码错
0532.*/
0533.function uc_user_login($username, $password, $isuid = 0, $checkques = 0, $questionid = '', $answer = '') {
0534.    $isuid = intval($isuid);
0535.    $return = call_user_func(UC_API_FUNC, 'user', 'login', array('username'=>$username, 'password'=>$password, 'isuid'=>$isuid, 'checkques'=>$checkques, 'questionid'=>$questionid, 'answer'=>$answer));
0536.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0537.}
0538. 
0539./**
0540. * 进入同步登录代码
0541. *
0542. * @param int $uid      用户ID
0543. * @return string       HTML代码
0544. */
0545.function uc_user_synlogin($uid) {
0546.    $uid = intval($uid);
0547.    $return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
0548.    return $return;
0549.}
0550. 
0551./**
0552. * 进入同步登出代码
0553. *
0554. * @return string       HTML代码
0555. */
0556.function uc_user_synlogout() {
0557.    $return = uc_api_post('user', 'synlogout', array());
0558.    return $return;
0559.}
0560. 
0561./**
0562. * 编辑用户
0563. *
0564. * @param string $username  用户名
0565. * @param string $oldpw     旧密码
0566. * @param string $newpw     新密码
0567. * @param string $email     Email
0568. * @param int $ignoreoldpw  是否忽略旧密码, 忽略旧密码, 则不进行旧密码校验.
0569. * @param int $questionid   安全提问
0570. * @param string $answer    安全提问答案
0571. * @return int
0572.    1  : 修改成功
0573.    0  : 没有任何修改
0574.    -1 : 旧密码不正确
0575.    -4 : email 格式有误
0576.    -5 : email 不允许注册
0577.    -6 : 该 email 已经被注册
0578.    -7 : 没有做任何修改
0579.    -8 : 受保护的用户,没有权限修改
0580.*/
0581.function uc_user_edit($username, $oldpw, $newpw, $email, $ignoreoldpw = 0, $questionid = '', $answer = '') {
0582.    return call_user_func(UC_API_FUNC, 'user', 'edit', array('username'=>$username, 'oldpw'=>$oldpw, 'newpw'=>$newpw, 'email'=>$email, 'ignoreoldpw'=>$ignoreoldpw, 'questionid'=>$questionid, 'answer'=>$answer));
0583.}
0584. 
0585./**
0586. * 删除用户
0587. *
0588. * @param string/array $uid 用户的 UID
0589. * @return int
0590.    >0 : 成功
0591.    0 : 失败
0592. */
0593.function uc_user_delete($uid) {
0594.    return call_user_func(UC_API_FUNC, 'user', 'delete', array('uid'=>$uid));
0595.}
0596. 
0597./**
0598. * 删除用户头像
0599. *
0600. * @param string/array $uid 用户的 UID
0601. */
0602.function uc_user_deleteavatar($uid) {
0603.    uc_api_post('user', 'deleteavatar', array('uid'=>$uid));
0604.}
0605. 
0606./**
0607. * 检查用户名是否为合法
0608. *
0609. * @param string $username  用户名
0610. * @return int
0611.     1 : 合法
0612.    -1 : 用户名不合法
0613.    -2 : 包含要允许注册的词语
0614.    -3 : 用户名已经存在
0615. */
0616.function uc_user_checkname($username) {
0617.    return call_user_func(UC_API_FUNC, 'user', 'check_username', array('username'=>$username));
0618.}
0619. 
0620./**
0621. * 检查Email地址是否正确
0622. *
0623. * @param string $email     Email
0624. * @return
0625. *      1  : 成功
0626. *  -4 : email 格式有误
0627. *  -5 : email 不允许注册
0628. *  -6 : 该 email 已经被注册
0629. */
0630.function uc_user_checkemail($email) {
0631.    return call_user_func(UC_API_FUNC, 'user', 'check_email', array('email'=>$email));
0632.}
0633. 
0634./**
0635. * 添加保护用户
0636. *
0637. * @param string/array $username 保护用户名
0638. * @param string $admin    操作的管理员
0639. * @return
0640. *  -1 : 失败
0641. *   1 : 成功
0642. */
0643.function uc_user_addprotected($username, $admin='') {
0644.    return call_user_func(UC_API_FUNC, 'user', 'addprotected', array('username'=>$username, 'admin'=>$admin));
0645.}
0646. 
0647./**
0648. * 删除保护用户
0649. *
0650. * @param string/array $username 保护用户名
0651. * @return
0652. *  -1 : 失败
0653. *   1 : 成功
0654. */
0655.function uc_user_deleteprotected($username) {
0656.    return call_user_func(UC_API_FUNC, 'user', 'deleteprotected', array('username'=>$username));
0657.}
0658. 
0659./**
0660. * 得到受保护的用户名列表
0661. *
0662. * @param empty
0663. * @return
0664. *  受到保护的用户名列表
0665. *      array()
0666. */
0667.function uc_user_getprotected() {
0668.    $return = call_user_func(UC_API_FUNC, 'user', 'getprotected', array('1'=>1));
0669.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0670.}
0671. 
0672./**
0673. * 取得用户数据
0674. *
0675. * @param string $username  用户名
0676. * @param int $isuid    是否为UID
0677. * @return array (uid, username, email)
0678. */
0679.function uc_get_user($username, $isuid=0) {
0680.    $return = call_user_func(UC_API_FUNC, 'user', 'get_user', array('username'=>$username, 'isuid'=>$isuid));
0681.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0682.}
0683. 
0684./**
0685. * 用户合并最后的处理
0686. *
0687. * @param string $oldusername   老用户名
0688. * @param string $newusername   新用户名
0689. * @param string $uid       老UID
0690. * @param string $password  密码
0691. * @param string $email     Email
0692. * @return int
0693.    -1 : 用户名不合法
0694.    -2 : 包含不允许注册的词语
0695.    -3 : 用户名已经存在
0696.    >1 : 表示成功,数值为 UID
0697. */
0698.function uc_user_merge($oldusername, $newusername, $uid, $password, $email) {
0699.    return call_user_func(UC_API_FUNC, 'user', 'merge', array('oldusername'=>$oldusername, 'newusername'=>$newusername, 'uid'=>$uid, 'password'=>$password, 'email'=>$email));
0700.}
0701. 
0702./**
0703. * 移去合并用户记录
0704. * @param string $username  用户名
0705. */
0706.function uc_user_merge_remove($username) {
0707.    return call_user_func(UC_API_FUNC, 'user', 'merge_remove', array('username'=>$username));
0708.}
0709. 
0710./**
0711. * 获取指定应用的指定用户积分值
0712. * @param int $appid    应用Id
0713. * @param int $uid  用户Id
0714. * @param int $credit   积分编号
0715. */
0716.function uc_user_getcredit($appid, $uid, $credit) {
0717.    return call_user_func(UC_API_FUNC, 'user', 'getcredit', array('appid'=>$appid, 'uid'=>$uid, 'credit'=>$credit));
0718.}
0719. 
0720./**
0721. * 进入短消息界面
0722. *
0723. * @param int $uid  用户ID
0724. * @param int $newpm    是否直接进入newpm
0725. */
0726.function uc_pm_location($uid, $newpm = 0) {
0727.    $apiurl = uc_api_url('pm_client', 'ls', "uid=$uid", ($newpm ? '&folder=newbox' : ''));
0728.    @header("Expires: 0");
0729.    @header("Cache-Control: private, post-check=0, pre-check=0, max-age=0", FALSE);
0730.    @header("Pragma: no-cache");
0731.    @header("location: $apiurl");
0732.}
0733. 
0734./**
0735. * 检查新短消息
0736. *
0737. * @param  int $uid 用户ID
0738. * @param  int $more    详细信息
0739. * @return int      是否存在新短消息
0740. *  2   详细  (短消息数、公共消息数、最后消息时间, 最后消息内容)
0741. *  1   简单  (短消息数、公共消息数、最后消息时间)
0742. *  0   否
0743. */
0744.function uc_pm_checknew($uid, $more = 0) {
0745.    $return = call_user_func(UC_API_FUNC, 'pm', 'check_newpm', array('uid'=>$uid, 'more'=>$more));
0746.    return (!$more || UC_CONNECT == 'mysql') ? $return : uc_unserialize($return);
0747.}
0748. 
0749./**
0750. * 发送短消息
0751. *
0752. * @param int $fromuid      发件人uid 0 为系统消息
0753. * @param mix $msgto        收件人 uid/username 多个逗号分割
0754. * @param mix $subject      标题
0755. * @param mix $message      内容
0756. * @param int $instantly    立即发送 1 立即发送(默认)  0 进入短消息发送界面
0757. * @param int $replypid     回复的消息Id
0758. * @param int $isusername   0 = $msgto 为 uid、1 = $msgto 为 username
0759. * @return
0760. *  >1   发送成功的人数
0761. *  0   收件人不存在
0762. */
0763.function uc_pm_send($fromuid, $msgto, $subject, $message, $instantly = 1, $replypmid = 0, $isusername = 0) {
0764.    if($instantly) {
0765.        $replypmid = @is_numeric($replypmid) ? $replypmid : 0;
0766.        return call_user_func(UC_API_FUNC, 'pm', 'sendpm', array('fromuid'=>$fromuid, 'msgto'=>$msgto, 'subject'=>$subject, 'message'=>$message, 'replypmid'=>$replypmid, 'isusername'=>$isusername));
0767.    } else {
0768.        $fromuid = intval($fromuid);
0769.        $subject = urlencode($subject);
0770.        $msgto = urlencode($msgto);
0771.        $message = urlencode($message);
0772.        $replypmid = @is_numeric($replypmid) ? $replypmid : 0;
0773.        $replyadd = $replypmid ? "&pmid=$replypmid&do=reply" : '';
0774.        $apiurl = uc_api_url('pm_client', 'send', "uid=$fromuid", "&msgto=$msgto&subject=$subject&message=$message$replyadd");
0775.        @header("Expires: 0");
0776.        @header("Cache-Control: private, post-check=0, pre-check=0, max-age=0", FALSE);
0777.        @header("Pragma: no-cache");
0778.        @header("location: ".$apiurl);
0779.    }
0780.}
0781. 
0782./**
0783. * 删除短消息
0784. *
0785. * @param int $uid      用户Id
0786. * @param string $folder    打开的目录 inbox=收件箱,outbox=发件箱
0787. * @param array $pmids      要删除的消息ID数组
0788. * @return
0789. *  >0 成功
0790. *  <=0 失败
0791. */
0792.function uc_pm_delete($uid, $folder, $pmids) {
0793.    return call_user_func(UC_API_FUNC, 'pm', 'delete', array('uid'=>$uid, 'folder'=>$folder, 'pmids'=>$pmids));
0794.}
0795. 
0796./**
0797. * 按照用户删除短消息
0798. *
0799. * @param int $uid      用户Id
0800. * @param array $uids       要删除的消息用户ID数组
0801. * @return
0802. *  >0 成功
0803. *  <=0 失败
0804. */
0805.function uc_pm_deleteuser($uid, $touids) {
0806.    return call_user_func(UC_API_FUNC, 'pm', 'deleteuser', array('uid'=>$uid, 'touids'=>$touids));
0807.}
0808. 
0809./**
0810. * 标记已读/未读状态
0811. *
0812. * @param int $uid      用户Id
0813. * @param array $uids       要标记已读状态的用户ID数组
0814. * @param array $pmids      要标记已读状态的消息ID数组
0815. * @param int $status       1 已读 0 未读
0816. */
0817.function uc_pm_readstatus($uid, $uids, $pmids = array(), $status = 0) {
0818.    return call_user_func(UC_API_FUNC, 'pm', 'readstatus', array('uid'=>$uid, 'uids'=>$uids, 'pmids'=>$pmids, 'status'=>$status));
0819.}
0820. 
0821./**
0822. * 获取短消息列表
0823. *
0824. * @param int $uid      用户Id
0825. * @param int $page         当前页
0826. * @param int $pagesize     每页最大条目数
0827. * @param string $folder    打开的目录 newbox=未读消息,inbox=收件箱,outbox=发件箱
0828. * @param string $filter    过滤方式 newpm=未读消息,systempm=系统消息,announcepm=公共消息
0829.                $folder     $filter
0830.                --------------------------
0831.                newbox
0832.                inbox       newpm
0833.                        systempm
0834.                        announcepm
0835.                outbox      newpm
0836.                searchbox   *
0837. * @param string $msglen    截取的消息文字长度
0838. * @return array('count' => 消息总数, 'data' => 短消息数据)
0839. */
0840.function uc_pm_list($uid, $page = 1, $pagesize = 10, $folder = 'inbox', $filter = 'newpm', $msglen = 0) {
0841.    $uid = intval($uid);
0842.    $page = intval($page);
0843.    $pagesize = intval($pagesize);
0844.    $return = call_user_func(UC_API_FUNC, 'pm', 'ls', array('uid'=>$uid, 'page'=>$page, 'pagesize'=>$pagesize, 'folder'=>$folder, 'filter'=>$filter, 'msglen'=>$msglen));
0845.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0846.}
0847. 
0848./**
0849. * 忽略未读消息提示
0850. *
0851. * @param int $uid      用户Id
0852. */
0853.function uc_pm_ignore($uid) {
0854.    $uid = intval($uid);
0855.    return call_user_func(UC_API_FUNC, 'pm', 'ignore', array('uid'=>$uid));
0856.}
0857. 
0858./**
0859. * 获取短消息内容
0860. *
0861. * @param int $uid      用户Id
0862. * @param int $pmid     消息Id
0863. * @param int $touid        消息对方用户Id
0864. * @param int $daterange    日期范围 1=今天,2=昨天,3=前天,4=上周,5=更早
0865. * @return array() 短消息内容数组
0866. */
0867.function uc_pm_view($uid, $pmid, $touid = 0, $daterange = 1) {
0868.    $uid = intval($uid);
0869.    $touid = intval($touid);
0870.    $pmid = @is_numeric($pmid) ? $pmid : 0;
0871.    $return = call_user_func(UC_API_FUNC, 'pm', 'view', array('uid'=>$uid, 'pmid'=>$pmid, 'touid'=>$touid, 'daterange'=>$daterange));
0872.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0873.}
0874. 
0875./**
0876. * 获取单条短消息内容
0877. *
0878. * @param int $uid      用户Id
0879. * @param int $pmid     消息Id
0880. * @param int $type     0 = 获取指定单条消息
0881.                1 = 获取指定用户发的最后单条消息
0882.                2 = 获取指定用户收的最后单条消息
0883. * @return array() 短消息内容数组
0884. */
0885.function uc_pm_viewnode($uid, $type = 0, $pmid = 0) {
0886.    $uid = intval($uid);
0887.    $pmid = @is_numeric($pmid) ? $pmid : 0;
0888.    $return = call_user_func(UC_API_FUNC, 'pm', 'viewnode', array('uid'=>$uid, 'pmid'=>$pmid, 'type'=>$type));
0889.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0890.}
0891. 
0892./**
0893. * 获取黑名单
0894. *
0895. * @param int $uid      用户Id
0896. * @return string 黑名单内容
0897. */
0898.function uc_pm_blackls_get($uid) {
0899.    $uid = intval($uid);
0900.    return call_user_func(UC_API_FUNC, 'pm', 'blackls_get', array('uid'=>$uid));
0901.}
0902. 
0903./**
0904. * 设置黑名单
0905. *
0906. * @param int $uid      用户Id
0907. * @param int $blackls      黑名单内容
0908. */
0909.function uc_pm_blackls_set($uid, $blackls) {
0910.    $uid = intval($uid);
0911.    return call_user_func(UC_API_FUNC, 'pm', 'blackls_set', array('uid'=>$uid, 'blackls'=>$blackls));
0912.}
0913. 
0914./**
0915. * 添加黑名单项目
0916. *
0917. * @param int $uid      用户Id
0918. * @param int $username     用户名
0919. */
0920.function uc_pm_blackls_add($uid, $username) {
0921.    $uid = intval($uid);
0922.    return call_user_func(UC_API_FUNC, 'pm', 'blackls_add', array('uid'=>$uid, 'username'=>$username));
0923.}
0924. 
0925./**
0926. * 删除黑名单项目
0927. *
0928. * @param int $uid      用户Id
0929. * @param int $username     用户名
0930. */
0931.function uc_pm_blackls_delete($uid, $username) {
0932.    $uid = intval($uid);
0933.    return call_user_func(UC_API_FUNC, 'pm', 'blackls_delete', array('uid'=>$uid, 'username'=>$username));
0934.}
0935. 
0936./**
0937. * 获取域名解析表
0938. *
0939. * @return array()
0940. */
0941.function uc_domain_ls() {
0942.    $return = call_user_func(UC_API_FUNC, 'domain', 'ls', array('1'=>1));
0943.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0944.}
0945. 
0946./**
0947. * 积分兑换请求
0948. *
0949. * @param int $uid      用户ID
0950. * @param int $from     原积分
0951. * @param int $to       目标积分
0952. * @param int $toappid      目标应用ID
0953. * @param int $amount       积分数额
0954. * @return
0955. *      1  : 成功
0956. *  0  : 失败
0957. */
0958.function uc_credit_exchange_request($uid, $from, $to, $toappid, $amount) {
0959.    $uid = intval($uid);
0960.    $from = intval($from);
0961.    $toappid = intval($toappid);
0962.    $to = intval($to);
0963.    $amount = intval($amount);
0964.    return uc_api_post('credit', 'request', array('uid'=>$uid, 'from'=>$from, 'to'=>$to, 'toappid'=>$toappid, 'amount'=>$amount));
0965.}
0966. 
0967./**
0968. * 返回指定的相关TAG数据
0969. *
0970. * @param string $tagname   TAG名称
0971. * @param int $totalnum     返回数据的条目数
0972. * @return array() 序列化过的数组,数组内容为当前或其他应用的相关TAG数据
0973. */
0974.function uc_tag_get($tagname, $nums = 0) {
0975.    $return = call_user_func(UC_API_FUNC, 'tag', 'gettag', array('tagname'=>$tagname, 'nums'=>$nums));
0976.    return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);
0977.}
0978. 
0979./**
0980. * 修改头像
0981. *
0982. * @param   int     $uid    用户ID
0983. * @param   string  $type   头像类型 real OR virtual 默认为 virtual
0984. * @return  string
0985. */
0986.function uc_avatar($uid, $type = 'virtual', $returnhtml = 1) {
0987.    $uid = intval($uid);
0988.    $uc_input = uc_api_input("uid=$uid");
0989.    $uc_avatarflash = UC_API.'/images/camera.swf?inajax=1&amp;appid='.UC_APPID.'&amp;input='.$uc_input.'&amp;agent='.md5($_SERVER['HTTP_USER_AGENT']).'&amp;ucapi='.urlencode(UC_API).'&amp;avatartype='.$type;
0990.    if($returnhtml) {
0991.        return '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="447" height="477" id="mycamera" align="middle">
0992.            <param name="allowScriptAccess" value="always" />
0993.            <param name="scale" value="exactfit" />
0994.            <param name="wmode" value="transparent" />
0995.            <param name="quality" value="high" />
0996.            <param name="bgcolor" value="#ffffff" />
0997.            <param name="movie" value="'.$uc_avatarflash.'" />
0998.            <param name="menu" value="false" />
0999.            <embed src="'.$uc_avatarflash.'" quality="high" bgcolor="#ffffff" width="447" height="477" name="mycamera" align="middle" allowScriptAccess="always" allowFullScreen="false" scale="exactfit"  wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
1000.        </object>';
1001.    } else {
1002.        return array(
1003.            'width', '447',
1004.            'height', '477',
1005.            'scale', 'exactfit',
1006.            'src', $uc_avatarflash,
1007.            'id', 'mycamera',
1008.            'name', 'mycamera',
1009.            'quality','high',
1010.            'bgcolor','#ffffff',
1011.            'wmode','transparent',
1012.            'menu', 'false',
1013.            'swLiveConnect', 'true',
1014.            'allowScriptAccess', 'always'
1015.        );
1016.    }
1017.}
1018. 
1019./**
1020. * 邮件队列
1021. *
1022. * @param   string  $uids       用户名id,多个用逗号(,)隔开
1023. * @param   string  $emails     邮件地址,多个用逗号隔开
1024. * @param   string  $subject    邮件标题
1025. * @param   string  $message    邮件内容
1026. * @param   string  $charset    邮件字符集,可选参数,默认为gbk
1027. * @param   boolean $htmlon     是否按html格式发送邮件,可选参数,默认为否
1028. * @param   integer $level      邮件级别,可选参数,取值0-127,默认为1,越大发送的优先级越高,为0时不入库,直接发送,会影响当前进程速度,慎用
1029. * @return  integer
1030. *      =0 : 失败
1031. *      >0 : 成功,返回插入记录的id,如果是多条则返回最后一条记录的id,若level等于0,则返回1
1032. */
1033.function uc_mail_queue($uids, $emails, $subject, $message, $frommail = '', $charset = 'gbk', $htmlon = FALSE, $level = 1) {
1034.    return call_user_func(UC_API_FUNC, 'mail', 'add', array('uids' => $uids, 'emails' => $emails, 'subject' => $subject, 'message' => $message, 'frommail' => $frommail, 'charset' => $charset, 'htmlon' => $htmlon, 'level' => $level));
1035.}
1036. 
1037./**
1038. * 检测是否存在指定头像
1039. * @param   integer     $uid    用户id
1040. * @param   string      $size   头像尺寸,取值范围(big,middle,small),默认为 middle
1041. * @param   string      $type   头像类型,取值范围(virtual,real),默认为virtual
1042. * @return  boolean
1043. *      true : 头像存在
1044. *      false: 头像不存在
1045. */
1046.function uc_check_avatar($uid, $size = 'middle', $type = 'virtual') {
1047.    $url = UC_API."/avatar.php?uid=$uid&amp;size=$size&amp;type=$type&amp;check_file_exists=1";
1048.    $res = @file_get_contents($url);
1049.    if($res == 1) {
1050.        return 1;
1051.    } else {
1052.        return 0;
1053.    }
1054.}
1055. 
1056./**
1057. * 检测uc_server的数据库版本和程序版本
1058. * @return mixd
1059. *      array('db' => 'xxx', 'file' => 'xxx');
1060. *      null 无法调用到接口
1061. *      string 文件版本低于1.5
1062. */
1063.function uc_check_version() {
1064.    $return = uc_api_post('version', 'check', array());
1065.    $data = uc_unserialize($return);
1066.    return is_array($data) ? $data : $return;
1067.}
1068. 
1069.?>

作者: sinkingboat   发布时间: 2009-08-22