Esempio n. 1
0
function GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray = false)
{
    global $DB, $MAIN_MODULE_EVENTS, $MAIN_MODULE_EVENTS_INIT;
    if ($MAIN_MODULE_EVENTS_INIT === false) {
        global $CACHE_MANAGER;
        if ($CACHE_MANAGER->Read(3600, "b_module_to_module")) {
            $arEvents = $CACHE_MANAGER->Get("b_module_to_module");
        } else {
            $arEvents = array();
            $rs = $DB->Query("\n\t\t\t\tSELECT\n\t\t\t\t\t*\n\t\t\t\tFROM\n\t\t\t\t\tb_module_to_module m2m\n\t\t\t\tINNER JOIN b_module m ON (m2m.TO_MODULE_ID = m.ID)\n\t\t\t\tORDER BY SORT\n\t\t\t");
            while ($ar = $rs->Fetch()) {
                $ar['TO_NAME'] = CModule::_GetName($ar);
                $ar["~FROM_MODULE_ID"] = strtoupper($ar["FROM_MODULE_ID"]);
                $ar["~MESSAGE_ID"] = strtoupper($ar["MESSAGE_ID"]);
                if (strlen($ar["TO_METHOD_ARG"]) > 0) {
                    $ar["TO_METHOD_ARG"] = unserialize($ar["TO_METHOD_ARG"]);
                } else {
                    $ar["TO_METHOD_ARG"] = array();
                }
                $arEvents[] = $ar;
            }
            $CACHE_MANAGER->Set("b_module_to_module", $arEvents);
        }
        if (!is_array($arEvents)) {
            $arEvents = array();
        }
        $copy_MAIN_MODULE_EVENTS = $MAIN_MODULE_EVENTS;
        foreach ($arEvents as $ar) {
            if (intval($ar["VERSION"]) < 2) {
                $MAIN_MODULE_EVENTS[$ar["~FROM_MODULE_ID"]][$ar["~MESSAGE_ID"]][] = $ar;
            }
        }
        // need to re-sort because of AddEventHandler() calls
        foreach ($copy_MAIN_MODULE_EVENTS as $module => $temp1) {
            foreach ($copy_MAIN_MODULE_EVENTS[$module] as $message => $temp2) {
                sortByColumn($MAIN_MODULE_EVENTS[$module][$message], "SORT");
            }
        }
        $MAIN_MODULE_EVENTS_INIT = true;
    }
    $MODULE_ID = strtoupper($MODULE_ID);
    $MESSAGE_ID = strtoupper($MESSAGE_ID);
    if (array_key_exists($MODULE_ID, $MAIN_MODULE_EVENTS) && array_key_exists($MESSAGE_ID, $MAIN_MODULE_EVENTS[$MODULE_ID])) {
        $arrResult = $MAIN_MODULE_EVENTS[$MODULE_ID][$MESSAGE_ID];
    } else {
        $arrResult = array();
    }
    if ($bReturnArray) {
        return $arrResult;
    } else {
        $resRS = new CDBResult();
        $resRS->InitFromArray($arrResult);
        return $resRS;
    }
}
Esempio n. 2
0
function GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray = false)
{
	global $DB, $MAIN_MODULE_EVENTS, $MAIN_MODULE_EVENTS_INIT;
	if($MAIN_MODULE_EVENTS_INIT === false)
	{
		global $CACHE_MANAGER;
		if($CACHE_MANAGER->Read(3600, "b_module_to_module"))
			$arEvents = $CACHE_MANAGER->Get("b_module_to_module");
		else
		{
			$arEvents = array();
			$rs = $DB->Query("
				SELECT
					*
				FROM
					b_module_to_module m2m
				INNER JOIN b_module m ON (m2m.TO_MODULE_ID = m.ID)
				ORDER BY SORT
			");
			while($ar = $rs->Fetch())
			{
				$ar['TO_NAME'] = CModule::_GetName($ar);
				$ar["~FROM_MODULE_ID"]=strtoupper($ar["FROM_MODULE_ID"]);
				$ar["~MESSAGE_ID"]=strtoupper($ar["MESSAGE_ID"]);
				if (strlen($ar["TO_METHOD_ARG"]) > 0)
					$ar["TO_METHOD_ARG"] = unserialize($ar["TO_METHOD_ARG"]);
				else
					$ar["TO_METHOD_ARG"] = array();
				$arEvents[] = $ar;
			}
			$CACHE_MANAGER->Set("b_module_to_module", $arEvents);
		}

		if(!is_array($arEvents))
			$arEvents = Array();

		$copy_MAIN_MODULE_EVENTS = $MAIN_MODULE_EVENTS;

		foreach($arEvents as $ar)
		{
			if (intval($ar["VERSION"]) < 2)
				$MAIN_MODULE_EVENTS[$ar["~FROM_MODULE_ID"]][$ar["~MESSAGE_ID"]][] = $ar;
		}

		// need to re-sort because of AddEventHandler() calls
		$funcSort = create_function('$a, $b', 'if($a["SORT"] == $b["SORT"]) return 0; return ($a["SORT"] < $b["SORT"])? -1 : 1;');
		foreach(array_keys($copy_MAIN_MODULE_EVENTS) as $module)
			foreach(array_keys($copy_MAIN_MODULE_EVENTS[$module]) as $message)
				uasort($MAIN_MODULE_EVENTS[$module][$message], $funcSort);

		$MAIN_MODULE_EVENTS_INIT = true;
	}

	$MODULE_ID = strtoupper($MODULE_ID);
	$MESSAGE_ID = strtoupper($MESSAGE_ID);
	if(array_key_exists($MODULE_ID, $MAIN_MODULE_EVENTS) && array_key_exists($MESSAGE_ID, $MAIN_MODULE_EVENTS[$MODULE_ID]))
		$arrResult = $MAIN_MODULE_EVENTS[$MODULE_ID][$MESSAGE_ID];
	else
		$arrResult = Array();

	if($bReturnArray)
	{
		return $arrResult;
	}
	else
	{
		$resRS = new CDBResult;
		$resRS->InitFromArray($arrResult);
		return $resRS;
	}
}