Beispiel #1
0
 /**
  * @brief modify by luhaixia 获取全局定义了Hook和App域的Hook,如果都没有定义,则使用默认的Hook
  *
  * @return  public function 
  * @retval   
  * @see 
  * @note 
  * @author luhaixia
  * @date 2012/03/28 13:44:21
  **/
 protected static function creatObjHook()
 {
     if (Saf_Base_Hook::$boolCreateHook) {
         //已经创建了Hook则直接返回
         return true;
     }
     Saf_Base_Hook::$arrObjHook = array();
     $strGlobalSafHook = Bd_Conf::getConf('/saf/hook_name');
     if (!empty($strGlobalSafHook)) {
         if (class_exists($strGlobalSafHook)) {
             Saf_Base_Hook::$arrObjHook[] = new $strGlobalSafHook();
         } else {
             Saf_SmartMain::setSafLog("创建的勾子类({$strGlobalSafHook})不存在", 2);
         }
     }
     $strAppSafHook = Bd_Conf::getAppConf('/saf/hook_name');
     if (!empty($strAppSafHook)) {
         if (class_exists($strAppSafHook)) {
             Saf_Base_Hook::$arrObjHook[] = new $strAppSafHook();
         } else {
             Saf_SmartMain::setSafLog("创建的勾子类({$strAppSafHook})不存在", 2);
         }
     }
     if (count(Saf_Base_Hook::$arrObjHook) == 0) {
         $strHookClassName = 'Saf_Base_Hook';
         Saf_SmartMain::setSafLog("没有设置需要创建的勾子类,使用默认的({$strHookClassName})", 2);
         Saf_Base_Hook::$arrObjHook[] = new $strHookClassName();
     }
     Saf_Base_Hook::$boolCreateHook = true;
 }
Beispiel #2
0
 /**
  * @brief 保存用户信息到passport
  *
  * @author cuichao02 
  * @date 2011/02/21
  **/
 public static function saveModDatat()
 {
     $arrSavePassport = Saf_SmartMain::getSavePassport();
     if (is_array($arrSavePassport) && count($arrSavePassport) > 0) {
         $safConf = Bd_Conf::getAppConf('/saf');
         if (empty($safConf)) {
             $safConf = Bd_Conf::getConf('/saf');
         }
         $intPassportSaveLen = intval($safConf['passport_save_len']);
         if ($intPassportSaveLen == 0) {
             $intPassportSaveLen = 32;
         }
         Bd_Passport::initDataBuf($arrCachePass, $intPassportSaveLen);
         foreach ($arrSavePassport as $bit => $v) {
             Bd_Passport::modDataBufByBit($arrCachePass, intval($bit), intval($v));
         }
         $arrOutput = Bd_Passport::modData($_COOKIE['BDUSS'], '', '', $arrCachePass['data'], $arrCachePass['mask']);
         if ($arrOutput['status'] != 0 || $arrOutput == false) {
             Saf_SmartMain::setSafLog("保存到passport服务器出错(" . var_export($arrOutput, true) . ")", 2);
             Saf_Base_Hook::warningAction('save_passport', 'system busy');
             return false;
         }
     }
     return true;
 }
Beispiel #3
0
 /**
  * @brief 设置用户信息数据
  * @return success-array failed-false
  * @retval array/boolean 
  * @author chenyijie
  * @date 2011/08/07 21:59:25
  **/
 public static function setUserInfo($arrValue)
 {
     if (parent::__setDict(parent::USER_INFO, $arrValue) === true) {
         return parent::__getDict(parent::USER_INFO);
     } else {
         Saf_SmartMain::setSafLog("保存用户信息出错", 1);
         return false;
     }
 }
Beispiel #4
0
 /**
  * @brief 设置公共字典数据
  *
  * @return 失败false, 成功array()
  * @author cuichao02 
  * @date 2011/02/21
  **/
 public static function setPublic($arrValue)
 {
     if (parent::__setDict(parent::PUBLIC_PARAM, $arrValue) === true) {
         return parent::__getDict(parent::PUBLIC_PARAM);
     } else {
         Saf_SmartMain::setSafLog("保存公共字典数据时出错", 1);
         return false;
     }
 }
Beispiel #5
0
 /**
  * @brief 设置Log数据
  *
  * @param array(key=>value)
  * @return 失败false, 成功array()
  * @author cuichao02 
  * @date 2011/02/21
  **/
 public static function setLogNotice($arrValue)
 {
     if (parent::__setDict(parent::LOG_NOTICE, $arrValue) === true) {
         Saf_Base_Log::addLogNotice($arrValue);
         return parent::__getDict(parent::LOG_NOTICE);
     } else {
         Saf_SmartMain::setSafLog("设置log字典数据报错(" . var_export($arrValue, true) . ")", 1);
         return false;
     }
 }
