Часть 9 из 12
Строки: 16001-18000 из 22262
================================================================================

                 //<ЗАГЛУШКА ЗАШИТАЯ В КОДЕ!>
                 if($playlist_id > 20){
                     return 0;
                 }
                 $aUserPlaylistData = array("id" => $user_id, "0" => 0, "1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0, "6" => 0, "7" => 0, "8" => 0, "9" => 0, "10" => 0, "11" => 0, "12" => 0, "13" => 0, "14" => 0, "15" => 0, "16" => 0, "17" => 0, "18" => 0, "19" => 0, "20" => 0,);
                 //</ЗАГЛУШКА ЗАШИТАЯ В КОДЕ!>
                 //-------------------------------------------------------------------------------------------------
                 $aUserPlaylistData["$playlist_id"] = 1;
            }
            
            Model::factory("statistics_playlist_play")->create($aUserPlaylistData);
           
            return 1;
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "statistics_playlist_playModel", "addGameResult");
            throw new Exception ($e->getMessage(), $e->getCode());
        }  
    }
}

================================================================================
ФАЙЛ: app/models/companyModel.php
================================================================================

<?php
/**
 * 
 */
class companyModel extends Model {
    
    protected $_tableName = 'company';
    
    public function getListCompany($user_id){
       try{
           if(!Model::factory('user', $user_id)->exist()){
               return array();
               // errors::exc(errors::errorIncorrectInput, "user $user_id id not exist");
           }
           $listCompany =  $this->getList(array("user_id" => $user_id));
           foreach($listCompany as &$mission){
               if(isset($company['user_id'])){
                   unset($company['user_id']); 
               }
           }
           
           if(!is_array( $listCompany ) || 0 == count($listCompany)){
              $listCompany = array(); 
           }
           
           return $listCompany;
       } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "companyModel", "getListCompany", $user_from);
            throw new Exception ($e->getMessage(), $e->getCode());
        } 
    }
    
    public function createCompany($user_id, $company_stat_id, &$arr_company = array()){
       try{
           if(!Model::factory('user', $user_id)->exist()){
               errors::exc(errors::errorIncorrectInput, "user $user_id id not exist");
           }
           
           if(!Model::factory('company_stat', $company_stat_id)->exist()){
               errors::exc(errors::errorIncorrectInput, "company_stat_id not exist");
           }
           
           $listCompany =  $this->getList(array("user_id" => $user_id, "company_stat_id" => $company_stat_id));
           $arr_company = $listCompany[0];
           if(!is_array($arr_company) || 0 == count($arr_company)){
                $obj_company = Model::factory("company")->create(array("user_id" => $user_id, "company_stat_id" => $company_stat_id));               
                $arr_company = $obj_company->get();    
           } 
           
           return true;
       } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "companyModel", "getListCompany", $user_from);
            throw new Exception ($e->getMessage(), $e->getCode());
        } 
    }  
    
}


================================================================================
ФАЙЛ: app/models/event_by_timeModel.php
================================================================================

<?php
/**
 * 
 */
class event_by_timeModel extends Model {
    
    protected $_tableName = 'event_by_time';


       
}


      

================================================================================
ФАЙЛ: app/models/wordModel.php
================================================================================

<?php
/**
 * 
 * Рассылка сообщений между игроками 
 */
class wordModel extends Model {

    //protected $_tableName = 'mail';
    
    
    /**
    * как 
    * @param bigint $user_id    номер игрока из соц сети
    * result array
    */
    public function get($user_id){
        try{

        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "wordModel", "get", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        }  
    }
    /**
    * Собирает слово-маску, закрытые символы в котором заменены на символ "*"
    * 
    * @param stirng  word      слово
    * @param int     bit_mask  битовая маска
    * 
    * @return string word_mask слово-маска
    */
     public function get_word_mask($word, $bit_mask, $flag_all_word = 0){
        try{
            $word_mask = "";
            $word_length = strlen($word);
            if($word_length < 0 || $word_length >= 31) {
               errors::exc(errors::errorIncorrectInput,"word length is too big" );
            }
            
            for($pos = 0; $pos < $word_length;  $pos++){
                $bin_pos = 1 << $pos;
                if($bit_mask & $bin_pos){
                   $word_mask .= $word[$pos]; 
                } else {
                   $word_mask .= '*'; 
                }
            }
            return $word_mask;
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "wordModel", "get_word_mask", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        }  
    }
    /**
    * Создает битовую маску, в случае если она уже судещстует, дополняет. 
    * 
    * @param array arr_pos   массив позиций которые следует открыть
    * @param int   bit_mask  битовая маска (по умолчанию = 0) 
    * 
    * return int   bit_mask  созданная или дополненная битовая маска 
    */
    
    public function set_bit_mask($arr_pos = array(), $bit_mask = 0){
        try{
        
            foreach($arr_pos as $pos){
               $bit_mask |= 1 << $pos;
            }
            return $bit_mask;
            
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "wordModel", "get_word_mask", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        } 
    }             
    /**
    * находит все вхождения символа в строку
    * 
    * @param string  $word
    * @param string  $sign
    * @param &string $pos_array массив с номерами вхождений в качестве значений
    * 
    */
    public function  strpos_all($word, $sign, &$pos_array= array()){
       try{
           $offset = 0;
           do{
               $pos = -1;
               $pos = strpos($word, $sign, $offset);
               if($pos === FALSE){
                   break;
               }
               $offset = $pos + 1;
               $pos_array[] = $pos; 
           } while ($pos != -1);
           
           if(count($pos_array) != 0){
               return true;
           } else {
               return false;
           }  

        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "wordModel", "strpos_all", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        } 
    }                                                                 
    
    
    /**
    * Конвертирует слово из внешней кодировки (БД или данные из запроса  : utf-8) во внутреннюю (cp1251)
    * 
    * @param string word     слово до конвертации
    * @param string cod_out  кодировка
    * @param string cod_id   кодировка
    * //$word_in = Model::factory("word")->convert_to_in($word_out);
    * @return word_in слово после конвертации
    */
    public function  convert_to_in($word_out = '', $cod_out = 'utf-8', $cod_id = 'cp1251'){
        try{
            return iconv( $cod_out, $cod_id, $word_out);
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "wordModel", "strpos_all", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        }      
    }
    
    /**
    * Конвертирует слово из внутренней кодировки (cp1251) во внутреннюю (БД или данные из запроса : utf-8)
    * 
    * @param string $word_in     слово до конвертации
    * @param string &$word_out   слово после конвертации
    * @param string cod_id  кодировка
    * @param string cod_out   кодировка
    * //$word_out = Model::factory("word")->convert_to_out($word_in);
    * @return word_in слово после конвертации 
    */
    public function  convert_to_out($word_in = '', $cod_in = 'cp1251', $cod_out = 'utf-8'){
        try{
            return iconv( $cod_in, $cod_out, $word_in);
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "wordModel", "strpos_all", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        }      
    }
    
    /**
    * Заменяет большие буквы русского алфавита на маленькие
    * 
    * @param string  $str     фраза для конвертирования
    * @return string $str     фраза после конвертации 
    */
    function strtolower_rus($str) {
        $str = strtolower($str);

        $search = array(
            'Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю','Ё'
        );

        $replace = array(
            'й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю','ё'
        );

        $str = str_replace($search, $replace, $str);
        return $str;
    }
    
    
    
    
}

================================================================================
ФАЙЛ: app/models/user_gameModel.php
================================================================================

<?php
/**
 * 
 * Класс обработки дуэли
 */
class user_gameModel extends Model{
    
    protected $_tableName = 'user_game';
    
