public function getParameterAnnotations(\ReflectionParameter $parameter) { $class = $parameter->getDeclaringClass() ?: 'Closure'; $method = $parameter->getDeclaringFunction(); if (!$method->isUserDefined()) { return array(); } $context = 'parameter ' . ($class === 'Closure' ? $class : $class->getName()) . '::' . $method->getName() . '($' . $parameter->getName() . ')'; if ($class === 'Closure') { $this->parser->setImports($this->getClosureImports($method)); } else { $this->parser->setImports($this->getImports($class)); $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class)); } $lines = file($method->getFileName()); $lines = array_slice($lines, $start = $method->getStartLine() - 1, $method->getEndLine() - $start); $methodBody = Implode($lines); $methodBody = str_replace("\n", null, $methodBody); $signature = preg_split('/\\)\\s*\\{/', $methodBody); $signature = $signature[0]; $signature = substr($signature, strpos($signature, "function")); if (preg_match_all('/\\/\\*\\*(.*?)\\*\\/' . '.*?\\$(\\w+)/', $signature, $matches)) { $docComments = $matches[1]; $names = $matches[2]; for ($i = 0, $len = count($names); $i < $len; ++$i) { if ($names[$i] === $parameter->name) { return $this->parser->parse($docComments[$i], $context); } } } return array(); }
protected function _CacheBadges(&$Sender) { $Discussion = $Sender->Data('Discussion'); $Comments = $Sender->Data('CommentData'); $TopPostersModule = new TopPostersModule(); $UserIDList = array(); if ($Discussion) { $UserIDList[$Discussion->InsertUserID] = 1; } if ($Comments && $Comments->NumRows()) { $Comments->DataSeek(-1); while ($Comment = $Comments->NextRow()) { $UserIDList[$Comment->InsertUserID] = 1; } } $UserBadges = array(); if (sizeof($UserIDList)) { $Limit = Gdn::Config('TopPosters.Limit'); $Limit = !$Limit || $Limit == 0 ? 10 : $Limit; $arrExcludedUsers = Gdn::Config('TopPosters.Excluded'); $usersExcluded = is_array($arrExcludedUsers) ? ' AND UserID not in (' . Implode(',', $arrExcludedUsers) . ')' : ""; $TopPostersModule->GetData(); $Badges = $TopPostersModule->getTopPosters(); $Badges->DataSeek(-1); $i = 1; while ($UserBadge = $Badges->NextRow()) { $UserBadges[$UserBadge->UserID] = $i++; } } $Sender->SetData('Plugin-Badge-Counts', $UserBadges); }
protected function ReadInternal($Buffer, $Length, $SherlockFunction) { if ($Buffer->Remaining() === 0) { throw new InvalidPacketException('Failed to read any data from socket', InvalidPacketException::BUFFER_EMPTY); } $Header = $Buffer->GetLong(); if ($Header === -1) { // We don't have to do anything } else { if ($Header === -2) { $Packets = []; $IsCompressed = false; $ReadMore = false; do { $RequestID = $Buffer->GetLong(); switch ($this->Engine) { case SourceQuery::GOLDSOURCE: $PacketCountAndNumber = $Buffer->GetByte(); $PacketCount = $PacketCountAndNumber & 0xf; $PacketNumber = $PacketCountAndNumber >> 4; break; case SourceQuery::SOURCE: $IsCompressed = ($RequestID & 0x80000000) !== 0; $PacketCount = $Buffer->GetByte(); $PacketNumber = $Buffer->GetByte() + 1; if ($IsCompressed) { $Buffer->GetLong(); // Split size $PacketChecksum = $Buffer->GetUnsignedLong(); } else { $Buffer->GetShort(); // Split size } break; } $Packets[$PacketNumber] = $Buffer->Get(); $ReadMore = $PacketCount > sizeof($Packets); } while ($ReadMore && $SherlockFunction($Buffer, $Length)); $Data = Implode($Packets); // TODO: Test this if ($IsCompressed) { // Let's make sure this function exists, it's not included in PHP by default if (!Function_Exists('bzdecompress')) { throw new \RuntimeException('Received compressed packet, PHP doesn\'t have Bzip2 library installed, can\'t decompress.'); } $Data = bzdecompress($Data); if (CRC32($Data) !== $PacketChecksum) { throw new InvalidPacketException('CRC32 checksum mismatch of uncompressed packet data.', InvalidPacketException::CHECKSUM_MISMATCH); } } $Buffer->Set(SubStr($Data, 4)); } else { throw new InvalidPacketException('Socket read: Raw packet header mismatch. (0x' . DecHex($Header) . ')', InvalidPacketException::PACKET_HEADER_MISMATCH); } } return $Buffer; }
public function Read($Length = 1400) { $this->Buffer->Set(FRead($this->Socket, $Length)); if ($this->Buffer->Remaining() > 0 && $this->Buffer->GetLong() == -2) { $Packets = array(); $IsCompressed = false; $ReadMore = false; do { $RequestID = $this->Buffer->GetLong(); switch ($this->Engine) { case CI_SourceQuery::GOLDSOURCE: $PacketCountAndNumber = $this->Buffer->GetByte(); $PacketCount = $PacketCountAndNumber & 0xf; $PacketNumber = $PacketCountAndNumber >> 4; break; case CI_SourceQuery::SOURCE: $IsCompressed = ($RequestID & 0x80000000) != 0; $PacketCount = $this->Buffer->GetByte(); $PacketNumber = $this->Buffer->GetByte() + 1; if ($IsCompressed) { $this->Buffer->GetLong(); // Split size $PacketChecksum = $this->Buffer->GetUnsignedLong(); } else { $this->Buffer->GetShort(); // Split size } break; } $Packets[$PacketNumber] = $this->Buffer->Get(); $ReadMore = $PacketCount > sizeof($Packets); } while ($ReadMore && $this->Sherlock($Length)); $Buffer = Implode($Packets); // TODO: Test this if ($IsCompressed) { // Let's make sure this function exists, it's not included in PHP by default if (!Function_Exists('bzdecompress')) { throw new RuntimeException('Received compressed packet, PHP doesn\'t have Bzip2 library installed, can\'t decompress.'); } $Data = bzdecompress($Data); if (CRC32($Data) != $PacketChecksum) { throw new SourceQueryException('CRC32 checksum mismatch of uncompressed packet data.'); } } $this->Buffer->Set(SubStr($Buffer, 4)); } }
public function GetData() { $SQL = Gdn::SQL(); $Limit = Gdn::Config('TopPosters.Limit'); $Limit = !$Limit || $Limit == 0 ? 10 : $Limit; $Session = Gdn::Session(); /* $SQL ->Select('u.Name, u.CountComments, u.CountDiscussions') ->From('User u') ->Where('u.CountComments >','0') ->Where('u.CountComments is not null') ->OrderBy('u.CountComments','desc') ->Limit($Limit); */ $arrExcludedUsers = Gdn::Config('TopPosters.Excluded'); $usersExcluded = is_array($arrExcludedUsers) ? ' AND UserID not in (' . Implode(',', $arrExcludedUsers) . ')' : ""; $this->_TopPosters = $SQL->Query('SELECT UserID, Name, if(CountDiscussions is NULL,0,CountDiscussions) + if(CountComments is NULL,0,CountComments) as AllPosted FROM ' . $SQL->Database->DatabasePrefix . 'User WHERE 1 ' . $usersExcluded . ' HAVING AllPosted > 0 order by AllPosted desc, Name asc LIMIT ' . $Limit); }
static function generate($depth = False) { # Get current Filter string $filter = RawUrlDecode(Get_Query_Var('filter')); if (!empty($filter)) { $str_filter = $filter; } elseif (Is_Singular()) { $str_filter = StrToLower(Get_The_Title()); } else { $str_filter = ''; } # Explode Filter string $arr_current_filter = empty($str_filter) ? array() : PReg_Split('/(?<!^)(?!$)/u', $str_filter); Array_UnShift($arr_current_filter, ''); $arr_filter = array(); # This will be the function result $filter_part = ''; # Check if we are inside a taxonomy archive $taxonomy_term = Is_Tax() ? Get_Queried_Object() : Null; foreach ($arr_current_filter as $filter_letter) { $filter_part .= $filter_letter; $arr_available_filters = self::getFilters($filter_part, $taxonomy_term); if (Count($arr_available_filters) <= 1) { break; } $active_filter_part = MB_SubStr(Implode($arr_current_filter), 0, MB_StrLen($filter_part) + 1); $arr_filter_line = array(); foreach ($arr_available_filters as $available_filter) { $arr_filter_line[$available_filter] = (object) array('filter' => MB_StrToUpper(MB_SubStr($available_filter, 0, 1)) . MB_SubStr($available_filter, 1), 'link' => Post_Type::getArchiveLink($available_filter, $taxonomy_term), 'active' => $active_filter_part == $available_filter, 'disabled' => False); } $arr_filter[] = $arr_filter_line; # Check filter depth limit if ($depth && Count($arr_filter) >= $depth) { break; } } # Run a filter $arr_filter = Apply_Filters('glossary_prefix_filter_links', $arr_filter, $depth); return $arr_filter; }
} #------------------------------------------------------------------------------- $__USER = $GLOBALS['__USER']; #------------------------------------------------------------------------------- $Path = Tree_Path('Groups', (int) $__USER['GroupID'], 'ID'); #------------------------------------------------------------------------------- switch (ValueOf($Path)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return ERROR | @Trigger_Error(400); case 'array': #--------------------------------------------------------------------------- $Result = array(); #--------------------------------------------------------------------------- $Where = array(SPrintF("((`GroupID` IN (%s) OR `UserID` = %u) AND `IsActive` = 'yes') OR ((SELECT COUNT(*) FROM `OrdersOwners` WHERE `OrdersOwners`.`ServiceID` = `Services`.`ID` AND `UserID` = %u) > 0)", Implode(',', $Path), $__USER['ID'], $__USER['ID']), "`IsHidden` != 'yes'"); #--------------------------------------------------------------------------- $Services = DB_Select('Services', array('ID', 'Code', 'Item', 'ServicesGroupID', 'IsActive', '(SELECT `Name` FROM `ServicesGroups` WHERE `ServicesGroups`.`ID` = `Services`.`ServicesGroupID`) as `ServicesGroupName`', '(SELECT `SortID` FROM `ServicesGroups` WHERE `ServicesGroups`.`ID` = `Services`.`ServicesGroupID`) as `ServicesSortID`'), array('SortOn' => array('ServicesSortID', 'SortID'), 'Where' => $Where)); #--------------------------------------------------------------------------- switch (ValueOf($Services)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return FALSE; case 'array': #----------------------------------------------------------------------- $ServicesGroupID = UniqID(); #----------------------------------------------------------------------- foreach ($Services as $Service) { #--------------------------------------------------------------------- if ($Service['ServicesGroupID'] != $ServicesGroupID) {
$Where = array('`Cost` > 0', '`Discont` < 1', '`DaysRemainded` > 0', SPrintF('`OrderID` IN (%s)', Implode(',', $Array))); #------------------------------------------------------------------------------- $Count = DB_Count('OrdersConsider', array('Where' => $Where)); if (Is_Error($Count)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- if ($Count) { continue; } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #Debug(SPrintF('[comp/Tasks/GC/ResetOrdersDays]: UserID = %s; OrderIDs = %s',$UserID,Implode(',',$Array))); #------------------------------------------------------------------------------- # а ещё у него могут быть домены... которые учитываются иначе ... а ещё могут быть услуги настраиваемые вручную... $Where = array('`StatusID` = "Suspended" OR `StatusID` = "Active"', SPrintF('`UserID` = %u', $UserID), SPrintF('`ID` NOT IN (%s)', Implode(',', $Array))); #------------------------------------------------------------------------------- $Count = DB_Count('OrdersOwners', array('Where' => $Where)); if (Is_Error($Count)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- #Debug(SPrintF('[comp/Tasks/GC/ResetOrdersDays]: OrdersOwners Count = %s',$Count)); #------------------------------------------------------------------------------- if ($Count) { continue; } #------------------------------------------------------------------------------- Debug(SPrintF('[comp/Tasks/GC/ResetOrdersDays]: Изменено число оставшихся дней (%u->%u) для заказa OrderID = %s; юзер = %s', $OrderConsider['SumDaysRemainded'], $Settings['ResetDaysTo'], $OrderID, $UserID)); #------------------------------------------------------------------------------- #----------------------------------TRANSACTION----------------------------------
/** @author Великодный В.В. (Joonte Ltd.) */ /******************************************************************************/ /******************************************************************************/ $__args_list = array('PaymentSystemID', 'InvoiceID', 'Summ'); /******************************************************************************/ eval(COMP_INIT); /******************************************************************************/ /******************************************************************************/ $Config = Config(); #------------------------------------------------------------------------------- $Settings = $Config['Invoices']['PaymentSystems']['Yandex']; #------------------------------------------------------------------------------- $Send = $Settings['Send']; #------------------------------------------------------------------------------- $Send['Sum'] = Round($Summ / $Settings['Course'], 2); #------------------------------------------------------------------------------- $Send['customerNumber'] = $GLOBALS['__USER']['ID']; #------------------------------------------------------------------------------- $Send['orderNumber'] = $InvoiceID; #------------------------------------------------------------------------------- $Comp = Comp_Load('Formats/Invoice/Number', $InvoiceID); if (Is_Error($Comp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $Md5 = array($Send['Sum'], $Send['CurrencyID'], $Send['BankID'], $Send['ShopID'], $Send['orderNumber'], $Send['customerNumber'], $Settings['Hash']); #------------------------------------------------------------------------------- $Send['md5'] = Md5(Implode(';', $Md5)); #------------------------------------------------------------------------------- return $Send; #-------------------------------------------------------------------------------
return ERROR | @Trigger_Error(500); case 'exception': #------------------------------------------------------------------------------- $Window = JSON_Encode(array('Url' => '/InvoiceMake', 'Args' => array('PaymentSystemID' => $PaymentSystemID, 'StepID' => 2))); #------------------------------------------------------------------------------- $ContractsTypesIDs = array(); #------------------------------------------------------------------------------- foreach ($ContractsTypes as $ContractTypeID => $IsActive) { #------------------------------------------------------------------------------- if ($IsActive) { $ContractsTypesIDs[] = $ContractTypeID; } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- $Comp = Comp_Load('www/ContractMake', array('TypesIDs' => Implode(',', $ContractsTypesIDs), 'IsSimple' => TRUE, 'Window' => Base64_Encode($Window))); if (Is_Error($Comp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- return $Comp; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- case 'array': #------------------------------------------------------------------------------- $Table[] = array('Платежная система', $PaymentSystem['Name']); #------------------------------------------------------------------------------- $Options = array(); #------------------------------------------------------------------------------- foreach ($Contracts as $Contract) { #-------------------------------------------------------------------------------
return 'No args...'; } #------------------------------------------------------------------------------- $ArgsIDs = array('PAYMENT_ID', 'PAYEE_ACCOUNT', 'PAYMENT_AMOUNT', 'PAYMENT_UNITS', 'PAYMENT_METAL_ID', 'PAYMENT_BATCH_NUM', 'PAYER_ACCOUNT', 'ACTUAL_PAYMENT_OUNCES', 'USD_PER_OUNCE', 'FEEWEIGHT', 'TIMESTAMPGMT', 'V2_HASH'); #------------------------------------------------------------------------------- foreach ($ArgsIDs as $ArgID) { $Args[$ArgID] = @$Args[$ArgID]; } #------------------------------------------------------------------------------- $Config = Config(); #------------------------------------------------------------------------------- $Settings = $Config['Invoices']['PaymentSystems']['Egold']; #------------------------------------------------------------------------------- $Hash = array($Args['PAYMENT_ID'], $Args['PAYEE_ACCOUNT'], $Args['PAYMENT_AMOUNT'], $Args['PAYMENT_UNITS'], $Args['PAYMENT_METAL_ID'], $Args['PAYMENT_BATCH_NUM'], $Args['PAYER_ACCOUNT'], StrToUpper(Md5($Settings['Hash'])), $Args['ACTUAL_PAYMENT_OUNCES'], $Args['USD_PER_OUNCE'], $Args['FEEWEIGHT'], $Args['TIMESTAMPGMT']); #------------------------------------------------------------------------------- $Hash = StrToUpper(Md5(Implode(':', $Hash))); #------------------------------------------------------------------------------- if ($Hash != $Args['V2_HASH']) { return ERROR | @Trigger_Error('[comp/www/Merchant/Egold]: проверка подлинности завершилась не удачей'); } #------------------------------------------------------------------------------- $Invoice = DB_Select('Invoices', array('ID', 'Summ'), array('UNIQ', 'ID' => $Args['PAYMENT_ID'])); #------------------------------------------------------------------------------- switch (ValueOf($Invoice)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return ERROR | @Trigger_Error(400); case 'array': #--------------------------------------------------------------------------- if (Round($Invoice['Summ'] / $Settings['Course'], 2) != $Args['PAYEE_ACCOUNT']) {
function Extended_Implode($array, $separator = ', ', $last_separator = ' and ') { $array = (array) $array; if (Count($array) == 0) { return ''; } if (Count($array) == 1) { return $array[0]; } $last_item = Array_pop($array); $result = Implode($array, $separator) . $last_separator . $last_item; return $result; }
} else { #------------------------------------------------------------------------------- $Array[] = $GLOBALS['TaskReturnInfo'][$Key]; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Array[] = $GLOBALS['TaskReturnInfo']; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if (SizeOf($Array) > 0) { $AddPrameter = SPrintF('[%s]', Implode('; ', $Array)); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- echo SPrintF("%s in %s: Task #%s have executed [%s] %s\n", Date('Y-m-d', Time()), Date('H:i:s', Time()), $Number, $Task['TypeID'], $AddPrameter); #------------------------------------------------------------------------------- if (isset($GLOBALS['TaskReturnInfo'])) { unset($GLOBALS['TaskReturnInfo']); } #------------------------------------------------------------------------------- break; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- default: return ERROR | @Trigger_Error(101);
public function send(Msg $msg) { // Get template file path. $templatePath = SPrintF('Notifies/Email/%s.tpl', $msg->getTemplate()); $smarty = JSmarty::get(); $smarty->clearAllAssign(); if (!$smarty->templateExists($templatePath)) { throw new jException('Template file not found: ' . $templatePath); } $smarty->assign('Config', Config()); foreach (array_keys($msg->getParams()) as $paramName) { $smarty->assign($paramName, $msg->getParam($paramName)); } $message = $smarty->fetch($templatePath); try { // Debug("msg->getParam('Theme'): "+ $msg->getParam('Theme')); if ($msg->getParam('Theme')) { // Debug("SET THEME FROM PARAMS"); $theme = $msg->getParam('Theme'); } else { // Debug("SET THEME FROM TEMPLATE"); $theme = $smarty->getTemplateVars('Theme'); } // Debug("THEME: "+$theme); if (!$theme) { $theme = '$Theme'; } } catch (Exception $e) { throw new jException(SPrintF("Can't fetch template: %s", $templatePath), $e->getCode(), $e); } $recipient = $msg->getParam('User'); if (!$recipient['Email']) { throw new jException('E-mail address not found for user: '******'ID']); } $sender = $msg->getParam('From'); $emailHeads = array(SPrintF('From: %s', $sender['Email']), 'MIME-Version: 1.0', 'Content-Transfer-Encoding: 8bit', SPrintF('Content-Type: multipart/mixed; boundary="----==--%s"', HOST_ID)); // added by lissyara 2013-02-13 in 15:45 MSK, for JBS-609 if ($msg->getParam('Message-ID')) { $emailHeads[] = SPrintF('Message-ID: %s', $msg->getParam('Message-ID')); } $Params = array(); if ($msg->getParam('Recipient')) { $Params[] = $msg->getParam('Recipient'); } else { $Params[] = $recipient['Email']; } $Params[] = $theme; $Params[] = $message; $Params[] = Implode("\r\n", $emailHeads); $Params[] = $recipient['ID']; if ($msg->getParam('EmailAttachments')) { $Params[] = $msg->getParam('EmailAttachments'); } else { $Params[] = 'не определено'; } $taskParams = array('UserID' => $recipient['ID'], 'TypeID' => 'Email', 'Params' => $Params); $result = Comp_Load('www/Administrator/API/TaskEdit', $taskParams); switch (ValueOf($result)) { case 'error': throw new jException("Couldn't add task to queue: " . $result); case 'exception': throw new jException("Couldn't add task to queue: " . $result->String); case 'array': return TRUE; default: throw new jException("Unexpected error."); } }
$Count++; $SendedIDs[] = $User; Array_Shift($SendToIDs); #------------------------------------------------------------------------- break; default: return ERROR | @Trigger_Error(101); } } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #Debug(SPrintF('[comp/Tasks/Dispatch]: SendToIDs = %s; SendedIDs = %s;',Implode(',',$SendToIDs),Implode(',',$SendedIDs))); #------------------------------------------------------------------------------- # сохраняем параметры задачи $Task['Params']['SendToIDs'] = Implode(',', Array_Filter($SendToIDs)); $Task['Params']['SendedIDs'] = Implode(',', Array_Filter($SendedIDs)); $UTasks = array('Params' => $Task['Params']); $IsUpdate = DB_Update('Tasks', $UTasks, array('ID' => $Task['ID'])); #------------------------------------------------------------------------------- if (Is_Error($IsUpdate)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $GLOBALS['TaskReturnInfo']['Sended'] = array(SizeOf(Array_Filter($SendedIDs))); $GLOBALS['TaskReturnInfo']['New'] = array($Count); $GLOBALS['TaskReturnInfo']['Estimated'] = array(SizeOf(Array_Filter($SendToIDs))); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- if (SizeOf($SendToIDs) > 0) { return $ExecuteTime;
$IPs[] = $IP; #------------------------------------------------------------------------------- $IPs = Array_Unique($IPs); #------------------------------------------------------------------------------- $Count = Count($IPs); #------------------------------------------------------------------------------- if ($Count > 10) { $IPs = Array_Slice($IPs, 0, 9); } #------------------------------------------------------------------------------- if (Mb_StrLen($IP) > $Length) { $IP = SPrintF('%s...', Mb_SubStr($IP, 0, $Length)); } #------------------------------------------------------------------------------- $A = new Tag('A', array('target' => 'blank', 'href' => SPrintF('http://%s/', $IP)), $IP); #------------------------------------------------------------------------------- $LinkID = UniqID('IPs'); #------------------------------------------------------------------------------- $Links =& Links(); # Коллекция ссылок $Links[$LinkID] =& $A; #------------------------------------------------------------------------------- $Comp = Comp_Load('Form/Prompt', $LinkID, SPrintF('<B>Всего: %u</B><BR />%s', $Count, Implode('<BR />', $IPs))); if (Is_Error($Comp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- unset($Links[$LinkID]); #------------------------------------------------------------------------------- return $A; #-------------------------------------------------------------------------------
#------------------------------------------------------------------------------- switch (ValueOf($Templates)) { case 'error': # No more... break; case 'exception': # No more... break; case 'array': Debug(print_r($Templates, true)); #------------------------------------------------------------------------------- if (SizeOf($Templates) < 1) { continue 2; } #------------------------------------------------------------------------------- $iServer['Params']['DiskTemplate'] = Implode("\n", $Templates); #------------------------------------------------------------------------------- $IsUpdate = DB_Update('Servers', array('Params' => $iServer['Params']), array('ID' => $iServer['ID'])); if (Is_Error($IsUpdate)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- break; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- default: return ERROR | @Trigger_Error(101); } #------------------------------------------------------------------------------- } #-------------------------------------------------------------------------------
function RuCenter_Contract_Register($Settings, $PepsonID, $Person, $DomainZone) { /****************************************************************************/ $__args_types = array('array', 'string', 'array', 'string'); #----------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /****************************************************************************/ $HTTP = array('Address' => $Settings['Address'], 'Port' => $Settings['Port'], 'Host' => $Settings['Address'], 'Protocol' => $Settings['Protocol'], 'Charset' => 'KOI8-R', 'IsLogging' => $Settings['Params']['IsLogging']); #----------------------------------------------------------------------------- $Query = array(); #--------------------------------------------------------------------------- $RequestID = UniqID('ID'); #--------------------------------------------------------------------------- $Query[] = 'lang: ru'; $Query[] = 'request: contract'; $Query[] = 'operation: create'; $Query[] = SPrintF('login: %s', $Settings['Login']); $Query[] = SPrintF('password: %s', $Settings['Password']); $Query[] = SPrintF('request-id: %s', $RequestID); #--------------------------------------------------------------------------- $Query[] = ''; #--------------------------------------------------------------------------- $Query[] = '[contract]'; $Query[] = SPrintF('password: %s', UniqID()); $Query[] = SPrintF('tech-password: %s', UniqID()); $Query[] = 'currency-id: RUR'; #--------------------------------------------------------------------------- $Query[] = ''; #--------------------------------------------------------------------------- switch ($PepsonID) { case 'Natural': #----------------------------------------------------------------------- $Query[] = 'contract-type: PRS'; $Query[] = SPrintF('person: %s %s %s', Translit($Person['Name']), Mb_SubStr(Translit($Person['Lastname']), 0, 1), Translit($Person['Sourname'])); $Query[] = SPrintF('person-r: %s %s %s', $Person['Sourname'], $Person['Name'], $Person['Lastname']); $Query[] = SPrintF('country: %s', isset($Person['PasportCountry']) ? $Person['PasportCountry'] : $Person['pCountry']); $Query[] = SPrintF('phone: %s', $Person['Phone']); $Query[] = SPrintF('fax-no: %s', $Person['Fax']); $Query[] = SPrintF('birth-date: %s', $Person['BornDate']); $Query[] = SPrintF('passport: %s %s выдан %s, %s', $Person['PasportLine'], $Person['PasportNum'], $Person['PasportWhom'], $Person['PasportDate']); $Query[] = SPrintF('p-addr: %s, %s, %s, %s %s, %s', $Person['pIndex'], $Person['pState'], $Person['pCity'], $Person['pType'], $Person['pAddress'], $Person['pRecipient']); $Query[] = SPrintF('e-mail: %s', $Person['Email']); break; case 'Juridical': #----------------------------------------------------------------------- $Query[] = 'client-type: ORG'; $Query[] = SPrintF('org: %s %s', Translit($Person['CompanyName']), Translit($Person['CompanyFormFull'])); $Query[] = SPrintF('org-r: %s', SPrintF('%s "%s"', $Person['CompanyFormFull'], $Person['CompanyName'])); $Query[] = SPrintF('country: %s', $Person['jCountry']); $Query[] = SPrintF('e-mail: %s', $Person['Email']); $Query[] = SPrintF('phone: %s', $Person['Phone']); $Query[] = SPrintF('fax-no: %s', $Person['Fax']); $Query[] = SPrintF('code: %s', $Person['Inn']); $Query[] = SPrintF('kpp: %s', $Person['Kpp']); $Query[] = SPrintF('address-r: %s, %s, %s, %s %s', $Person['jIndex'], $Person['jState'], $Person['jCity'], $Person['jType'], $Person['jAddress']); $Query[] = SPrintF('p-addr: %s, %s, %s, %s %s, %s "%s"', $Person['pIndex'], $Person['pState'], $Person['pCity'], $Person['pType'], $Person['pAddress'], $Person['CompanyFormFull'], $Person['CompanyName']); $Query[] = SPrintF('d-addr: %s, %s, %s, %s %s', $Person['jIndex'], $Person['jState'], $Person['jCity'], $Person['jType'], $Person['jAddress']); break; default: return new gException('WRONG_PROFILE_ID', 'Неверный идентификатор профиля'); } #----------------------------------------------------------------------------- $Result = HTTP_Send('/dns/dealer', $HTTP, array(), array('SimpleRequest' => Implode("\n", $Query))); if (Is_Error($Result)) { return ERROR | @Trigger_Error('[RuCenter_Contract_Register]: не удалось выполнить запрос к серверу'); } #----------------------------------------------------------------------------- if (Preg_Match('/HTTP\\/1.0\\s502/i', $Result['Heads'])) { return false; } #----------------------------------------------------------------------------- $Result = Trim($Result['Body']); #----------------------------------------------------------------------------- if (Preg_Match('/State:\\s([0-9]+)/', $Result, $CodeID)) { #--------------------------------------------------------------------------- $CodeID = Next($CodeID); #--------------------------------------------------------------------------- switch ($CodeID) { case '200': #----------------------------------------------------------------------- if (!Preg_Match('/nic-hdl:\\s([0-9]+\\/[A-Z\\-]+)/', $Result, $ContractID)) { return new gException('LOGIN_NOT_FOUND', 'Неудалось получить номер договора'); } else { $ContractID = Next($ContractID); } break; case '500': return FALSE; default: return new gException('WRONG_ERROR', SPrintF('Неизвестный статус ошибки (%s)', $Result)); } } else { return new gException('WRONG_ANSWER', $Result); } #----------------------------------------------------------------------------- # Делаем паузу перед запросом Sleep(10); #----------------------------------------------------------------------------- if (!In_Array($DomainZone, array('ru', 'su'))) { #--------------------------------------------------------------------------- $Query = array(); #--------------------------------------------------------------------------- $RequestID = UniqID('ID'); #--------------------------------------------------------------------------- $Query[] = SPrintF('login: %s', $Settings['Login']); $Query[] = SPrintF('password: %s', $Settings['Password']); $Query[] = SPrintF('subject-contract: %s', $ContractID); $Query[] = 'request: contact'; $Query[] = 'operation: create'; $Query[] = 'lang: ru'; $Query[] = SPrintF('request-id: %s', $RequestID); #--------------------------------------------------------------------------- $Query[] = ''; #--------------------------------------------------------------------------- $Query[] = '[contact]'; $Query[] = SPrintF('status:registrant'); $Query[] = SPrintF('org:'); $Query[] = SPrintF('name: %s, %s', Translit($Person['Name']), Translit($Person['Lastname'])); $Query[] = SPrintF('country: %s', isset($Person['PasportCountry']) ? $Person['PasportCountry'] : $Person['pCountry']); $Query[] = SPrintF('region: %s', Translit($Person['pCity'])); $Query[] = SPrintF('city: %s', Translit($Person['pCity'])); $Query[] = SPrintF('street: %s', Translit(SPrintF('%s %s', $Person['pType'], $Person['pAddress']))); $Query[] = SPrintF('zipcode: %s', $Person['pIndex']); $Query[] = SPrintF('phone: %s', $Person['Phone']); $Query[] = SPrintF('fax: %s', $Person['Fax']); $Query[] = SPrintF('email: %s', $Person['Email']); #--------------------------------------------------------------------------- $Result = HTTP_Send('/dns/dealer', $HTTP, array(), array('SimpleRequest' => Implode("\n", $Query))); if (Is_Error($Result)) { return ERROR | @Trigger_Error('[RuCenter_Contract_Register]: не удалось выполнить запрос к серверу'); } #--------------------------------------------------------------------------- if (Preg_Match('/HTTP\\/1.0\\s502/i', $Result['Heads'])) { return FALSE; } #--------------------------------------------------------------------------- $Result = Trim($Result['Body']); #--------------------------------------------------------------------------- if (Preg_Match('/State:\\s([0-9]+)/', $Result, $CodeID)) { #------------------------------------------------------------------------- $CodeID = Next($CodeID); #------------------------------------------------------------------------- switch ($CodeID) { case '200': #----------------------------------------------------------------------- if (!Preg_Match('/nic-hdl:([0-9A-Za-z\\-]+)/', $Result, $NicHDL)) { return array('TicketID' => SPrintF('%s:%s', $ContractID, Next($NicHDL))); } #----------------------------------------------------------------------- return new gException('LOGIN_NOT_FOUND', 'Неудалось получить номер договора'); case '500': return FALSE; default: return new gException('WRONG_ERROR', SPrintF('Неизвестный статус ошибки (%s)', $Result)); } } else { return new gException('WRONG_ANSWER', $Result); } } #----------------------------------------------------------------------------- return array('TicketID' => $ContractID); }
$Send['URL_RETURN'] = SPrintF('%s://%s/Invoices', $Protocol, HOST_ID); $Send['URL_RETURN_OK'] = SPrintF('%s://%s/Invoices', $Protocol, HOST_ID); $Send['URL_RETURN_NO'] = SPrintF('%s://%s/Invoices?Error=yes', $Protocol, HOST_ID); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # а ещё в люобй форме есть CSRF #$Send['CSRF'] = $GLOBALS['CSRF']; #------------------------------------------------------------------------------- # мыло юзера $Send['Email'] = $__USER['Email']; #------------------------------------------------------------------------------- # и телефон, если есть if ($__USER['Params']['NotificationMethods']['SMS']['Address']) { $Send['Phone'] = $__USER['Params']['NotificationMethods']['SMS']['Address']; } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Array = array($Send['Shop_IDP'], $Send['Order_IDP'], $Send['Subtotal_P'], '', '', '', '', '', '', '', $Settings['Hash']); #------------------------------------------------------------------------------- $Hash = array(); #------------------------------------------------------------------------------- foreach ($Array as $Value) { $Hash[] = Md5($Value); } #------------------------------------------------------------------------------- $Send['Signature'] = StrToUpper(Md5(Implode("&", $Hash))); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- return $Send; #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
function __Error_Handler__($Number, $Error, $File, $Line) { #------------------------------------------------------------------------------- $Message = SPrintF('[!!%s]-%s в линии %s файла %s', $Number, $Error, $Line, $File); #------------------------------------------------------------------------------- $__ERR_CODE =& $GLOBALS['__ERR_CODE']; #------------------------------------------------------------------------------- if ((int) $Error && $__ERR_CODE == 100) { $__ERR_CODE = $Error; } #------------------------------------------------------------------------------- Debug(SPrintF('[!] %s', $Message)); //Debug(SPrintF('[!] %s',debug_print_backtrace())); #------------------------------------------------------------------------------- //Error_Reporting(E_ALL); #------------------------------------------------------------------------------- if (Error_Reporting()) { #------------------------------------------------------------------------------- $JBsErrorID = SPrintF('%s[%s]', HOST_ID, Md5(Implode(':', array($Number, $Error, $Line, $File)))); #------------------------------------------------------------------------------- $__SYSLOG =& $GLOBALS['__SYSLOG']; #------------------------------------------------------------------------------- $Log = Implode("\n", $__SYSLOG); #------------------------------------------------------------------------------- Report($JBsErrorID, $JBsErrorID); #------------------------------------------------------------------------------- foreach (array(SYSTEM_PATH, '/tmp') as $Folder) { #------------------------------------------------------------------------------- $Path = SPrintF('%s/jbs-errors.log', $Folder); #------------------------------------------------------------------------------- if (File_Exists($Path)) { if (FileSize($Path) > 1024 * 1024) { UnLink($Path); } } #------------------------------------------------------------------------------- umask(077); #------------------------------------------------------------------------------- if (!@File_Put_Contents($Path, SPrintF("%s\n\n%s\n\n", $JBsErrorID, $Log), FILE_APPEND)) { #------------------------------------------------------------------------------- Debug(SPrintF('[__Error_Handler__]: не удалось осуществить запись ошибки в системный лог (%s)', $Path)); #------------------------------------------------------------------------------- continue; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- break; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- if (File_Exists(SPrintF('%s/DEBUG.OUT', SYSTEM_PATH)) || !isset($_SERVER["REMOTE_PORT"])) { #------------------------------------------------------------------------------- exit($Log); } else { #------------------------------------------------------------------------------- $Errors = array(100 => 'Ошибка выполнения', 101 => 'Неизвестный результат', 201 => 'Неверные параметры', 400 => 'Ошибка данных', 500 => 'Системная ошибка', 600 => 'Ошибка политики безопасности', 601 => 'Неверный реферер', 602 => 'Отсутствует реферер', 603 => 'Неверный ключ CSRF', 700 => 'Нарушение политики прав'); #------------------------------------------------------------------------------- $FilePath = SPrintF('%s/hosts/root/templates/modules/Trigger.Error.html', SYSTEM_PATH); #------------------------------------------------------------------------------- if (Is_Readable($FilePath)) { #------------------------------------------------------------------------------- $Result = @File_Get_Contents($FilePath); #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- $Result = SPrintF("Cannot read error file: %s<BR />\nError: %%s<BR />\n<!--%%s-->\nErrorID: %%s\n<!--%%s-->", $FilePath); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- $String = SPrintF('%s (%s)', $Errors[$__ERR_CODE], $__ERR_CODE); #------------------------------------------------------------------------------- @Header(SPrintF('JBs-ErrorID: %s', $JBsErrorID)); #------------------------------------------------------------------------------- if (isset($_POST['XMLHttpRequest'])) { #------------------------------------------------------------------------------- $Answer = array('Error' => array('CodeID' => $__ERR_CODE, 'String' => $String), 'Status' => 'Error'); #------------------------------------------------------------------------------- exit(JSON_Encode($Answer)); #------------------------------------------------------------------------------- } else { #------------------------------------------------------------------------------- exit(SPrintF($Result, $String, $String, $JBsErrorID, Date('Y', Time()))); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- }
#------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # выдаём данные DNSmanager в ответе $XML = '<func name="%s"><arg name="sok">ok</arg><arg name="sync">off</arg><arg name="username">%s</arg><arg name="password">%s</arg><arg name="url">%s</arg></func>'; #------------------------------------------------------------------------------- foreach ($Servers as $Server) { foreach (array('slaveserver.edit') as $Func) { $Array[] = SPrintF($XML, $Func, $Server['Login'], $Server['Password'], $Server['Params']['Url']); } } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # строим выхлопную XML'ину $Out = SPrintF('<?xml version="1.0" encoding="UTF-8"?><doc>%s</doc>', Implode('', $Array)); Debug(SPrintF('[comp/www/API/ISPswSettingURL]: Out XML = %s', $Out)); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $License = DB_Select('ISPswLicenses', array('LicKey'), array('UNIQ', 'Where' => SPrintF('`elid` = %u', $id))); switch (ValueOf($License)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return new gException('LICENSE_NOT_FOUND', 'Лицензия не найдена'); case 'array': break; default: return ERROR | @Trigger_Error(101); } #-------------------------------------------------------------------------------
foreach (Array_Keys($Template) as $Key) { if ($Key != 'SystemID') { continue; } #------------------------------------------------------------------------------- if (Is_Array($Template[$Key])) { #------------------------------------------------------------------------------- $Script = array('var Settings = {};'); #------------------------------------------------------------------------------- foreach (Array_Keys($Template[$Key]) as $SystemID) { $Script[] = SPrintF("Settings['%s'] = %s;", $SystemID, JSON_Encode($Template[$Key][$SystemID]['Settings'])); } #------------------------------------------------------------------------------- $Script[] = "function SettingsUpdate(){\nvar \$Form = document.forms['ServerEditForm'];\nvar \$System = Settings[\$Form.{$Key}.value];\nfor(var i in \$System)\n\$Form[i].value = \$System[i];\n}"; #------------------------------------------------------------------------------- $DOM->AddChild('Head', new Tag('SCRIPT', Implode("\n", $Script))); #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Comp = Comp_Load('Form/Input', array('name' => 'TemplateID', 'type' => 'hidden', 'value' => $TemplateID)); if (Is_Error($Comp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $Form->AddChild($Comp); #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Table = array();
#------------------------------------------------------------------------------- #------------------------------------------------------------------------------- default: return SPrintF("---\n%s\n---\n", Implode("\n", Array_Slice($__SYSLOG, Count($__SYSLOG) - 20))); } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- if ($Commit) { #------------------------------------------------------------------------------- $Tmp = System_Element('tmp'); if (Is_Error($Tmp)) { return SPrintF("---\n%s\n---\n", Implode("\n", Array_Slice($__SYSLOG, Count($__SYSLOG) - 20))); } #------------------------------------------------------------------------------- $IsWrite = IO_Write(SPrintF('%s/LastUpdate.stamp', $Tmp), (string) Time(), TRUE); if (Is_Error($IsWrite)) { return SPrintF("---\n%s\n---\n", Implode("\n", Array_Slice($__SYSLOG, Count($__SYSLOG) - 20))); } #------------------------------------------------------------------------------- $Event = array('UserID' => $UserID ? $UserID : 10, 'PriorityID' => 'System', 'Text' => 'Обновление биллинга: заменён файловый набор'); $Event = Comp_Load('Events/EventInsert', $Event); if (!$Event) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- return '[OK]'; #------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
#------------------------------------------------------------------------------- $Orders = DB_Select(SPrintF('%sOrdersOwners', $Server['Code']), array('ID', 'Login'), array('Where' => $Where)); #------------------------------------------------------------------------------- switch (ValueOf($Orders)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': # No more... break; case 'array': #------------------------------------------------------------------------------- foreach ($Orders as $Order) { #------------------------------------------------------------------------------- $Parked = $Users[$Order['Login']]; #------------------------------------------------------------------------------- $IsUpdate = DB_Update(SPrintF('%sOrders', $Server['Code']), array('Domain' => Count($Parked) ? Current($Parked) : 'not-found', 'Parked' => Implode(',', $Parked)), array('ID' => $Order['ID'])); if (Is_Error($IsUpdate)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- break; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- default: return ERROR | @Trigger_Error(101); } #------------------------------------------------------------------------------- } #-------------------------------------------------------------------------------
# перебираем полученные данные foreach (Array_Keys($TUsages) as $ServerID) { #------------------------------------------------------------------------------- # достаём юзеров из биллинга, и их лимиты $Array = array(); #------------------------------------------------------------------------------- foreach (Array_Keys($TUsages[$ServerID]['BUsages']) as $Login) { $Array[] = SPrintF("'%s'", $Login); } #------------------------------------------------------------------------------- # однако, массив может получиться пустой if (SizeOf($Array) == 0) { continue; } #------------------------------------------------------------------------------- $Where = SPrintF('`ServerID` = %u AND `Login` IN (%s)', $ServerID, Implode(',', $Array)); #------------------------------------------------------------------------------- $Columns = array('ID', 'Login', 'UserID', 'Domain', '(SELECT `QuotaCPU` FROM `HostingSchemes` WHERE `HostingSchemes`.`ID` = `HostingOrdersOwners`.`SchemeID`) as `QuotaCPU`', '(SELECT `Name` FROM `HostingSchemes` WHERE `HostingSchemes`.`ID` = `HostingOrdersOwners`.`SchemeID`) as `Scheme`', '(SELECT `Params` FROM `Servers` WHERE `Servers`.`ID` = `HostingOrdersOwners`.`ServerID`) as `Params`'); #------------------------------------------------------------------------------- $HostingOrders = DB_Select('HostingOrdersOwners', $Columns, array('Where' => $Where)); #------------------------------------------------------------------------------- switch (ValueOf($HostingOrders)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': # No more... break; case 'array': #------------------------------------------------------------------------------- foreach ($HostingOrders as $HostingOrder) { #-------------------------------------------------------------------------------
function CloseOpenStep() { $this->serverLogTmpHandle = FOpen($_SERVER["DOCUMENT_ROOT"] . $this->serverLogTmp, "w"); FWrite($this->serverLogTmpHandle, $this->descrTs . "|" . $this->descrRegion . "|" . Implode(",", $this->descrCollectedExtensions) . "\n"); FWrite($this->serverLogTmpHandle, $this->logText); FClose($this->serverLogTmpHandle); }
/******************************************************************************/ eval(COMP_INIT); /******************************************************************************/ /******************************************************************************/ $Config = Config(); #------------------------------------------------------------------------------- $Settings = $Config['Invoices']['PaymentSystems']['MailRu']; #------------------------------------------------------------------------------- $Send = $Settings['Send']; #------------------------------------------------------------------------------- $Send['sum'] = Round($Summ / $Settings['Course'], 2); #------------------------------------------------------------------------------- $Send['issuer_id'] = $InvoiceID; #------------------------------------------------------------------------------- $Comp = Comp_Load('Formats/Invoice/Number', $InvoiceID); if (Is_Error($Comp)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $__USER = $GLOBALS['__USER']; $Send['description'] .= SPrintF('%s, %s (%s)', $Comp, Translit($__USER['Name']), $__USER['Email']); #------------------------------------------------------------------------------- $Send['message'] = $Send['description']; #------------------------------------------------------------------------------- $sha = sha1($Settings['Hash']); $Hash = array($Send['currency'], $Send['description'], $Send['issuer_id'], $Send['message'], $Send['shop_id'], $Send['sum'], $sha); #------------------------------------------------------------------------------- $Send['signature'] = sha1(Implode('', $Hash)); #------------------------------------------------------------------------------- return $Send; #-------------------------------------------------------------------------------
break; #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- case 'array': # All OK, accounts found #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- $Array = array(); #------------------------------------------------------------------------------- foreach ($SchemeAccounts as $Account) { $Array[] = $Account['OrderID']; } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # считаем сумму всех оплаченных дней тарифа $Where = array('`DaysRemainded` > 0', '`Discont` < 1', '`Cost` > 0', SPrintF('`OrderID` IN (%s)', Implode(',', $Array))); #------------------------------------------------------------------------------- $Income = DB_Select('OrdersConsider', array('SUM(`DaysRemainded`*`Cost`*(1-`Discont`)) as `SummRemainded`', 'SUM(`DaysRemainded`) AS `DaysRemainded`'), array('UNIQ', 'Where' => $Where)); #------------------------------------------------------------------------------- switch (ValueOf($Income)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': Debug(SPrintF('[comp/Statistics/VPSSchemesIncome]: no summ for scheme "%s"', $VPSScheme['Name'])); break; case 'array': #------------------------------------------------------------------------------- # считаем все не-бесплатные аккаунты, по ним будут расчёты цены и доходов $Count = DB_Select('OrdersConsider', 'DISTINCT(`OrderID`) AS `OrderID`', array('Where' => $Where)); #------------------------------------------------------------------------------- switch (ValueOf($Count)) {
/** * Производит нормализацию объекта * * Удаляет всю служебную информацию, подргужает компоненты в документ, * подготавливает объект к выводу. */ public function Normalize(&$Object = NULL) { /****************************************************************************/ $__args_types = array('object,NULL'); #----------------------------------------------------------------------------- $__args__ = Func_Get_Args(); eval(FUNCTION_INIT); /****************************************************************************/ if (Is_Null($Object)) { $Object =& $this->Object; } #----------------------------------------------------------------------------- $Childs =& $Object->Childs; #----------------------------------------------------------------------------- if (Count($Childs) > 0) { #--------------------------------------------------------------------------- $i = 0; #--------------------------------------------------------------------------- while ($i < Count($ChildsIDs = Array_Keys($Childs))) { #------------------------------------------------------------------------- $Child =& $Childs[$ChildID = $ChildsIDs[$i]]; #------------------------------------------------------------------------- $Name = $Child->Name; #------------------------------------------------------------------------- switch ($Name) { case 'NOBODY': #--------------------------------------------------------------------- $Object->AddAttribs($Child->Attribs); #--------------------------------------------------------------------- $Object->AddText($Child->Text); #--------------------------------------------------------------------- Array_Splice($Childs, $ChildID, 1, $Child->Childs); continue 2; case 'COMP': #--------------------------------------------------------------------- $Attribs =& $Child->Attribs; #--------------------------------------------------------------------- $IsHasChilds = Count($Object->Childs) > 0; #--------------------------------------------------------------------- $FunctionID = $IsHasChilds ? 'AddChild' : 'AddText'; #--------------------------------------------------------------------- $CompPath = (string) @$Attribs['path']; #--------------------------------------------------------------------- if (Is_Error(System_Element(SPrintF('comp/%s.comp.php', $CompPath)))) { #------------------------------------------------------------------- $String = SPrintF('Компонент не найден (%s)', $CompPath); #------------------------------------------------------------------- $Object->{$FunctionID}($IsHasChilds ? new Tag('SPAN', $String) : $String); } else { #------------------------------------------------------------------- $Args = isset($Attribs['args']) ? Explode('|', $Attribs['args']) : array(); #------------------------------------------------------------------- Array_UnShift($Args, $CompPath); #------------------------------------------------------------------- $Comp = Call_User_Func_Array('Comp_Load', $Args); #------------------------------------------------------------------- switch ($Type = ValueOf($Comp)) { case 'error': #--------------------------------------------------------------- $String = SPrintF('Ошибка загрузки компонента (%s)', $CompPath); #--------------------------------------------------------------- if (isset($Attribs['debug'])) { $Object->AddChild(new Tag('PRE', Implode("\n", $GLOBALS['__SYSLOG']))); } else { $Object->{$FunctionID}($IsHasChilds ? new Tag('SPAN', $String) : $String); } break 2; case 'exception': #--------------------------------------------------------------- $String = $Comp->String; #--------------------------------------------------------------- $Object->{$FunctionID}($IsHasChilds ? new Tag('SPAN', $String) : $String); break 2; case 'object': $Child = $Comp; break 2; case 'string': #--------------------------------------------------------------- $Object->AddText($Comp); #--------------------------------------------------------------- Array_Splice($Childs, $ChildID, 1, $Child->Childs); continue 3; case 'false': # No more... # No more... case 'true': # No more... break 2; default: #--------------------------------------------------------------- $String = SPrintF('Компонент вернул результат неверного типа (%s)', $Type); #--------------------------------------------------------------- $Object->{$FunctionID}($IsHasChilds ? new Tag('SPAN', $String) : $String); } } default: # No more... } #------------------------------------------------------------------------- $i++; #------------------------------------------------------------------------- $this->Normalize($Child); } } }
#------------------------------------------------------------------------------- return $Out; } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # получаем список всех сотрудников $Entrance = Tree_Entrance('Groups', 3000000); #------------------------------------------------------------------- switch (ValueOf($Entrance)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return ERROR | @Trigger_Error(400); case 'array': #--------------------------------------------------------------- $String = Implode(',', $Entrance); #--------------------------------------------------------------- $Employers = DB_Select('Users', 'ID', array('Where' => SPrintF('`GroupID` IN (%s)', $String))); #--------------------------------------------------------------- switch (ValueOf($Employers)) { case 'error': return ERROR | @Trigger_Error(500); case 'exception': return ERROR | @Trigger_Error(400); case 'array': #--------------------------------------------------------------- $UserIDs = array(); #--------------------------------------------------------------- if ($ShowFired) { #--------------------------------------------------------------- # получаем список всех на ком висят тикеты