Beispiel #6
0
 /**
  * @brief 按照saf.conf中的配置初始化$arrActionObj数组,
  *        App域的配置将覆盖全局配置,若用户未提供配置,则按照默认设置开启流程
  *
  * @see adapterStart() 
  * @author luhaixia
  * @date 2012/03/28 14:16:42
  **/
 private static function initCommonAction()
 {
     $arrConf = Bd_Conf::getAppConf('saf/action');
     if (empty($arrConf)) {
         $arrConf = Bd_Conf::getConf('saf/action');
     }
     foreach ($arrConf as $key => $value) {
         if (isset($arrConf[$key]) && array_key_exists(strtolower($key), self::$arrCommonAction)) {
             self::$arrCommonAction[strtolower($key)] |= intval($value);
         }
     }
     foreach (self::$arrCommonAction as $key => $value) {
         if ($value > 0) {
             $class = "Saf_Action_" . ucfirst($key) . "Action";
             if (class_exists($class)) {
                 $obj = new $class();
                 self::$arrActionObj[$key] = $obj;
             } else {
                 Saf_SmartMain::setSafLog("通用业务流程加载失败,class {$class} does not exist.", 2);
             }
         }
     }
 }
Beispiel #7
0
 /**
  * @brief 将适配信息保存在字典中
  *
  * @return 失败false, 成功array()
  * @author niuyunkun 
  * * @date 2012/07/06
  **/
 public static function setAdaptInfo($arrValue)
 {
     if (parent::__setDict(parent::ADAPT_INFO, $arrValue) === true) {
         return parent::__getDict(parent::ADAPT_INFO);
     } else {
         Saf_SmartMain::setSafLog("保存适配信息出错", 1);
         return false;
     }
 }
Beispiel #8
0
 /**
  * @brief 由子类的construct函数调用,初始化$this->objHook对象
  *
  * @param  string $actionName action名字符串与配置文件对应
  * @see 各子类的__construct()
  * @author chenyijie
  * @date 2012/10/15 19:49:12
  **/
 protected function actionConstruct($actionName)
 {
     $arrHook = Saf_SmartMain::getHook();
     if (count($arrHook) > 0 && isset($arrHook[$actionName])) {
         $hookClassName = $arrHook[$actionName];
         if (class_exists($hookClassName)) {
             $this->objHook = new $hookClassName();
         } else {
             Saf_SmartMain::setSafLog("class (" . $hookClassName . ") does not exist", 2);
         }
     }
 }
Beispiel #9
0
 /**
  * @brief 去掉指定key的cgi参数*
  *
  * @params  array('key1', 'key2');
  * @return  失败false成功true;
  * @see 
  * @note 
  * @author luhaixia
  * @date 2012/05/08 14:29:54
  **/
 public static function unsetCgi($arrKeys)
 {
     if (parent::DICT_WRITE === (parent::$arrDict[parent::REQUEST_PARAM]['status'] & parent::DICT_WRITE)) {
         if (!is_array($arrKeys)) {
             $arrKeys = array($arrKeys);
         }
         foreach ($arrKeys as $key) {
             if (isset(parent::$arrDict[parent::REQUEST_PARAM]['data'][$key])) {
                 unset(parent::$arrDict[parent::REQUEST_PARAM]['data'][$key]);
             }
         }
         return true;
     } else {
         Saf_SmartMain::setSafLog("没有写字典(REQUEST_PARAM)的权限", 0);
         return false;
     }
 }
Beispiel #10
0
 /**
  * @brief 修改保存在passport字典中的数据
  *
  * @param int $bit 设置第几位
  * @param int $v   设置值
  * @return 失败false, 成功array()
  * @note 此接口只能在Hook中才会调用成功
  * @author cuichao02 
  * @date 2011/02/21
  **/
 public static function setSavePassport($bit, $v)
 {
     $arrValue[$bit] = $v;
     if (parent::__setDict(parent::SAVE_PASSPORT, $arrValue) === true) {
         return parent::__getDict(parent::SAVE_PASSPORT);
     } else {
         Saf_SmartMain::setSafLog("设置到passport字典数据报错(" . var_export($arrValue, true) . ")", 1);
         return false;
     }
 }