    public function add($user_id_0                = -1, 
                        $user_id_1                = -1, 
                        
                        $rounds_count             = 0,
                        $active_user              = 0,
                        $active_round_number      = 0,
                        $active_round_start_flag  = 0,
                        $time_last_activity       = 0,                    
     
                        $user_cancel              = -1,
                        $round_cancel             = -1,
                        $user_winner_game         = -1){
        try{
           $new_game = array("user_id_0"                => $user_id_0,      
                             "user_id_1"                => $user_id_1,
                             
                             "rounds_count"             => $rounds_count,
                             "active_user"              => $active_user,
                             "active_round_number"      => $active_round_number,
                             "active_round_start_flag"  => $active_round_start_flag,
                             "time_last_activity"       => SConfig::$time,
                                                                                            
                             "user_cancel"              => $user_cancel,
                             "round_cancel"             => $round_cancel,
                             "user_winner_game"         => $user_winner_game);
                             
            $oNewUserGame = Model::factory("user_game")->create($new_game);                
            //$oNewUserGame = Model::factory("user_game")->create($new_game);                
            return $oNewUserGame;
            
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "user_gameModel", "add", $user_id_0);
            throw new Exception ($e->getMessage(), $e->getCode());
        }                        
    }
    
    public function deleteGame($user_id, $game_id){
        
        try{
            //$oNewUserGame = Model::factory("user_game")->delete(array("id" => $game_id));
            $oNewUserGame = Model::factory("user_game", $game_id)->delete();
            //$this->save();                
            return 1;
            
        } catch(Exception $e) {
            
            LOG_CRASH::add($e->getCode(), $e->getMessage(), "user_gameModel", "deleteGame", $user_id);
            throw new Exception ($e->getMessage(), $e->getCode());
        }                        
    }
}

================================================================================
ФАЙЛ: app/compilelist.php
================================================================================

<?php
require 'errors.php';
require 'notifications.php';
require 'db.php';
require 'cache.php';
//require 'debug.php';
require 'inputParser.php';
require 'jsonView.php';
require 'jsonCoder.php';
//require 'validate.php';
require 'log.php';
require 'social/social.php';
require 'log_crash.php';  

require 'controllers/abstractController.php';
require 'controllers/cacheController.php';

require 'controllers/generalController.php';

require 'controllers/userController.php';
require 'controllers/log/logController.php'; 

require 'controllers/dailyController.php';
require 'controllers/boosterController.php';
require 'controllers/mailController.php';
require 'controllers/statisticsController.php';
require 'controllers/shopController.php';
require 'controllers/giftController.php';
require 'controllers/missionController.php';
require 'controllers/storageController.php';

require 'controllers/eventController.php';

require 'controllers/lotteryController.php';
//require 'controllers/starController.php';

                                                             
require 'models/Model.php';

require 'models/userModel.php';
//require 'models/level_statModel.php';
require 'models/levelModel.php';
require 'models/user_ordersModel.php';

require 'models/user_daily_actionsModel.php';
require 'models/daily_bonus_statModel.php';

require 'models/varModel.php';
//require 'models/var_clientModel.php';

require 'models/log/log_moneyModel.php';  

require 'models/session_keyModel.php';
require 'models/mailModel.php';

require 'models/booster_statModel.php';
require 'models/user_boosterModel.php';


require 'models/giftModel.php';

require 'models/missionModel.php';
require 'models/mission_statModel.php';
require 'models/mission_keyModel.php';
require 'models/stageModel.php';
require 'models/stage_statModel.php';
require 'models/stage_timeModel.php';
require 'models/stage_keyModel.php';
require 'models/companyModel.php';
require 'models/company_statModel.php';

require 'models/friendModel.php';

require 'models/event_statModel.php';
require 'models/eventModel.php';

require 'models/task_statModel.php';

require 'models/shop/shop_money1_statModel.php';
require 'models/shop/shop_money2_statModel.php';
require 'models/shop/shop_energy_statModel.php';
require 'models/shop/shop_energy_max_statModel.php';

require 'models/shop/shop_booster_statModel.php';
require 'models/shop/shop_booster_stat_setModel.php';

require 'models/shop/shop_social_statModel.php';
require 'models/shop/shop_promotion_statModel.php';

require 'models/shop/shop_stage_statModel.php';

require 'models/shop/shopModel.php';

require 'models/storageModel.php';

//модули отвечающие за статистику
require 'models/statistics/statisticsModel.php';
require 'models/statistics/statistics_missionModel.php';
require 'models/statistics/statistics_mission_countModel.php';

require 'models/wordModel.php';
require 'models/library_statModel.php';

require 'models/adminModel.php';



require 'models/lottery_statModel.php';
require 'models/lotteryModel.php';
									   

//require 'models/user_top_expModel.php';
//require 'models/user_top_starModel.php';
//require 'models/user_starModel.php';


?>

================================================================================
ФАЙЛ: index_admin.php
================================================================================

 <html>
 <head>
     <title>TestForm</title>
 </head>
 <body>
    <?php echo '<p>Test</p>'; ?>
 </body>
</html>


================================================================================
ФАЙЛ: index_server_cache_flush.php
================================================================================

<?php   
                                 
require ("common.php");   
 
LOG::printDate();
LOG::printText("server_cache flush_start");


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  $date = date("Y.m.d H:m:s");
  if(!CacheAccess::flush())
  {
      $date = date("Y.m.d H:m ");
      
      echo "Cache flush : ERROR (".$date.")";
	  //LOG::printText("server cache flush | ERROR");
  } else 
  {
      
     
      echo "Cache flush : OK (".$date.")";
	  //LOG::printText("server cache flush | OK");
  }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
LOG::printText("server_cache flush_end");
LOG::printDate();

//fclose( $f); 
?>


================================================================================
ФАЙЛ: index_for_debug.php
================================================================================

