function openSingleFunction($function)
 {
     $funcName = $function['funname'];
     // get opened function list for current publich account;
     $queryname = M('Token_open')->where(array('token' => $this->token, 'uid' => $this->websiteUserId))->field('queryname')->find();
     $openedFuncNames = array();
     if ($queryname) {
         $openedFuncNames = array_unique(explode(',', $queryname['queryname']));
     } else {
         M('Token_open')->add(array('uid' => $this->websiteUserId, 'token' => $this->token));
     }
     if (in_array($funcName, $openedFuncNames)) {
         // ingore functions which has been opened before
         return;
     }
     array_push($openedFuncNames, $funcName);
     // try to load template data
     $templateDataLoader = new TemplateDataLoader($this->websiteUserId, $this->uname, $this->token);
     $templateDataLoader->loadTemplateData($funcName);
     // update token_open table
     M('Token_open')->where(array('uid' => $this->websiteUserId, 'token' => $this->token))->setField('queryname', implode(',', $openedFuncNames));
     session('opened_funcs', $openedFuncNames);
     if (isset($function['keywords']) && !empty($function['keywords'])) {
         $keywords = explode(' ', $function['keywords']);
         $kwds_db = M('keyword');
         $kwd_data['uid'] = $this->websiteUserId;
         $kwd_data['token'] = $this->token;
         $kwd_data['type'] = 2;
         $kwd_data['module'] = 'img';
         $kwd_data['function'] = $funcName;
         $kwd_data['pid'] = 0;
         foreach ($keywords as $vo) {
             $kwd_data['keyword'] = $vo;
             $kwds_db->add($kwd_data);
         }
     }
 }
 public function add()
 {
     $server_token = session('token');
     $func_id = $this->_get('id');
     $fun = $this->queryFunction($func_id, $server_token);
     if (!empty($fun)) {
         $templateDataLoader = new TemplateDataLoader(session('uid'), session('uname'), session('token'));
         $templateDataLoader->loadTemplateData($fun['funname']);
         //该用户已经购买该功能组
         $ret = $this->updateOpenedFuncs('add', $server_token, $fun['funname']);
         if ($ret) {
             if (isset($fun['keywords']) && !empty($fun['keywords'])) {
                 $keywords = explode(' ', $fun['keywords']);
                 $kwds_db = M('keyword');
                 $kwd_data['uid'] = session('uid');
                 $kwd_data['token'] = session('token');
                 $kwd_data['type'] = 2;
                 $kwd_data['module'] = 'img';
                 $kwd_data['function'] = $fun['funname'];
                 $kwd_data['pid'] = 0;
                 foreach ($keywords as $vo) {
                     $kwd_data['keyword'] = $vo;
                     $kwds_db->add($kwd_data);
                 }
             }
             echo 1;
         } else {
             echo 2;
         }
     } else {
         echo 2;
     }
 }