/** * @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; }
/** * @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; }
/** * @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; } }
/** * @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; } }
/** * @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; } }
/** * @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); } } } }
/** * @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; } }
/** * @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); } } }
/** * @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; } }
/** * @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; } }