<?php                                    
require ("common.php");    //Подключаются библиотеки и основыне классы
$response = array ();

   $DEBUG_MANUAL = 0;
   $DEBUG_STRING = 1;
   //----------------------------
   $s_key = "";
   $TYPE_APPLYCATION = Sconfig::$test_flag;
   //$OUT  = 0;
   //$TEST = 1;

   //$flag_USE_DEBUG = $DEBUG_MANUAL;
   $flag_USE_DEBUG = $DEBUG_STRING;
   
   if($flag_USE_DEBUG == $DEBUG_MANUAL )
   {
       
       $controller_m = "user";
       $action_m     = "get_profile";
       
       $args = array();

       $args["full"] = "true";
       $args["ids"] = "100200300,100200710";

      
       //$args["answer0"]     = "Вопрос0";
       //$args["answer1"]     = iconv('cp1251','utf-8',"Вопрос1");
       //$args["answer2"]     = iconv('utf-8','cp1251',"Вопрос2");
       //$args["answer3"]     = iconv('cp1251','utf-8',"Вопрос3");

       //$args["time0"]       = "1";
       //$args["time1"]       = "2";
       //$args["time2"]       = "4";
       //$args["time3"]       = "15";
      
       //$args["start_round_key"]       = "198039";
 
        //3)
        $start_round_key   = 830236;
       
       ////////$args["full"] = "true";
       ////////$args["ids"] = array(100200300, 100200301);
       ////////$args["reason_id"] = "5";
       
       //$args['id_in_type'] = 2;
   
   } else if ($flag_USE_DEBUG == $DEBUG_STRING )
   { 
       
       
         //------------------------------------------------------------------------------------------------------------
         //------------------------------------------------------------------------------------------------------------
         //------------------------------------------------------------------------------------------------------------
         // general
         $string_M = 'm=|||uid||510547483489|||s_key||-1|||m||0||0||daily.refresh|||m||0||1||{}';
         // 
         // // general
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||general.get_data|||m||0||1||{}';
         // user
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||user.init|||m||0||1||{}';
         
         //stage_open
         //$string_M = '|||uid||100200710|||s_key||-1|||m||0||0||mission.stage_open|||m||0||1||{"stage_stat_id":0,"cost_type":0}';
         //stage_key_send
         //$string_M = '|||uid||100200710|||s_key||-1|||m||0||0||mission.stage_open|||m||0||1||{"stage_stat_id":0,"cost_type":0}';
         
         //stage_time_check
         
         //$string_M = '|||uid||100200301|||s_key||-1|||m||0||0||mission.stage_time_check|||m||0||1||{"stage_stat_id":"1"}';
         //$string_M = '|||uid||100200710|||s_key||-1|||m||0||0||mission.end|||m||0||1||{"start_key":177136, "point":200}';
         //$string_M = '|||uid||100200710|||s_key||-1|||m||0||0||mission.end|||m||0||1||{"start_key":183111, "point":200}';
         
         
         //$string_M = '|||uid||100200710|||s_key||-1|||m||0||0||user.init|||m||0||1||{}';
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_end|||m||0||1||{"id":7}';
          
         //$string_M = 'm=|||uid||556818369153|||s_key||1896918|||m||0||0||booster.game_get_right_sign|||m||0||1||{"task_id":33}';
         //$string_K = "89e4b3384aa5aa8";
         
         
         //------------------------------------------------------------------------------------------------------------
         //начала этапа
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_start|||m||0||1||{"stage_stat_id":0, "cost_type":0}';
         //------------------------------------------------------------------------------------------------------------
         //------------------------------------------------------------------------------------------------------------
         //начала миссии
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.start|||m||0||1||{"mission_stat_id":2}';
         //------------------------------------------------------------------------------------------------------------
         //конец миссии
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.end|||m||0||1||{"start_key":903137, "point":15}';
         //------------------------------------------------------------------------------------------------------------
         //конец этапа
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_end|||m||0||1||{"id":13}';
         //------------------------------------------------------------------------------------------------------------
         //начала этапа
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_start|||m||0||1||{"stage_stat_id":1, "cost_type":0}';
         //------------------------------------------------------------------------------------------------------------
         
         
         //попросить ключ для нового этапа
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_key_ask|||m||0||1||{"user_donator_id":"100200301","stage_stat_id":1}';
         //------------------------------------------------------------------------------------------------------------
         //ответ на просьбу ключа
         //$string_M = '|||uid||100200301|||s_key||-1|||m||0||0||mission.stage_key_send|||m||0||1||{"stage_key_id":"39"}';
         //------------------------------------------------------------------------------------------------------------
         //ответ на просьбу ключа
         //$string_M = '|||uid||100200301|||s_key||-1|||m||0||0||mission.stage_key_cancel|||m||0||1||{"stage_key_id":"39"}';
         //------------------------------------------------------------------------------------------------------------
         //проверка времени для следующего этапа
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_time_check|||m||0||1||{"company_stat_id":"0", "stage_position":"1"}';
         //------------------------------------------------------------------------------------------------------------
         //записывает запись в хранилище
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||storage.set|||m||0||1||{"key_data":"key data","data":"data"}';
         //------------------------------------------------------------------------------------------------------------
         //находит запись в хранилище
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||storage.get|||m||0||1||{"key_data":"key data"}';
         //------------------------------------------------------------------------------------------------------------
         //проверка 
         //$string_M = '|||uid||100200300|||s_key||-1|||m||0||0||mission.stage_key_refresh|||m||0||1||{}';
         //------------------------------------------------------------------------------------------------------------
         
         
         
   }
   //--------------------------------------------------------------------------
    
   
    $action     = null;
    $controller = null;
    
   if($flag_USE_DEBUG == $DEBUG_STRING){
        //$_REQUEST['m'] = $string_M;
                           
        //--COD
        $data    = array(); 
        $data    = $string_M;   
        
        /*
        $sSig = md5(strtolower($string_M).$sKeySig);
        $keyClient =  $string_K;
        
        //new Rsa
        $prvkey = new Crypt_RSA_Key( $N, $D, "private");
                            
        if(!Crypt_RSA_Key::isValid( $prvkey))
           die("Invalid RSA private key from string");

        $rsa_obj = new Crypt_RSA;                                                    
        $md5Client = $rsa_obj->decryptBinary( $keyClient, $prvkey);
        
        
        $sPiceMd5 = substr($sSig,0,15); 
        if(0 != strcmp( $sPiceMd5, $md5Client )){
            die("Invalid COD private key from string"); 
        }
        */
       
        //--
        $aComp   = array();
        $aComp   = explode("|||", $data);
        $aCommand = array();
        $aCommand['m'] = array();
                            
        for( $Index = 0; $Index < count( $aComp); $Index++ ){
             $Command = explode("||", $aComp[$Index]);  
        if( $Command[0] != "m"){
             $aCommand[ $Command[0] ] = $Command[1];
        }
        else{
                if( ! array_key_exists( $Command[1], $aCommand['m']) ){
                  $aCommand['m'][ $Command[1]] = array();
                }
                $aCommand['m'][ $Command[1]][ $Command[2]] = $Command[3];
            } 
        }
    }
    else if($flag_USE_DEBUG == $DEBUG_MANUAL)
    {
        $aCommand ['uid'] = 3074750;
        $aCommand['m'][0][0] = $controller_m.".".$action_m; 
        $aCommand['auth_key'] = "b2c1923aa5650acc62b5655b00ea92e1"; 
  
        //args:
        $string_args = "{";
        $count_point = 0;
        foreach($args as $key => $value)
        {
            if($count_point != 0){
               $string_args = $string_args.","; 
            }
            $count_point++;
            $string_args = $string_args."\"".$key."\":".$value;
        }
        $string_args = $string_args."}";
        $aCommand['m'][0][1] =  $string_args;
       //------------------------
        
    }
    
    
	if($aCommand ['uid'] == NULL)
	{
	    //DBAccess::insert ( 'test', array ( 'text1' => "undencode".$_REQUEST['m'], 'text2' => date("Y-F-d.h:m:s") ), array ('id'));
	}
 
  
 
/* Парсим входящие данные */
try 
{       
     
    $uid_1 = 0;
    $response_time_0 = time();             
//	fprintf(  $f, "try\n");
//	fprintf(  $f, "try_one\n"); 
 
    $u = $aCommand ['uid'];
	$a = $aCommand ['auth_key'];


	if (! isset ( $aCommand ['uid'] ) || ! isset ( $aCommand ['auth_key'] ))
	{
	
//	fprintf(  $f, "errorIncorrectInput0\n"); 
        ///////////////////////////////////////////////errors::exc ( errors::errorIncorrectInput, 'Wrong auth' );
    }
	
//    fprintf(  $f, "uid = ".$aCommand ['uid']."\n"); 
 //   fprintf(  $f, "auth_key = ".$aCommand ['auth_key']."\n"); 
        
    $socialId = SOCIAL_ID;
    //$socialUserId = substr ( $_REQUEST ['uid'], 1 );
    $uid_1 = $aCommand ['uid'];                                                                           
    if (! isset ( SConfig::$social [$socialId] ) || ! $aCommand ['uid'])
	{
//		fprintf(  $f, "errorIncorrectInput1\n"); 
		$uid_1 = $aCommand ['uid'];
		
		//LOG::printText("Uid : $uid_1");
        
		errors::exc ( errors::errorIncorrectInput, 'Cant find social network' );
    }    
    
    social::$authAPI = social::get ( SConfig::$social [$socialId] ['name'], SConfig::$social [$socialId] ['apiId'], SConfig::$social [$socialId] ['apiSecret'], $aCommand ['uid'] );
    
//LOG::printText("______text2");
       
    if (! social::$authAPI->checkAuth ( $aCommand ['auth_key'] ))
        errors::exc ( errors::errorIncorrectInput, 'Wrong auth' );
   
    $ip = new inputParser ( $aCommand );
                            
    $user = Model::factory ( 'user', social::$authAPI->getUserId () );
                   
     
	
    while ( $cmd = $ip->getCmd () ) 
    { 
        if (is_array ( $cmd )) 
        {
            $ca = $cmd [0];
            
            $args = JsonCoder::jsonDecode( $cmd [1], true );
            //$args = json_decode ( $cmd [1], true );
            
            $ca2 = explode ( ".", $ca );
            
		    if (count ( $ca2 ) == 2) 
            {
                $controller = $ca2 [0] . "Controller";
                $action = $ca2 [1] . "Action";
                
                            if($user->id == 3074750)
							{
								//DBAccess::insert ( 'test', array ( 'text1' => $controller."+".$action, 'text2' => date("Y-F-d.h:m:s") ), array ('id'));
							}
			} 
            else if (count ( $ca2 ) == 1) 
                {
                    $controller = "indexController";
                    $action = $ca2 [0] . "Action";
                    
      
	                if($user->id == 3074750)
					{
						//DBAccess::insert ( 'test', array ( 'text1' => $controller."+".$action, 'text2' => date("Y-F-d.h:m:s") ), array ('id'));
					}
                } 
                else 
                {
				    if($user->id == 3074750)
                    {
				        //DBAccess::insert ( 'test', array ( 'text1' =>"error", 'text2' => date("Y-F-d.h:m:s") ), array ('id'));
					}
                    $response [] = array ($ca, '', errors::errorIncorrectCommand );
                    continue;
                }
                    
              
              //DBAccess::insert ( 'test', array ( 'text1' => "S", 'text2' => date("Y-F-d.h:m:s") ), array ('id'));
            

                                                  
            if (class_exists ( $controller )) 
            { //Если контроллер существует
                $ctrl = new $controller ( $user );
                //DBAccess::insert ( 'test', array ( 'text1' => "ctrl". $ctrl, 'text2' => date("Y-F-d.h:m:s") ), array ('id'));
                $time0 = 0;
                $time1 = 0;
                if (method_exists ( $ctrl, $action )) 
                { // Если действие существует
                    try 
                    {
                        if (
                        	strtolower ( $ca ) != 'user.new_user'       &&						
                            strtolower ( $ca ) != 'description.getdata' && 
                            strtolower ( $ca ) != 'user.init'           &&
							strtolower ( $ca ) != 'general.get_data'    
                            ) //initial commands - always miss them   
                        {
                              
                              $answer = $ctrl->user->checkExist ();    //if return "-1" => user is not created
                              if($answer == -1)
                              {
         
                              }
                              if(Sconfig::$session_key_flag == TRUE){
                                  $ctrl->user->checkSessionKey( $aCommand ['s_key'] );
                                  $s_key = $aCommand ['s_key'];
                              }
                              
                        }
                        else
                        {
                        }
                          
                        $response [] = array ($ca, $ctrl->$action ( $args ) );    
                      
                        if(strtolower ( $ca ) == 'user.newuser'  ||  strtolower ( $ca ) == 'user.init'){
                             $s_key =  $response[0][1]['s_key'];
                        }
                        else if(strtolower ( $ca ) == 'description.getdata' )
                        {
                        }                                                                                                       
                        else
                        {
                        }
                        
                    } 
                    
                    catch ( Exception $e ) {  
                        //Обертка эксепшеном контроллера для того чтобы очередь команд не прерывалась
                        $response [] = array ($ca, $e->getMessage (), $e->getCode () );
                    }   
                } 
                else {   // Если действие не существует
                        $response [] = array ($ca, '', errors::errorNoAction );
                     }   
            } 
            else {   // Если контроллер не существует
                     $response [] = array ($ca, '', errors::errorNoController );
                 }   
        } 
        else 
        {
            $response [] = array ('', $cmd, errors::errorUnknown );
        }
    }
} 
catch ( Exception $e ) 
{  
    errors::$errorQueue [] = array ('', $e->getMessage (), $e->getCode () );
}  //Эксепшен для всего остального(работа с соц.апи, очередью команд)

if (notifications::exist ()) 
{
    $response = array_merge ( $response, notifications::getList () );
}

if (count ( errors::$errorQueue ) > 0) 
{
    $response = array_merge ( $response, errors::$errorQueue );
}
$viewClass = SConfig::$defaultView . "View";

$view = new $viewClass ();
$view->display ( $response );

?>


================================================================================
ФАЙЛ: index_notification_od_all.php
================================================================================

<?php

require ("common.php");
//22222222222 

LOG::printLine();
LOG::printDate();
LOG::printText("server_script_start");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
ignore_user_abort();
set_time_limit(360000);
$response = array();



$socialId = SOCIAL_ID;


$aCommand ['uid'] = 147784953;
social::$authAPI = social::get(SConfig::$social [$socialId] ['name'], SConfig::$social [$socialId] ['apiId'], SConfig::$social [$socialId] ['apiSecret'], $aCommand ['uid']);
   

try {
    
    //social::$authAPI->sendMass("123");
    //social::$authAPI->sendSimple(574760396098, "Проверка: 123_2019.08.05 23:15");
    LOG::printText('timerModel:sendNotificationTask()_begin');  
         
        /*
          $aNotificationList = Model::factory('notification')->getList(array('flag_send' => 0), array('id'));
          $countNotSendNotif = count($aNotificationList);
          
          if($countNotSendNotif > 0 )
          {
              //РїРѕСЃР»Р°С‚СЊ РїРµСЂРІРѕРµ
              $aNotificationRecord =  $aNotificationList[0];
              $aNotification       =  Model::factory('notification', $aNotificationRecord['id'])->get();
              $massage             =  $aNotification['text'];
              
              $aNotification['flag_send'] = 1;
              Model::factory('notification')->create($aNotification);
              LOG::printText("timerModel:sendNotificationTask() | massage = $massage");
              
              //----------------    
              //$res = social::$authAPI->sendAll($massage); 
              //$response = social::$authAPI->sendNotif(518141720992, $massage);
              //$response = social::$authAPI->sendNotif(189796475794, $massage);
              $response = social::$authAPI->sendAll($massage, 1);
              echo "sendAll : OK (".$date.")";
              //----------------
          } 
          else
          {
              LOG::printText("timerModel:sendNotification() | send_error");  
          }
        */
    
          $massage = "Забери свой ежедневный бонус, он тебе пригодится на выходных!";
          $response = social::$authAPI->sendAll($massage, 1);
          echo "sendAll : OK (".$date.")";
          
          LOG::printText('timerModel:sendNotification()_end');  
   
} catch (Exception $e) {
    errors::$errorQueue [] = array('modul', $e->getMessage(), $e->getCode());
}
if (notifications::exist()) {
    $response = array_merge($response, notifications::getList());
}
if (count(errors::$errorQueue) > 0) {
    $response = array_merge($response, errors::$errorQueue);
}
$viewClass = SConfig::$defaultView . "View";

$view = new $viewClass ();
$view->display($response);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
LOG::printText("server_script_end");
LOG::printDate();
LOG::printLine();
LOG::printLine();
//$viewClass = SConfig::$defaultView . "View";
//$view = new $viewClass ();
//$view->display ( $response );
//fclose( $f); 
?>


================================================================================
ФАЙЛ: indexcback.php.php
================================================================================

<?php
header("Content-Type: application/json; encoding=utf-8");

$secret_key = 'hz8sPcPyvrSrfuai86yJ'; // Защищенный ключ приложения

$input = $_POST;

// Проверка подписи
$sig = $input['sig'];
unset($input['sig']);
ksort($input);
$str = '';
foreach ($input as $k => $v) {
  $str .= $k.'='.$v;
}

if ($sig != md5($str.$secret_key)) {
  $response['error'] = array(
    'error_code' => 10,
    'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.',
    'critical' => true
  );
} else {
  // Подпись правильная
  switch ($input['notification_type']) {
    case 'get_item':
      // Получение информации о товаре
      $item = $input['item']; // наименование товара

if ($item == 'item1') {
        $response['response'] = array(
          'item_id' => 1,
          'title' => '1 GD',
          'photo_url' => 'http://painticon.com/roadgladiators/htdocs/GUI_Bank_1.jpg',
          'price' => 1
        );
      } elseif ($item == 'item2') {
        $response['response'] = array(
          'item_id' => 5,
          'title' => '5 GD',
          'photo_url' => 'http://painticon.com/roadgladiators/htdocs/GUI_Bank_1.jpg',
          'price' => 5
        );
      } else {
        $response['error'] = array(
          'error_code' => 20,
          'error_msg' => 'Товара не существует.',
          'critical' => true
        );
      }
      break;

case 'get_item_test':
      // Получение информации о товаре в тестовом режиме
      $item = $input['item'];
      if ($item == 'item1') {
        $response['response'] = array(
          'item_id' => 1,
          'title' => '1 GD (тестовый режим)',
          'photo_url' => 'http://painticon.com/roadgladiators/htdocs/GUI_Bank_1.jpg',
          'price' => 5
        );
      } elseif ($item == 'item2') {
        $response['response'] = array(
          'item_id' => 5,
          'title' => '5 GD (тестовый режим)',
          'photo_url' => 'http://painticon.com/roadgladiators/htdocs/GUI_Bank_1.jpg',
          'price' => 10
        );
      } else {
        $response['error'] = array(
          'error_code' => 20,
          'error_msg' => 'Товара не существует.',
          'critical' => true
        );
      }
      break;

case 'order_status_change':
      // Изменение статуса заказа
      if ($input['status'] == 'chargeable') {
        $order_id = intval($input['order_id']);

// Код проверки товара, включая его стоимость
        $app_order_id = 1; // Получающийся у вас идентификатор заказа.

$response['response'] = array(
          'order_id' => $order_id,
          'app_order_id' => $app_order_id,
        );
      } else {
        $response['error'] = array(
          'error_code' => 100,
          'error_msg' => 'Передано непонятно что вместо chargeable.',
          'critical' => true
        );
      }
      break;

case 'order_status_change_test':
      // Изменение статуса заказа в тестовом режиме
      if ($input['status'] == 'chargeable') {
        $order_id = intval($input['order_id']);

$app_order_id = 1; // Тут фактического заказа может не быть - тестовый режим.

$response['response'] = array(
          'order_id' => $order_id,
          'app_order_id' => $app_order_id,
        );
      } else {
        $response['error'] = array(
          'error_code' => 100,
          'error_msg' => 'Передано непонятно что вместо chargeable.',
          'critical' => true
        );
      }
      break;
  }
}

echo json_encode($response);
?> 

================================================================================
ФАЙЛ: index_cback_od.php
================================================================================

<?php

require ("common.php");   
 
LOG::printText("index_cback");

ignore_user_abort ();
set_time_limit ( 15 );
 
$socialId = SOCIAL_ID;
$aCommand ['uid'] = 559452713728;
social::$authAPI = social::get ( SConfig::$social [$socialId] ['name'], SConfig::$social [$socialId] ['apiId'], SConfig::$social [$socialId] ['apiSecret'], $aCommand ['uid'] );
 
header('Content-Type: application/xml; charset=utf-8');

$path_to_image_gold = PATH_TO_IMAGE_GOLD;
$secret_key = SConfig::$social [$socialId] ['apiSecret'];    // Защищенный ключ приложения
$appKey     = SConfig::$social [$socialId] ['apiPublic'];

$input = $_GET;
//$input =   "amount=10application_key=CBAOEKHMABABABABAcall_id=192498944method=callbacks.paymentproduct_code=0transaction_id=1025280_1358854013654transaction_time=2013-01-22 14:26:53uid=4754966608640756332:amount=10application_key=CBAGKQABABABABABAcall_id=1358854013654method=callbacks.paymentproduct_code=0transaction_id=1025280_1358854013654transaction_time=2013-01-22 14:26:53uid=4754966608640756332";
//читаем переданные параметры 
if(0){
    
    $input["method"] = 'callbacks.payment';
    $input["application_key"] = 'CBAOEKHMABABABABA';
    $input["call_id"] = 192498944 ;
    
    
    $input["sig"] = "1234";
    
    $input["uid"] = "3074750";
    $input["amount"] = 10;
    $input["transaction_time"] = '2013-01-22 14:26:53';
    $input["product_code"] = 0;
    $input["transaction_id"] = '1025280_1358854013654';

    $product_code       = $input["product_code"];
    $product_option     = $input["product_option"];
    $extra_attributes   = $input["extra_attributes"];
    $currency           = $input["currency"];
}  


$method             = $input["method"];
$application_key    = $input["application_key"];
$call_id            = $input["call_id"] ;
$sig                = $input["sig"];
$uid                = $input["uid"];
$amount             = $input["amount"];
$transaction_time   = $input["transaction_time"];
$product_code       = $input["product_code"];
$transaction_id     = $input["transaction_id"];

$product_code       = $input["product_code"];
$product_option     = $input["product_option"];
$extra_attributes   = $input["extra_attributes"];
$currency           = $input["currency"];

LOG::printText("");
LOG::printText("...");

LOG::printText("method:$method");
LOG::printText("application_key:$application_key");
LOG::printText("call_id:$call_id");
LOG::printText("sig:$sig");
LOG::printText("uid:$uid");
LOG::printText("amount:$amount");
LOG::printText("transaction_time:$transaction_time");
LOG::printText("transaction_id:$transaction_id");

LOG::printText("......+......");


LOG::printText("product_code:$product_code");
LOG::printText("product_option:$product_option");
LOG::printText("extra_attributes:$extra_attributes");
LOG::printText("currency:$currency");
LOG::printText("...");
LOG::printText("");

//method:callbacks.payment
//application_key:CBAGKQABABABABABA
//call_id:1358847011626
//sig:773761a3dc66a63257839a71438172ea
//uid:4754966608640756332
//amount:1
//transaction_time:2013-01-22 12:30:11
//transaction_id:1025280_1358847011626

//проверяем метод
if($method != "callbacks.payment") {
   
    LOG::printText("callbacks.payment");
   
    header('invocation-error: 1001');
    print('<?xml version="1.0" encoding="UTF-8"?>');
    ?>
    <ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
    <error_code>1001</error_code>
    <error_msg>Method does not exist.</error_msg>
    </ns2:error_response>
    <?php
    LOG::printText("index_cback_end");
    die();
}

//проверяем appKey
if($appKey != $application_key) {
   
    LOG::printText("appKey:$appKey");
    LOG::printText("application_key:$application_key");
      
    LOG::printText("application_key");
    
    //-----------------------------------
    header('invocation-error: 1001');
    print('<?xml version="1.0" encoding="UTF-8"?>');
    ?>
    <ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
    <error_code>1001</error_code>
    <error_msg>Parameter application_key not specified or invalid</error_msg>
    </ns2:error_response>

    <?php
    LOG::printText("index_cback_end");
    die();
    //-----------------------------------
}
 
$sig = $input['sig'];
unset($input['sig']);
ksort($input);
$str = '';
foreach ($input as $k => $v) {
  $str .= $k.'='.$v;
}

if (0) {
//if ($sig != md5($str.$secret_key)) {
    //----------------------------------------------------------- 
    header('invocation-error: 104'); 
    print('<?xml version="1.0" encoding="UTF-8"?>'); 
    ?>  
    <ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
    <error_code>104</error_code>
    <error_msg>Invalid signature.</error_msg>
    </ns2:error_response>
    <?php
    LOG::printText("index_cback_end");
    die();
    //----------------------------------------------------------- 
 } else {
      LOG::printText("true");
      //--------------------------------------------------------------------------------------------------------
      //server action-------------------------------------------------------------------------------------------
      //--------------------------------------------------------------------------------------------------------
      //TODO: 1) Transaction ID is unique and Application/Game server must ignore transactions with duplicated ID. 
      //TODO: It must return positive result, if transaction was processed successfully earlier.
      //TODO: 2) Cообщаем серверу о поступившем платеже
      //TODO: 3) Cохраняем в БД успешную транзакцию  
      
      $app_order_id = 0; //инициализация    
      $sType = 'votes';

      $item_id     = intval( $product_code );    //идинтификатор товара в приложении
                  
      $gold        = 0;
      $vote        = 0; //ok
      $item_price  = 0;
                   
      if(! Model::factory('shop_social_stat', $item_id)->exist()){
      
          //------------------------- 
          header('invocation-error: 1');
          print('<?xml version="1.0" encoding="UTF-8"?>'); 
          ?>
          <ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
          <error_code>1</error_code>
          <error_msg>invalid payment</error_msg>
          </ns2:error_response>
          
          <?php
          LOG::printText("index_cback_end");
          die();
          //------------------------- 

      } else {
              $aPriceSocial = Model::factory('shop_social_stat', $item_id)->get();
              $listPriceSocial = Model::factory('shop_social_stat')->getList(array('id' => $item_id), array('cost_social_money'));
              $cost_social_money = $listPriceSocial[0]['cost_social_money'];
              $item_price = $cost_social_money; 
      }
      
      if(! Model::factory('user', $uid )->exist()){
             
              //------------------------- 
              header('invocation-error: 1'); 
              print('<?xml version="1.0" encoding="UTF-8"?>'); 
              ?>
              <ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
              <error_code>1</error_code>
              <error_msg>invalid payment</error_msg>
              </ns2:error_response>
              
              <?php
              LOG::printText("index_cback_end");
              die();
              //------------------------- 
      }
      
      $list_user_orders = Model::factory('user_orders')->getList(array('user_id'   => $uid,
                                                                       'order_id'  => $transaction_id), array());
      
      $countOrders = count($list_user_orders);

      LOG::printText("-----uid:$uid");
      LOG::printText("-----countOrders:$countOrders");
      
      $flag_take_goods = false;
      if(count($list_user_orders) == 0){
          $flag_take_goods = true;
      } else {
          
             //старый order
             foreach($list_user_orders as $aOrderOld){
                 $sTransactionOld = $aOrderOld['order_id'];
                 if($sTransactionOld == $transaction_id){
                     $flag_take_goods = false;
                     break;
                 }
             }
                               
             $aOrderOld = $list_user_orders[0]; 
             $app_order_id  = $aOrderOld['id'];
      }
              
      if($flag_take_goods == true){
          
             LOG::printText("in if");//новый order  
             
             if(1 != Model::factory('shop')->buyGoods( $uid, $item_id, $item_price)){
                  //------------------------- 
                  header('invocation-error: 1'); 
                  print('<?xml version="1.0" encoding="UTF-8"?>'); 
                  ?>
                  <ns2:error_response xmlns:ns2='http://api.forticom.com/1.0/'>
                  <error_code>1</error_code>
                  <error_msg>invalid payment</error_msg>
                  </ns2:error_response>
                  
                  <?php
                  LOG::printText("index_cback_end");
                  die();
                  //------------------------- 
               break; //после switch нет обработок, кроме возврата, поэтому достаточно выкинуть из switch 
            }
                               
             $aOrderNew = array("user_id"     =>  $uid,
                                "receiver_id" =>  0,
                                "order_id"    =>  $transaction_id,
                                "date"        =>  $transaction_time,
                                "status"      =>  "buy_gold",
                                "item"        =>  "",
                                "item_id"     =>  $item_id,
                                "date_server" =>  Sconfig::$time,
                                "item_price"  =>  $amount,
                                "client_inform_flag"  => 0
                               );
                                          
          $oOrderNew = Model::factory('user_orders')->create($aOrderNew);
          $aOrderNew = $oOrderNew->get();
          
          //--------------------------------------------------------------------------------
          //идентификатор заказа в приложении. Должен быть уникальным для каждого заказа.  
          $app_order_id = $aOrderNew['id'];
          LOG::printText("-----app_order_id:$app_order_id");
          LOG::printText("-----vote:$vote");
          //--------------------------------------------------------------------------------
          //Добавить GD
          LOG::printText("index_cback_end");
          //Model::factory('user', $uid )->buyGold($gold, $vote);
           LOG::printText("all ok: true, new order create");
      } else {
           LOG::printText("all ok: false, old order find");
      }
       
      LOG::printText("set response");
          //-------------------------
          print('<?xml version="1.0" encoding="UTF-8"?>');
          ?>
             <callbacks_payment_response xmlns="http://api.forticom.com/1.0/">true</callbacks_payment_response>
          <?php
          LOG::printText("index_cback_end");
          die();
          //------------------------- 

      //--------------------------------------------------------------------------------------------------------
      //server action end --------------------------------------------------------------------------------------
      //--------------------------------------------------------------------------------------------------------

  
  }

//echo json_encode($response);

  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  LOG::printText("index_cback_end");
?> 

================================================================================
ФАЙЛ: index_cback_vk.php
================================================================================

<?php

try{
    require ("common.php");   

     
    LOG::printLine(); 
    LOG::printLine();  
    LOG::printDate();
    LOG::printText("index_cback");
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    ignore_user_abort ();
    set_time_limit ( 50 );
     
    $socialId = SOCIAL_ID;
    $aCommand ['uid'] = 147784953;
    social::$authAPI = social::get ( SConfig::$social [$socialId] ['name'], SConfig::$social [$socialId] ['apiId'], SConfig::$social [$socialId] ['apiSecret'], $aCommand ['uid'] );
     
    $path_to_image_gold = PATH_TO_IMAGE_GOLD;
    header("Content-Type: application/json; encoding=utf-8");
    $secret_key = CLIENT_SECRET;    // Защищенный ключ приложения


    $input = $_POST;

    //заглушка
    //первый раз:
    //------------------------------------------------------------------------------------------------------
    //:
    //$str = "app_id=2056916item=0lang=ru_RUnotification_type=get_item_testorder_id=33460receiver_id=46104264user_id=46104264";
    //$str = "app_id=2056916item=0lang=ru_RUnotification_type=get_item_testorder_id=33476receiver_id=3074750user_id=3074750";
      /*
    $input = array("app_id"            => "2056916",
                   "item"              => "0",
                   "lang"              => "ru_RU",
                   "notification_type" => "get_item_test",
                   "order_id"          => "33476",
                   "receiver_id"       => "3074750",
                   "user_id"           => "3074750");
      */
    //------------------------------------------------------------------------------------------------------

    //второй раз
    //------------------------------------------------------------------------------------------------------
    //$str = "app_id=2056916date=1351164094item=0item_id=0item_photo_url=http://painticon.com/internet/roadgladiators_out/htdocs/unity/load/GUI_GD.pngitem_price=5item_title=1 GD (тестовый режим)notification_type=order_status_change_testorder_id=33485receiver_id=3074750status=chargeableuser_id=3074750";
    //app_id=2056916
    //date=1351164094
    //item=0
    //item_id=0
    //item_photo_url=http://painticon.com/internet/roadgladiators_out/htdocs/unity/load/GUI_GD.png
    //item_price=5
    //item_title=1 GD (тестовый режим)
    //notification_type=order_status_change_test
    //order_id=33485
    //receiver_id=3074750
    //status=chargeable
    //user_id=3074750
    ///*
    $input = array("app_id"            => "2056916",
                   "date"              => "1351164094",
                   "item"              => "",
                   "item_id"           => "0",
                   "item_photo_url"    => "http://painticon.com/internet/roadgladiators_out/htdocs/unity/load/GUI_GD.png",
                   "item_price"        => "10",
                   "item_title"        => "1 GD (тестовый режим)",
                   "notification_type" => "order_status_change_test",
                   "order_id"          => "33485",
                   "receiver_id"       => "3074750",
                   "status"            => "chargeable",
                   "user_id"           => "3074750");
    //------------------------------------------------------------------------------------------------------
    // */
    // Проверка подписи
    $sig = $input['sig'];
    unset($input['sig']);
    ksort($input);
    $str = '';
    foreach ($input as $k => $v) {
      $str .= $k.'='.$v;
    }


    //$a = Model::factory('user')->checkBalance( $input['user_id'] );
    LOG::printText("POST:".$str);

    //----------------------------------------
    //убрать!!!! Только для теста
     $sig = md5($str.$secret_key);
    //----------------------------------------

    if ($sig != md5($str.$secret_key)) {
      $response['error'] = array(
        'error_code' => 10,
        'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.',
        'critical' => true
      );
    } else {
      // Подпись правильная
      switch ($input['notification_type']) {
   
          case 'get_item':{
               // Получение информации о товаре в тестовом режиме
               // item    - наименование товара, переданное диалоговому окну покупки
               // item_id - идентификатор товара в приложении 
               // В нашем случае $item_id == item
               $item_id = $input['item'];
               if(!Model::factory('shop_social_stat', $item_id)->exist()){
                     $response['error'] = array(
                                                'error_code' => 20,
                                                'error_msg'  => 'Операция невозможна, отсутствует запись в прайсе',
                                                'critical'   => true
                                               );
                } else {
                      $aPriceSocial = Model::factory('shop_social_stat', $item_id)->get();

                      $response['response'] = array(
                                                    'item_id'    => $item_id,
                                                    'title'      => $aPriceSocial['description'],
                                                    'photo_url'  => $aPriceSocial['image_path'],
                                                    'price'      => $aPriceSocial['social_money_cost']
                                                   );
                }
          } break;

          case 'get_item_test':{
               // Получение информации о товаре в тестовом режиме
               $item_id = $input['item'];
                  if(!Model::factory('shop_social_stat', $item_id)->exist()){
                     $response['error'] = array(
                                                'error_code' => 20,
                                                'error_msg'  => 'Операция невозможна, отсутствует запись в прайсе',
                                                'critical'   => true
                                               );
                } else {
                      $aPriceSocial = Model::factory('shop_social_stat', $item_id)->get();

                      $response['response'] = array(
                                                    'item_id'    => $item_id,
                                                    'title'      => $aPriceSocial['description'],
                                                    'photo_url'  => $aPriceSocial['image_path'],
                                                    'price'      => $aPriceSocial['social_money_cost']
                                                   );
                }
          } break;

          case 'order_status_change':{
              //------------------------------------------ 
              // Изменение статуса заказа в тестовом режиме
              if ($input['status'] == 'chargeable') {
                   $app_order_id     = 0;    
                   
                   $sType    = 'votes';
                   $item     = $input['item'];
                   $aInemPises = explode('_', $item);
                   if(count($aInemPises) == 1){
                       $sType = 'goods';                  //попытка пользователя купить что-то в магазине
                   } else if($aInemPises[0] == "offer"){
                       $sType = 'offer';                  //попытка пользователя воспользоваться акцией
                   }
       
                   $order_id    = intval($input['order_id']);
                   $user_id     = $input["user_id"];
                   $item_id     = intval($input['item_id']);    //идинтификатор товара в приложении
                   $item_price  = 0;
                   
                   switch ($sType){
                      case 'goods':{
                          //----------------------------------------------------------------------------------------
                          //Обработка попытки купить что-либо в магазине  
                          if(!Model::factory('shop_social_stat', $item_id)->exist()){
                              $response['error'] = array(
                                                         'error_code' => 20,
                                                         'error_msg'  => 'Операция невозможна, отсутствует запись в прайсе',
                                                         'critical'   => true
                                                        );
                              break;  //после switch нет обработок, кроме возврата, поэтому достаточно выкинуть из switch 
                          } else {
                              $aPriceSocial = Model::factory('shop_social_stat', $item_id)->get();
                              $listPriceSocial = Model::factory('shop_social_stat')->getList(array('id' => $item_id), array('social_money_cost'));
                              $social_money_cost = $listPriceSocial[0]['social_money_cost'];
                              $item_price = $social_money_cost; 
                          }
                          //----------------------------------------------------------------------------------------
                          LOG::printText("order_status_change_test".'chargeable');
                          $list_user_orders = Model::factory('user_orders')->getList(array('user_id'   => $user_id,
                                                                                            'order_id' => $order_id), array());
                          if(count($list_user_orders) == 0){
                               $aOrderNew = array("user_id"     =>  $input["user_id"],
                                                  "receiver_id" =>  $input["receiver_id"],
                                                  "order_id"    =>  $input["order_id"],
                                                  "date"        =>  $input["date"],
                                                  "status"      =>  $input["status"],
                                                  "item"        =>  $input["item"],
                                                  "item_id"     =>  $input["item_id"],
                                                  "date_server" =>  Sconfig::$time,
                                                  "item_price"  => $input['item_price']
                                                  );
                               if(1 != Model::factory('shop')->buyGoods( $user_id, $input["item_id"], $item_price)){
                                   $response['error'] = array(
                                                              'error_code' => 101,
                                                              'error_msg'  => 'Товар не может быть предоставлен, ошибка обработки',
                                                              'critical'   => true
                                                              );
                                   break; //после switch нет обработок, кроме возврата, поэтому достаточно выкинуть из switch 
                               }
                               $oOrderNew = Model::factory('user_orders')->create($aOrderNew);
                               $aOrderNew = $oOrderNew->get();
                               //--------------------------------------------------------------------------------
                               //идентификатор заказа в приложении. Должен быть уникальным для каждого заказа.  
                               $app_order_id = $aOrderNew['id'];
                               //--------------------------------------------------------------------------------
                               
                           } else {
                               //старый order
                               $aOrderOld     = $list_user_orders[0]; 
                               $app_order_id  = $aOrderOld['id'];
                           }
                
                           $response['response'] = array(
                                                         'order_id'     => $order_id,
                                                         'app_order_id' => $app_order_id,
                                                        );
                          //----------------------------------------------------------------------------------------
                      } break;
                      case 'offer':{
                          $item_price = intval($input['item_price']);
                          //----------------------------------------------------------------------------------------
                          //Обработка попытки воспользоваться акцией
                          //!Акции на данном этапе не реализована
                          $response['error'] = array(
                                                     'error_code' => 100,
                                                     'error_msg' => 'Передано непонятно что вместо chargeable.',
                                                     'critical' => true
                                                     );                    
                          //----------------------------------------------------------------------------------------
                      } break;
                      default:{
                             $massage = "user_id".$input["user_id"].",order_id=".$input["order_id"].",date=".$input["date"].",status=".$input["status"].",item=".$input["item"].",item_id=".$input["item_id"].",item_price=".$input['item_price'];
                             LOG_CRASH::add($massage, "index_cback", "", $user_id);
                             $response['error'] = array(
                                                        'error_code' => 101,
                                                        'error_msg'  => 'Товар не может быть предоставлен, ошибка обработки',
                                                        'critical'   => true
                                                       );
                                         
                 
                      } break;
                   }
              } else {
                   $response['error'] = array(
                                               'error_code' => 100,
                                               'error_msg' => 'Передано непонятно что вместо chargeable.',
                                               'critical' => true
                                              );
              }
          } break;

          case 'order_status_change_test':{
              // Изменение статуса заказа в тестовом режиме
                            //------------------------------------------ 
              // Изменение статуса заказа в тестовом режиме
              if ($input['status'] == 'chargeable') {
                   $app_order_id     = 0;    
                   
                   $sType    = 'votes';
                   $item     = $input['item'];
                   $aInemPises = explode('_', $item);
                   if(count($aInemPises) == 1){
                       $sType = 'goods';                  //попытка пользователя купить что-то в магазине
                   } else if($aInemPises[0] == "offer"){
                       $sType = 'offer';                  //попытка пользователя воспользоваться акцией
                   }
       
                   $order_id    = intval($input['order_id']);
                   $user_id     = $input["user_id"];
                   $item_id     = intval($input['item_id']);    //идинтификатор товара в приложении
                   
                   $item_price  = 0;
                   
                   switch ($sType){
                      case 'goods':{
                          //----------------------------------------------------------------------------------------
                          //Обработка попытки купить что-либо в магазине  
                          if(!Model::factory('shop_social_stat', $item_id)->exist()){
                              $response['error'] = array(
                                                         'error_code' => 20,
                                                         'error_msg'  => 'Операция невозможна, отсутствует запись в прайсе',
                                                         'critical'   => true
                                                        );
                              break;  //после switch нет обработок, кроме возврата, поэтому достаточно выкинуть из switch 
                          } else {
                              $aPriceSocial = Model::factory('shop_social_stat', $item_id)->get();
                              $listPriceSocial = Model::factory('shop_social_stat')->getList(array('id' => $item_id), array('social_money_cost'));
                              $social_money_cost = $listPriceSocial[0]['social_money_cost'];
                              $item_price = $social_money_cost; 
                          }
                          //----------------------------------------------------------------------------------------
                          LOG::printText("order_status_change_test".'chargeable');
                          $list_user_orders = Model::factory('user_orders')->getList(array('user_id'   => $user_id,
                                                                                           'order_id'  => $order_id), array());
                          if(count($list_user_orders) == 0){
                               $aOrderNew = array("user_id"     =>  $input["user_id"],
                                                  "receiver_id" =>  $input["receiver_id"],
                                                  "order_id"    =>  $input["order_id"],
                                                  "date"        =>  $input["date"],
                                                  "status"      =>  $input["status"],
                                                  "item"        =>  $input["item"],
                                                  "item_id"     =>  $input["item_id"],
                                                  "date_server" =>  Sconfig::$time,
                                                  "item_price"  => $input['item_price']
                                                  );
                               if(1 != Model::factory('shop')->buyGoods( $user_id, $input["item_id"], $item_price)){
                                   $response['error'] = array(
                                                              'error_code' => 103,
                                                              'error_msg'  => 'Товар не может быть предоставлен, ошибка обработки',
                                                              'critical'   => true
                                                              );
                                   break; //после switch нет обработок, кроме возврата, поэтому достаточно выкинуть из switch 
                               }
                               $oOrderNew = Model::factory('user_orders')->create($aOrderNew);
                               $aOrderNew = $oOrderNew->get();
                               //--------------------------------------------------------------------------------
                               //идентификатор заказа в приложении. Должен быть уникальным для каждого заказа.  
                               $app_order_id = $aOrderNew['id'];
                               //--------------------------------------------------------------------------------
                               
                           } else {
                               //старый order
                               $aOrderOld     = $list_user_orders[0]; 
                               $app_order_id  = $aOrderOld['id'];
                           }
                
                           $response['response'] = array(
                                                         'order_id'     => $order_id,
                                                         'app_order_id' => $app_order_id,
                                                        );
                          //----------------------------------------------------------------------------------------
                      } break;
                      case 'offer':{
                          $item_price = intval($input['item_price']);
                          //----------------------------------------------------------------------------------------
                          //Обработка попытки воспользоваться акцией
                          //!Акции на данном этапе не реализована
                          $response['error'] = array(
                                                     'error_code' => 100,
                                                     'error_msg' => 'Передано непонятно что вместо chargeable.',
                                                     'critical' => true
                                                     );                    
                          //----------------------------------------------------------------------------------------
                      } break;
                      default:{
                             $massage = "user_id".$input["user_id"].",order_id=".$input["order_id"].",date=".$input["date"].",status=".$input["status"].",item=".$input["item"].",item_id=".$input["item_id"].",item_price=".$input['item_price'];
                             LOG_CRASH::add($massage, "index_cback", "", $user_id);
                             $response['error'] = array(
                                                        'error_code' => 101,
                                                        'error_msg'  => 'Товар не может быть предоставлен, ошибка обработки',
                                                        'critical'   => true
                                                       );
                                         
                 
                      } break;
                   }
              } else {
                   $response['error'] = array(
                                               'error_code' => 100,
                                               'error_msg' => 'Передано непонятно что вместо chargeable.',
                                               'critical' => true
                                              );
              }
          } break;
      }
    }

    echo json_encode($response);

      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
      LOG::printText("index_cback");
      LOG::printDate();
      LOG::printLine();  
      LOG::printLine();
}
catch ( Exception $e ){ 
   //Эксепшен для всего остального(работа с соц.апи, очередью команд)
   // errors::$errorQueue [] = array ('', $e->getMessage (), $e->getCode () );
    //errors::$errorQueue [] = array ('', $e->getMessage (), $e->getCode () );
    $response['error'] = array(
                               'error_code' => 110,
                               'error_msg'  => "Товар не может быть предоставлен, ошибка обработки. (Code:".$e->getCode ()."),(Details:".$e->getMessage().")",
                               'critical'   => true
                              );
                 
    echo json_encode($response);
}   

================================================================================
ФАЙЛ: common.php
================================================================================

<?php

	//$rtdir = realpath(dirname(__FILE__)."/..");
	$rtdir = realpath(dirname(__FILE__));
	set_include_path($rtdir."/app".PATH_SEPARATOR.$rtdir."/lib".PATH_SEPARATOR.$rtdir."/conf".PATH_SEPARATOR.get_include_path());
	include($rtdir."/lib/common.php");
	include ('compilelist.php');
						/*
						//###-----------------------------------------#
						$fh = fopen("1argLog.txt", "a+");
						fwrite($fh, "---".date("Y-F-d.h:m:s")."\r\n");
						fwrite($fh, "1^".$rtdir."\r\n");
						fwrite($fh, "2^".get_include_path()."\r\n");
						//###-----------------------------------------#
	
	
	
	
						//###-----------------------------------------#
						fwrite($fh, "---end \r\n");   
						fclose($fh);
						//###-----------------------------------------#
						*/

?>

================================================================================
ФАЙЛ: index_server_add_money.php
================================================================================

<?php   
                                 
require ("common.php");   
 
LOG::printLine(); 
LOG::printLine();  
LOG::printDate();
LOG::printText("index_server_add_money.php");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     
  $socialId = SOCIAL_ID;
  $aCommand ['uid'] = 147784953;
  social::$authAPI = social::get ( SConfig::$social [$socialId] ['name'], SConfig::$social [$socialId] ['apiId'], SConfig::$social [$socialId] ['apiSecret'], $aCommand ['uid'] );
 
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  $CR    = 0;
  $GOLD  = 1;
  $TN    = 2;
  
  //брать из ини например
  //VAR............###      
  $MONEYTYPE     = $TN;
  $IDUSER        = 50;
  $COUNT         = 1; 
  $COMMENT       = "";
  //VAR............###     
 
   
  
  switch( $MONEYTYPE ){
      case $CR:{
          Model::factory('user', $IDUSER)->changeMoney ( $COUNT, 20 , array('comment' => $COMMENT ) );
      } break;
      case $GOLD:{
          Model::factory('user', $IDUSER)->changeGold($COUNT, 0, 20, array('comment' => $COMMENT ));
      } break;
      case $TN:{
          Model::factory('user', $IDUSER)->changeMoneyTN( $COUNT, 20, array('comment' => $COMMENT ) ); 
      } break;
      
  }          

  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
  LOG::printText("index_server_add_money");
  LOG::printDate();
  LOG::printLine();  
  LOG::printLine();  
    //$viewClass = SConfig::$defaultView . "View";
    //$view = new $viewClass ();
    //$view->display ( $response );

    //fclose( $f); 
?>


================================================================================
ФАЙЛ: index_server_script_test.php
================================================================================

<?php

require ("common.php");
//22222222222 

LOG::printLine();
LOG::printDate();
LOG::printText("server_script_start");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
ignore_user_abort();
set_time_limit(36000);
$response = array();



$socialId = SOCIAL_ID;


$aCommand ['uid'] = 518141720992;
social::$authAPI = social::get(SConfig::$social [$socialId] ['name'], SConfig::$social [$socialId] ['apiId'], SConfig::$social [$socialId] ['apiSecret'], $aCommand ['uid']);



try {

    if (0) {
        $cs = CACHE_SERVER;

        echo <<<_END
    <html>
        <head>
            <title>Тест/$cs</title>
        </head>
        <body>
            <pre>
           
_END;


        $user_id = $aCommand ['uid'];
        echo "Test($user_id):<br>";
        echo "Test2($user_id):<br>";
        echo "CACHE_SERVER:" . CACHE_SERVER . "<br>";
        echo "CACHE_PORT:" . CACHE_PORT . "<br>";
        echo "CACHE_PREFIX:" . CACHE_PREFIX . "<br>";

        //echo "Some result2:</br>";
        echo "<br>";
        echo "Mission:<br>";
        $listMission = Model::factory("mission")->getList(array("user_id" => $user_id));
        foreach ($listMission as $key => $value) {
            echo "[$key] = $value:<br>";
