Example #1
0
function getOnlineUsersInfo($sUserId, $bInit)
{
    global $aXmlTemplates;
    $aSaved = getSavedUsers();
    $aActive = getActiveUsers($sUserId);
    $aFriends = getFriends($sUserId);
    saveUsers($aActive);
    $sContents = "";
    if ($bInit) {
        $aFullUsers = array_unique(array_merge($aActive['online'], $aFriends));
    } else {
        $aFullUsers = array_diff($aActive['online'], $aSaved['online'], $aFriends);
        $aNewOfflineUsers = array_intersect($aSaved['online'], $aActive['offline']);
        $aNewOnlineUsers = array_intersect($aSaved['offline'], $aActive['online'], $aFriends);
        for ($i = 0; $i < count($aNewOfflineUsers); $i++) {
            $sContents .= parseXml($aXmlTemplates['user'], $aNewOfflineUsers[$i], FALSE_VAL);
        }
        for ($i = 0; $i < count($aNewOnlineUsers); $i++) {
            $sContents .= parseXml($aXmlTemplates['user'], $aNewOnlineUsers[$i], TRUE_VAL);
        }
    }
    $rResult = getUsersMedia($aFullUsers);
    if ($rResult != null) {
        for ($i = 0; $i < mysql_num_rows($rResult); $i++) {
            $aUser = mysql_fetch_assoc($rResult);
            $aUserInfo = getUserInfo($aUser['ID']);
            $sOnline = in_array($aUser['ID'], $aActive['online']) ? TRUE_VAL : FALSE_VAL;
            $sFriend = in_array($aUser['ID'], $aFriends) ? TRUE_VAL : FALSE_VAL;
            $sMusic = $aUser['CountMusic'] > 0 ? TRUE_VAL : FALSE_VAL;
            $sVideo = $aUser['CountVideo'] > 0 ? TRUE_VAL : FALSE_VAL;
            $sContents .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUserInfo['nick'], $aUserInfo['sex'], $aUserInfo['age'], $aUserInfo['photo'], $aUserInfo['profile'], $sOnline, $sFriend, $sMusic, $sVideo);
        }
    }
    return makeGroup($sContents, "users");
}
Example #2
0
             $sMessage = "msgFileNotFound";
             break;
     }
     $sContents = parseXml($aXmlTemplates['result'], $sMessage, $sStatus);
     if ($sStatus == SUCCESS_VAL) {
         $sContents .= parseXml($aXmlTemplates['file'], $sId, $sGetFile, $sGetFile, $sImageFile, $aFile['Time'], $sSaveName);
     }
     break;
     /**
      * Get user's playlist by ID
      */
 /**
  * Get user's playlist by ID
  */
 case 'getList':
     $sContents = makeGroup(video_getList($sId), "files");
     break;
 case 'processFile':
     $sTempFileName = $sId . TEMP_FILE_NAME;
     $sTempFile = $sFilesPath . $sTempFileName . FLV_EXTENSION;
     @unlink($sTempFile);
     deleteTempFiles($sId);
     $sRecordedFileUrl = getRMSUrl($sServerApp, true) . $sStreamsFolder . $sFile . FLV_EXTENSION;
     $sContents = parseXml($aXmlTemplates['result'], "msgProcessingError", FAILED_VAL);
     if (function_exists("curl_init")) {
         $fTemp = fopen($sTempFile, "w");
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, $sRecordedFileUrl);
         curl_setopt($curl, CURLOPT_FILE, $fTemp);
         curl_setopt($curl, CURLOPT_HEADER, false);
         curl_exec($curl);
Example #3
0
switch ($sAction) {
    case 'getPlugins':
        $sFolder = "/plugins/";
        $sContents = "";
        $sPluginsPath = $sModulesPath . $sModule . $sFolder;
        if (is_dir($sPluginsPath)) {
            if ($rDirHandle = opendir($sModulesPath . $sModule . $sFolder)) {
                while (false !== ($sPlugin = readdir($rDirHandle))) {
                    if (strpos($sPlugin, ".swf") === strlen($sPlugin) - 4) {
                        $sContents .= parseXml(array(1 => '<plugin><![CDATA[#1#]]></plugin>'), $sModulesUrl . $sModule . $sFolder . $sPlugin);
                    }
                }
            }
            closedir($rDirHandle);
        }
        $sContents = makeGroup($sContents, "plugins");
        break;
        /**
         * gets skins
         */
    /**
     * gets skins
     */
    case 'getSkins':
        $sContents = printFiles($sModule, "skins", false, true);
        break;
        /**
         * Sets default skin.
         */
    /**
     * Sets default skin.
/**
 * ===> The rest of functions is for XML version only. <===
 * Update user's status
 * @comment - Refreshed
 */
function refreshUsersInfo($iId = 0, $sMode = 'all')
{
    global $aXmlTemplates;
    global $sModule;
    $iUpdateInterval = (int) getSettingValue($sModule, "updateInterval");
    $iIdleTime = (int) getSettingValue($sModule, "idleTime");
    $iDeleteTime = (int) getSettingValue($sModule, "deleteTime");
    //--- refresh current user's track ---//
    $sQuery = "UPDATE `" . MODULE_DB_PREFIX . "CurrentUsers` SET `Status`='" . USER_STATUS_OLD . "', `When`=UNIX_TIMESTAMP() WHERE `Status`<>'" . USER_STATUS_KICK . "' AND IF(`Status` IN ('" . USER_STATUS_NEW . "', '" . USER_STATUS_TYPE . "', '" . USER_STATUS_ROOM . "') AND `When`>=(UNIX_TIMESTAMP()-" . $iUpdateInterval . "), `ID`='-1', `ID`='" . $iId . "')";
    getResult($sQuery);
    //--- refresh other users' states ---//
    $sQuery = "UPDATE `" . MODULE_DB_PREFIX . "CurrentUsers` SET `When`=UNIX_TIMESTAMP(), `Status`='" . USER_STATUS_IDLE . "' WHERE `Status`<>'" . USER_STATUS_IDLE . "' AND `When`<=(UNIX_TIMESTAMP()-" . $iIdleTime . ")";
    getResult($sQuery);
    //--- delete idle users, whose track was not refreshed more than delete time ---//
    $sQuery = "DELETE FROM `" . MODULE_DB_PREFIX . "CurrentUsers` WHERE `Status`='" . USER_STATUS_IDLE . "' AND `When`<=(UNIX_TIMESTAMP()-" . $iDeleteTime . ")";
    getResult($sQuery);
    //--- delete old rooms ---//
    $sQuery = "DELETE FROM `" . MODULE_DB_PREFIX . "Rooms` WHERE `Status`='" . ROOM_STATUS_DELETE . "' AND `When`<=(UNIX_TIMESTAMP()-" . $iDeleteTime . ")";
    getResult($sQuery);
    //--- delete old messages ---//
    $sQuery = "DELETE FROM `" . MODULE_DB_PREFIX . "Messages` WHERE `When`<=(UNIX_TIMESTAMP()-" . $iDeleteTime . ")";
    getResult($sQuery);
    //--- Get information about users in the chat ---//
    switch ($sMode) {
        case 'upd':
            $rRes = getResult("SELECT ccu.`ID` AS `ID`, ccu.`Nick` AS `Nick`, ccu.`Sex` AS `Sex`, ccu.`Age` AS `Age`, ccu.`Desc` AS `Desc`, ccu.`Photo` AS `Photo`, ccu.`Profile` AS `Profile`, ccu.`Status` AS `Status`, ccu.`RoomID` AS `RoomID`, rp.`Type` AS `Type` FROM `" . MODULE_DB_PREFIX . "Profiles` AS rp, `" . MODULE_DB_PREFIX . "CurrentUsers` AS ccu WHERE rp.`ID`=ccu.`ID` ORDER BY ccu.`When`");
            while ($aUser = mysql_fetch_assoc($rRes)) {
                if ($aUser['ID'] == $iId && !($aUser['Status'] == USER_STATUS_KICK || $aUser['Status'] == USER_STATUS_TYPE)) {
                    continue;
                }
                switch ($aUser['Status']) {
                    case USER_STATUS_NEW:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['Nick'], $aUser['Sex'], $aUser['Age'], $aUser['Desc'], $aUser['Photo'], $aUser['Profile'], $aUser['Type'], $aUser['RoomID']);
                        break;
                    case USER_STATUS_ROOM:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['RoomID']);
                        break;
                    case USER_STATUS_TYPE:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['RoomID'], $aUser['Type']);
                        break;
                    case USER_STATUS_IDLE:
                    case USER_STATUS_KICK:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status']);
                        break;
                }
            }
            break;
        case 'all':
            $rRes = getResult("SELECT ccu.`ID` AS `ID`, ccu.`Nick` AS `Nick`, ccu.`Sex` AS `Sex`, ccu.`Age` AS `Age`, ccu.`Desc` AS `Desc`, ccu.`Photo` AS `Photo`, ccu.`Profile` AS `Profile`, ccu.`RoomID` AS `RoomID`, rp.`Type` AS `Type` FROM `" . MODULE_DB_PREFIX . "Profiles` AS rp, `" . MODULE_DB_PREFIX . "CurrentUsers` AS ccu WHERE rp.`ID`=ccu.`ID` AND ccu.`Status` NOT IN ('" . USER_STATUS_IDLE . "', '" . USER_STATUS_KICK . "') AND rp.`Banned`='false' ORDER BY ccu.`When`");
            while ($aUser = mysql_fetch_assoc($rRes)) {
                $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], "new", $aUser['Nick'], $aUser['Sex'], $aUser['Age'], $aUser['Desc'], $aUser['Photo'], $aUser['Profile'], $aUser['Type'], $aUser['RoomID']);
            }
            break;
    }
    return makeGroup($sContent, "users");
}
     $res = getResult("SELECT * FROM `" . MODULE_DB_PREFIX . "Files` AS `F` INNER JOIN `" . MODULE_DB_PREFIX . "PlayLists` AS `PL` ON `ID` = `FileId` WHERE " . $sApprovedFactor . "`PL`.`Owner` = '" . $sId . "' ORDER BY `PL`.`Order`");
     for ($i = 0; $i < mysql_num_rows($res); $i++) {
         $aFile = mysql_fetch_assoc($res);
         $sPlayFile = $aFile['ID'] . PLAY_EXTENSION;
         $sSaveFile = $aFile['ID'] . SAVE_EXTENSION;
         $sImageFile = $aFile['ID'] . IMAGE_EXTENSION;
         $sThumbFile = $aFile['ID'] . THUMB_FILE_NAME . IMAGE_EXTENSION;
         if (!file_exists($sFilesPath . $sThumbFile)) {
             $sThumbFile = $sImageFile;
         }
         if (!file_exists($sFilesPath . $sPlayFile) || !file_exists($sFilesPath . $sSaveFile) || !file_exists($sFilesPath . $sImageFile)) {
             continue;
         }
         $sContents .= parseXml($aXmlTemplates['file'], $aFile['ID'], $sPlayFile, $sSaveFile, $sImageFile, $sThumbFile, $aFile['Time'], $aFile['Approved'], $aFile['Title'], $aFile['Tags'], $aFile['Description']);
     }
     $sContents = makeGroup($sContents, "files");
     $sContents = parseXml($aXmlTemplates['result'], "", SUCCESS_VAL) . $sContents;
     break;
     /**
      * Change playlist elements playing order
      */
 /**
  * Change playlist elements playing order
  */
 case 'changeOrder':
     $res = getResult("SELECT `FileId`, `Order` FROM `" . MODULE_DB_PREFIX . "PlayLists` WHERE `Owner`='" . $sId . "' AND (`FileId`='" . $sFile . "' OR `FileId`='" . $sSecondFile . "')");
     $oFile1 = mysql_fetch_assoc($res);
     $oFile2 = mysql_fetch_assoc($res);
     getResult("UPDATE `" . MODULE_DB_PREFIX . "PlayLists` SET `Order`='" . $oFile1['Order'] . "' WHERE `FileId`='" . $oFile2['FileId'] . "' AND `Owner`='" . $sId . "'");
     getResult("UPDATE `" . MODULE_DB_PREFIX . "PlayLists` SET `Order`='" . $oFile2['Order'] . "' WHERE `FileId`='" . $oFile1['FileId'] . "' AND `Owner`='" . $sId . "'");
     $sContents = parseXml($aXmlTemplates['result'], TRUE_VAL);
Example #6
0
/**
 * gets file contents
 * @param sWidget - the name of the widget.
 * @param sCase - skins/langs
 */
function getFileContents($sWidget, $sFile, $bArray = false)
{
    global $sModulesPath;
    global $aErrorCodes;
    $sFile = $sWidget . $sFile;
    $sFileName = $sModulesPath . $sFile;
    if (!file_exists($sFileName)) {
        return array('value' => getError($aErrorCodes[1], $sFile), 'status' => FAILED_VAL, 'contents' => $bArray ? array() : "");
    }
    $rHandle = fopen($sFileName, "rt");
    $iFileSize = filesize($sFileName);
    $sContents = $iFileSize > 0 ? fread($rHandle, filesize($sFileName)) : makeGroup("", "items");
    fclose($rHandle);
    $aContents = xmlGetValues($sContents, "item");
    return array('value' => "", 'status' => SUCCESS_VAL, 'contents' => $bArray ? $aContents : $sContents);
}
Example #7
0
             $sMessage = "msgFileNotFound";
             break;
     }
     $sContents = parseXml($aXmlTemplates['result'], $sMessage, $sStatus);
     if ($sStatus == SUCCESS_VAL) {
         $sContents .= parseXml($aXmlTemplates['file'], $sId, $sGetFile, $sGetFile, $sImageFile, $aFile['Time'], $sSaveName);
     }
     break;
     /**
      * Get user's playlist by ID
      */
 /**
  * Get user's playlist by ID
  */
 case 'getList':
     $sContents = makeGroup("", "files");
     break;
 case 'processFile':
     $sTempFileName = $sId . VC_TEMP_FILE_NAME;
     $sTempFile = $sFilesPath . $sTempFileName . VC_FLV_EXTENSION;
     @unlink($sTempFile);
     _deleteTempFiles($sId);
     $sRecordedFileUrl = getRMSUrl($sServerApp, true) . $sStreamsFolder . $sFile . VC_FLV_EXTENSION;
     $sContents = parseXml($aXmlTemplates['result'], "msgProcessingError", FAILED_VAL);
     if (function_exists("curl_init")) {
         $fTemp = fopen($sTempFile, "w");
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, $sRecordedFileUrl);
         curl_setopt($curl, CURLOPT_FILE, $fTemp);
         curl_setopt($curl, CURLOPT_HEADER, false);
         curl_exec($curl);
Example #8
0
             $aStatus = getSettingValue($sInner, "status", "main", true);
             $sStatus = $aStatus['status'] == FAILED_VAL ? WIDGET_STATUS_NOT_INSTALLED : $aStatus['value'];
             $sStatus = empty($sStatus) || $sStatus == "" ? WIDGET_STATUS_NOT_INSTALLED : $sStatus;
             $sStatus = "666" != checkPermissions($sModulesPath . $sInner . "/xml/main.xml") ? WIDGET_STATUS_NOT_INSTALLED : $sStatus;
             $sVersion = isset($aInfo) ? $aInfo['version'] : "";
             $sTitle = isset($aInfo) ? $aInfo['title'] : "";
             $sAuthor = isset($aInfo) ? $aInfo['author'] : "";
             $sAuthorUrl = isset($aInfo) ? $aInfo['authorUrl'] : "";
             $sImageUrl = file_exists($sModulesPath . $sInner . "/data/preview.jpg") ? $sModulesUrl . $sInner . "/data/preview.jpg" : "";
             $aContents[] = parseXml($aXmlTemplates['widget'], $sInner, $sVersion, $sTitle, $sAuthor, $sAuthorUrl, $sImageUrl, $sStatus, $sAdminUrl);
             $aTitles[] = $sTitle;
             array_multisort($aTitles, $aContents);
             $sContent = implode("", $aContents);
         }
     }
     $sContents = makeGroup($sContent, "widgets");
     break;
     /**
      * Gets widget code.
      */
 /**
  * Gets widget code.
  */
 case 'getWidgetCode':
     $aResult = getFileContents($sWidget, "/xml/main.xml", true);
     if ($aResult['status'] == SUCCESS_VAL) {
         $aContents = $aResult['contents'];
         $sCode = $aContents['code'];
         if (empty($sCode)) {
             if (secureCheckWidgetName($sWidget)) {
                 require_once $sModulesPath . $sWidget . "/inc/constants.inc.php";
  * Note. This action is used in XML mode and by ADMIN.
  */
 case 'update':
     //--- check for new rooms ---//
     $sContents .= makeGroup(getRooms('upd', $sId), "rooms");
     //--- update user's info ---//
     $sContents .= refreshUsersInfo($sId, 'upd');
     //--- check for new messages ---//
     $iUpdateInterval = (int) getSettingValue($sModule, "updateInterval");
     $sMsgs = "";
     $res = getResult("SELECT cm.`ID` AS `ID`, cm.`Msg` AS `Msg`, cm.`Style` AS `Style`, ccu.`ID` AS `userID` FROM `" . MODULE_DB_PREFIX . "Messages` AS cm, `" . MODULE_DB_PREFIX . "CurrentUsers` AS ccu WHERE cm.`UserID`=ccu.`ID` AND cm.`UserID`<>'" . $sId . "' AND cm.`When`>=(UNIX_TIMESTAMP()-" . $iUpdateInterval . ") ORDER BY cm.`ID`");
     while ($aMsg = mysql_fetch_assoc($res)) {
         $aStyle = unserialize($aMsg['Style']);
         $sMsgs .= parseXml($aXmlTemplates['message'], $aMsg['ID'], stripslashes($aMsg['Msg']), $aMsg['userID'], $aStyle['color'], $aStyle['bold'], $aStyle['underline'], $aStyle['italic'], $aStyle['smileset']);
     }
     $sContents .= makeGroup($sMsgs, "msgs");
     break;
     /**
      * Add message to database.
      */
 /**
  * Add message to database.
  */
 case 'newMessage':
     $c = $_REQUEST['color'] ? $_REQUEST['color'] : "0";
     $b = $_REQUEST['bold'] ? $_REQUEST['bold'] : "false";
     $u = $_REQUEST['underline'] ? $_REQUEST['underline'] : "false";
     $i = $_REQUEST['italic'] ? $_REQUEST['italic'] : "false";
     $sStyle = serialize(array('color' => $c, 'bold' => $b, 'underline' => $u, 'italic' => $i, 'smileset' => $sSmileset));
     getResult("INSERT INTO `" . MODULE_DB_PREFIX . "Messages`(`UserID`, `Msg`, `Style`, `When`) VALUES('" . $sId . "', '" . addslashes($sMsg) . "', '" . $sStyle . "', UNIX_TIMESTAMP())");
     break;
Example #10
0
function PrepareData(&$person_count,$type){
	
	global $GroupCostCenter;
	global $GroupPersonType;
	
	global $where;
	global $param;
	
	$payment_type = $_POST["PayType"] ;
	$pay_year = $_POST["pay_year"];
	$pay_month = $_POST["pay_month"];

	$where = "";
	$param = array(
		":year" => $pay_year,
		":month" => $pay_month,
		":ptype" => $payment_type
	);
	
	makeWhere();
	$group = makeGroup();
	
	$month_start = DateModules::shamsi_to_miladi($pay_year . "-" . $pay_month . "-1");
	
	if($type == 'TSummary') {
		manage_salary_utils::simulate_tax($pay_year, $pay_month, $payment_type);
		manage_salary_utils::simulate_bime($pay_year, $pay_month, $payment_type);
			
	$MainRows = PdoDataAccess::runquery("
		SELECT pi.salary_item_type_id,
			sit.full_title sit_title,
			sit.effect_type,
			max(pi.pay_year) pay_year,
			max(pi.pay_month) pay_month,
			sum(pay_value) pay_sum,
			sum(diff_pay_value * diff_value_coef) diff_pay_sum,
			sum(CASE WHEN pi.salary_item_type_id IN(146,147,148,747) THEN tts.value WHEN pi.salary_item_type_id IN(9920,145,144) THEN tis.value ELSE get_value END) get_sum,
			sum(CASE WHEN pi.salary_item_type_id IN(146,147,148,747,9920,145,144,744) THEN 0 ELSE diff_get_value * diff_value_coef END) diff_get_sum,
			sum(CASE WHEN pi.salary_item_type_id IN(146,147,148,747) THEN tts.param2 WHEN pi.salary_item_type_id IN(9920,145,144) THEN tis.param2 ELSE pi.param2 END) param2,
			sum(CASE WHEN pi.salary_item_type_id IN(146,147,148,747,9920,145,144,744) THEN 0 ELSE diff_param2 * diff_param2_coef END) diff_param2,
			sum(CASE WHEN pi.salary_item_type_id IN(146,147,148,747) THEN tts.param3 WHEN pi.salary_item_type_id IN(9920,145,144) THEN tis.param3 ELSE pi.param3 END) param3,
			sum(CASE WHEN pi.salary_item_type_id IN(146,147,148,747,9920,145,144,744) THEN 0 ELSE diff_param3 * diff_param3_coef END) diff_param3,
			sum(CASE
					WHEN (s.last_retired_pay IS NOT NULL
						AND s.last_retired_pay < '$month_start') THEN pi.param3
				END) retired_for_org_up30,
			sum(CASE
					WHEN (s.last_retired_pay IS NOT NULL
						AND s.last_retired_pay < '$month_start') THEN diff_param3 * diff_param3_coef
				END) diff_retired_for_org_up30,

			sum(CASE
					WHEN (s.last_retired_pay IS NULL
						OR s.last_retired_pay >= '$month_start') THEN pi.param3
				END) retired_for_org_dn30,
			sum(CASE
					WHEN (s.last_retired_pay IS NULL
						OR s.last_retired_pay >= '$month_start') THEN diff_param3 * diff_param3_coef
				END) diff_retired_for_org_dn30,
			sum(pi.param7) param7,
			sum(pi.diff_param7 * pi.diff_value_coef) diff_param7,								  
			max(s.person_type) person_type,
			max(pi.cost_center_id) cost_center_id,
			max(cc.title) cost_center_title,
			max(ou.ptitle) unit_title,
			max(s.person_type) person_type,
			max(w.ouid) ouid

		FROM payment_items pi
			INNER JOIN payments p
				ON(pi.pay_year = p.pay_year AND pi.pay_month = p.pay_month AND pi.staff_id = p.staff_id AND pi.payment_type = p.payment_type 
					AND pi.pay_year = :year AND pi.pay_month = :month)
			INNER JOIN writs w
				ON(p.writ_id = w.writ_id AND p.writ_ver = w.writ_ver AND p.staff_id = w.staff_id AND w.state=" . WRIT_SALARY . ")
			LEFT OUTER JOIN org_new_units ou
				ON(w.ouid = ou.ouid)
			LEFT OUTER JOIN cost_centers cc
				ON (pi.cost_center_id = cc.cost_center_id)
			LEFT OUTER JOIN salary_item_types sit
				ON (sit.salary_item_type_id = pi.salary_item_type_id AND sit.credit_topic = 1)
			LEFT OUTER JOIN staff s
				ON (pi.staff_id = s.staff_id)
			LEFT OUTER JOIN temp_tax_include_sum tts
				ON (tts.staff_id = pi.staff_id AND pi.salary_item_type_id IN(146,147,148,747))
			LEFT OUTER JOIN temp_insure_include_sum tis
				ON (tis.staff_id = pi.staff_id AND pi.salary_item_type_id IN(9920,145,144,744)) 
				
		WHERE pi.payment_type = :ptype AND pi.pay_year=:year AND pi.pay_month=:month $where
				
		GROUP BY pi.salary_item_type_id,sit.effect_type,sit.full_title $group
		ORDER BY pi.pay_year,pi.pay_month" . $group . ",pi.salary_item_type_id", $param);
	
	//echo PdoDataAccess::GetLatestQueryString();
	}
	elseif($type == 'Summary') {
	
		$MainRows = PdoDataAccess::runquery(" SELECT   pi.salary_item_type_id,
													   sit.full_title sit_title,
													   sit.effect_type,
													   max(pi.pay_year) pay_year,
													   max(pi.pay_month) pay_month,
													   sum(pay_value) pay_sum,
													   sum(diff_pay_value * diff_value_coef) diff_pay_sum,
													   sum(get_value) get_sum,
													   sum(diff_get_value * diff_value_coef) diff_get_sum,
													   sum(param2) param2,
													   sum(diff_param2 * diff_param2_coef) diff_param2,
													   sum(param3) param3,
													   sum(diff_param3 * diff_param3_coef) diff_param3,
													   sum(CASE
															  WHEN (s.last_retired_pay IS NOT NULL
																   AND s.last_retired_pay < '".$month_start."' ) THEN param3
														   END) retired_for_org_up30,
													   sum(CASE
															  WHEN (s.last_retired_pay IS NOT NULL
																   AND s.last_retired_pay < '".$month_start."' ) THEN diff_param3 * diff_param3_coef
														   END) diff_retired_for_org_up30,
														  
													   sum(CASE
															  WHEN (s.last_retired_pay IS NULL
																   OR s.last_retired_pay >= '".$month_start."' ) THEN param3
														  END) retired_for_org_dn30,
													   sum(CASE
															  WHEN (s.last_retired_pay IS NULL
																   OR s.last_retired_pay >= '".$month_start."' ) THEN diff_param3 * diff_param3_coef
														  END) diff_retired_for_org_dn30,
													   sum(pi.param7) param7,
													   sum(pi.diff_param7 * pi.diff_value_coef) diff_param7,								  
													   max(s.person_type) person_type,
													   max(pi.cost_center_id) cost_center_id,
													   max(cc.title) cost_center_title,
													   max(ou.ptitle) unit_title,
													   max(s.person_type) person_type,
													   max(w.ouid) ouid 
										    FROM payment_items pi
												  INNER JOIN payments p
													   ON(pi.pay_year = p.pay_year AND 
														  pi.pay_month = p.pay_month AND 
														  pi.staff_id = p.staff_id AND 
														  pi.payment_type = p.payment_type )
												  LEFT JOIN writs w
													   ON(p.writ_id = w.writ_id AND p.writ_ver = w.writ_ver AND p.staff_id = w.staff_id AND w.state=" . WRIT_SALARY . ")
												  LEFT OUTER JOIN org_new_units ou
													   ON(w.ouid = ou.ouid)
												  LEFT OUTER JOIN cost_centers cc
													   ON (pi.cost_center_id = cc.cost_center_id)
												  LEFT OUTER JOIN salary_item_types sit
													   ON (sit.salary_item_type_id = pi.salary_item_type_id)
												  LEFT OUTER JOIN staff s
													   ON (pi.staff_id = s.staff_id) 
										    WHERE pi.payment_type = :ptype AND pi.pay_year=:year AND pi.pay_month=:month  $where   
											GROUP BY pi.salary_item_type_id,sit.effect_type,sit.full_title $group
											ORDER BY pi.pay_year,pi.pay_month" . $group . ",pi.salary_item_type_id", $param );
											
					
																					
	}
	global $MainQuery;
	$MainQuery = PdoDataAccess::GetLatestQueryString();
	
	//............... counting persons number .................
	
	$dt = PdoDataAccess::runquery("
		select COUNT(DISTINCT pi.staff_id) person_count $group
		from payment_items pi
			INNER JOIN payments p 
				ON(pi.pay_year = p.pay_year AND pi.pay_month = p.pay_month AND pi.staff_id = p.staff_id AND pi.payment_type = p.payment_type)
			LEFT JOIN writs w
				ON(p.writ_id = w.writ_id AND p.writ_ver = w.writ_ver AND p.staff_id = w.staff_id AND w.state=" . WRIT_SALARY . ")
			LEFT OUTER JOIN staff s
				ON pi.staff_id=s.staff_id
		WHERE pi.payment_type = :ptype AND pi.pay_year=:year AND pi.pay_month=:month $where " .
		($group != "" ? " group by " . substr($group,1) : "") , $param);
		
		//echo PdoDataAccess::GetLatestQueryString();
	
	$person_count = array();
	foreach($dt as $row)
	{
		$group = "";
		$group = $GroupCostCenter ? $row["cost_center_id"] . "_" : "ALL_";
		$group .= $GroupPersonType ? $row["person_type"] : "ALL";

		$person_count[$group] = $row['person_count'];		
	}
	
	return $MainRows;
}
             $sContents .= parseXml($aXmlTemplates['board'], $sBoardId, BOARD_STATUS_NEW, $aBoard['Title'], $aUserInfo['nick'], $aUserInfo['profile'], $sImage);
         } else {
             $iModifiedTime = filemtime($sFilesPath . $sBoardId . $sFileExtension);
             if ($iModifiedTime >= $iCurrentTime - $iUpdateInterval) {
                 $sContents .= parseXml($aXmlTemplates['board'], $sBoardId, BOARD_STATUS_UPDATED);
             }
         }
     }
     for ($i = 0; $i < $iAllCount; $i++) {
         if (!isset($aBoards[$aAll[$i]])) {
             $sBoardId = $aAll[$i];
             @unlink($sFilesPath . $sBoardId . $sFileExtension);
             $sContents .= parseXml($aXmlTemplates['board'], $sBoardId, BOARD_STATUS_CLOSED);
         }
     }
     $sContents = makeGroup($sContents, 'boards');
     break;
     /**
      * Transmit new Scene file from specified Board.
      * param - boardId
      * param - width
      * param - height
      * param - data
      */
 /**
  * Transmit new Scene file from specified Board.
  * param - boardId
  * param - width
  * param - height
  * param - data
  */
  */
 case "updateOnlineUsers":
     $aCurDbOnline = getOnline();
     $aCurProgOnline = empty($_REQUEST['online']) ? array() : explode(",", $_REQUEST['online']);
     //--- Get new online users ---//
     $aNewOnline = array_diff($aCurDbOnline, $aCurProgOnline);
     foreach ($aNewOnline as $iNewOnline) {
         $aUserInfo = getUserInfo($iNewOnline);
         $sContents .= parseXml($aXmlTemplates['user'], $iNewOnline, $aUserInfo['nick'], $aUserInfo['sex'], $aUserInfo['age'], TRUE_VAL, $aUserInfo['photo'], $aUserInfo['profile']);
     }
     //--- Get new offline users ---//
     $aNewOffline = array_diff($aCurProgOnline, $aCurDbOnline);
     foreach ($aNewOffline as $iNewOffline) {
         $sContents .= parseXml($aXmlTemplates['user'], $iNewOffline, FALSE_VAL);
     }
     $sContents = makeGroup($sContents, "users");
     break;
     /**
      * Updates user's information in RayPresenceUsers table.
      * For Users, who didn't login into Ray Presence, but logged in into site.
      * @param id - user's ID.
      * @param status - user's status.
      */
 /**
  * Updates user's information in RayPresenceUsers table.
  * For Users, who didn't login into Ray Presence, but logged in into site.
  * @param id - user's ID.
  * @param status - user's status.
  */
 case "updateOnlineStatus":
     updateOnline($sId, $sStatus);
        $iCount = getValue("SELECT COUNT(`ID`) FROM `" . MODULE_DB_PREFIX . "Messages`");
        if ($iCount > $iMaxCount) {
            getResult("DELETE FROM `" . MODULE_DB_PREFIX . "Messages` ORDER BY `ID` LIMIT " . ($iCount - $iMaxCount));
        }
        $sIn = empty($sGot) ? "1" : "`ID` NOT IN (" . $sGot . ")";
        $sUserFactor = empty($sId) ? "" : " AND `UserID`<>'" . $sId . "'";
        $sSql = "SELECT * FROM `" . MODULE_DB_PREFIX . "Messages` WHERE " . $sIn . $sUserFactor . " AND `When`>=(UNIX_TIMESTAMP()-" . $iUpdateInterval . ") ORDER BY `ID`";
        //break shouldn't be here
    //break shouldn't be here
    case 'getMessages':
        $sContents = "";
        if (!isset($sSql)) {
            $sSql = "SELECT * FROM `" . MODULE_DB_PREFIX . "Messages` ORDER BY `ID`";
        }
        $rResult = getResult($sSql);
        while ($aMsg = mysql_fetch_assoc($rResult)) {
            $aUserInfo = empty($aMsg['UserID']) ? array('nick' => "", 'profile' => "") : getUserInfo($aMsg['UserID']);
            $sContents .= parseXml($aXmlTemplates['message'], $aMsg['ID'], stripslashes($aMsg['Msg']), $aUserInfo['nick'], $aUserInfo['profile']);
        }
        $sContents = makeGroup($sContents, "messages");
        break;
        /**
         * Add message to database.
         */
    /**
     * Add message to database.
     */
    case 'newMessage':
        getResult("INSERT INTO `" . MODULE_DB_PREFIX . "Messages`(`UserID`, `Msg`, `When`) VALUES('" . $sId . "', '" . addslashes($sMsg) . "', UNIX_TIMESTAMP())");
        break;
}
Example #14
0
 public function makeGroup()
 {
     $result = makeGroup();
     print_r($result);
 }
Example #15
0
/**
 * get extra files for module in XML format
 * @param $sModule - module name
 * @param $sFolder - folder name for which value is set
 * @param $bGetDate - get dates of files
 * @return $sContents - XML formatted result
 */
function printFiles($sModule, $sFolder = "langs", $bGetDate = false, $bGetNames = false)
{
    global $sIncPath;
    global $sModulesUrl;
    require_once $sIncPath . "xmlTemplates.inc.php";
    $aFileContents = getFileContents($sModule, "/xml/" . $sFolder . ".xml", true);
    $aFiles = $aFileContents['contents'];
    $aEnabledFiles = array();
    foreach ($aFiles as $sFile => $sEnabled) {
        if ($sEnabled == TRUE_VAL) {
            $aEnabledFiles[] = $sFile;
        }
    }
    $sDefault = $aFiles['_default_'];
    $aResult = getExtraFiles($sModule, $sFolder, true, $bGetDate);
    $sCurrent = $aResult['current'];
    $sCurrent = in_array($sCurrent, $aEnabledFiles) ? $sCurrent : $sDefault;
    $sCurrentFile = $sCurrent . "." . $aResult['extension'];
    $aRealFiles = array_flip($aResult['files']);
    $aFileDates = $aResult['dates'];
    $sContents = "";
    for ($i = 0; $i < count($aEnabledFiles); $i++) {
        if (isset($aRealFiles[$aEnabledFiles[$i]])) {
            $sFile = $aEnabledFiles[$i];
            if ($bGetDate) {
                $sContents .= parseXml($aXmlTemplates['file'], $sFile, $aFileDates[$aRealFiles[$sFile]]);
            } else {
                if ($bGetNames) {
                    $sName = $sFolder == "langs" ? getSettingValue($sModule, "_name_", $sFile, false, "langs") : getSettingValue($sModule, $sFile, "skinsNames");
                    if (empty($sName)) {
                        $sName = $sFile;
                    }
                    $sContents .= parseXml($aXmlTemplates['file'], $sFile, $sName, "");
                } else {
                    $sContents .= parseXml($aXmlTemplates['file'], $sFile);
                }
            }
        }
    }
    $sContents = makeGroup($sContents, "files");
    $sContents .= parseXml($aXmlTemplates['current'], $sCurrent, $sModulesUrl . $sModule . "/" . $sFolder . "/" . $sCurrentFile);
    return $sContents;
}
Example #16
0
/**
 * ===> The rest of functions is for XML version only. <===
 * Update user's status
 * @comment - Refreshed
 */
function refreshUsersInfo($sId = "", $sMode = 'all')
{
    global $sModule;
    global $aXmlTemplates;
    global $sFileExtension;
    global $sFilesPath;
    $iUpdateInterval = (int) getSettingValue($sModule, "updateInterval");
    $iIdleTime = $iUpdateInterval * 3;
    $iDeleteTime = $iUpdateInterval * 6;
    $iCurrentTime = time();
    //--- refresh current user's track ---//
    getResult("UPDATE `" . MODULE_DB_PREFIX . "CurrentUsers` SET `Status`='" . USER_STATUS_OLD . "', `When`='" . $iCurrentTime . "' WHERE `ID`='" . $sId . "' AND (`Status`<>'" . USER_STATUS_NEW . "' || (" . $iCurrentTime . "-`When`)>" . $iUpdateInterval . ") LIMIT 1");
    //--- refresh other users' states ---//
    getResult("UPDATE `" . MODULE_DB_PREFIX . "CurrentUsers` SET `When`=" . $iCurrentTime . ", `Status`='" . USER_STATUS_IDLE . "' WHERE `Status`<>'" . USER_STATUS_IDLE . "' AND `When`<=(" . ($iCurrentTime - $iIdleTime) . ")");
    getResult("DELETE FROM `" . MODULE_DB_PREFIX . "Users` WHERE `Status`='" . BOARD_STATUS_DELETE . "' AND `When`<=(" . ($iCurrentTime - $iDeleteTime) . ")");
    //--- delete idle users, whose track was not refreshed more than delete time ---//
    getResult("DELETE FROM `" . MODULE_DB_PREFIX . "CurrentUsers`, `" . MODULE_DB_PREFIX . "Users` USING `" . MODULE_DB_PREFIX . "CurrentUsers` LEFT JOIN `" . MODULE_DB_PREFIX . "Users` ON `" . MODULE_DB_PREFIX . "CurrentUsers`.`ID`=`" . MODULE_DB_PREFIX . "Users`.`User` WHERE `" . MODULE_DB_PREFIX . "CurrentUsers`.`Status`='" . USER_STATUS_IDLE . "' AND `" . MODULE_DB_PREFIX . "CurrentUsers`.`When`<=" . ($iCurrentTime - $iDeleteTime));
    //--- Get information about users in the chat ---//
    switch ($sMode) {
        case 'update':
            $rRes = getResult("SELECT * FROM `" . MODULE_DB_PREFIX . "CurrentUsers` ORDER BY `When`");
            while ($aUser = $rRes->fetch()) {
                switch ($aUser['Status']) {
                    case USER_STATUS_NEW:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['Nick'], $aUser['Sex'], $aUser['Age'], $aUser['Photo'], $aUser['Profile'], $aUser['Desc']);
                        break;
                    case USER_STATUS_IDLE:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status']);
                        break;
                }
            }
            break;
        case 'all':
            $iRunTime = isset($_REQUEST['_t']) ? floor($_REQUEST['_t'] / 1000) : 0;
            $iCurrentTime -= $iRunTime;
            $rRes = getResult("SELECT * FROM `" . MODULE_DB_PREFIX . "CurrentUsers` WHERE `Status`<>'" . USER_STATUS_IDLE . "' ORDER BY `When`");
            while ($aUser = $rRes->fetch()) {
                $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], USER_STATUS_NEW, $aUser['Nick'], $aUser['Sex'], $aUser['Age'], $aUser['Photo'], $aUser['Profile'], $aUser['Desc']);
            }
            break;
    }
    return makeGroup($sContent, "users");
}
Example #17
0
 case 'getOnlineUsers':
     //--- Check RayChatMessages table and drop autoincrement if it is possible. ---//
     $rResult = getResult("SELECT `ID` FROM `" . MODULE_DB_PREFIX . "CurrentUsers`");
     if (mysql_num_rows($rResult) == 0) {
         getResult("TRUNCATE TABLE `" . MODULE_DB_PREFIX . "CurrentUsers`");
     }
     //--- Update user's info and return info about all online users. ---//
     $sContents = refreshUsersInfo($sId);
     break;
 case 'update':
     $sContents = "";
     //--- update user's info ---//
     $sContents .= refreshUsersInfo($sId, 'update');
     //--- check for new rooms ---//
     $sContents .= makeGroup(getBoards('update', $sId), "boards");
     $sContents .= makeGroup(getBoards('updateUsers', $sId), "boardsUsers");
     break;
     /**
      * Transmit new Scene file from specified Board.
      * param - boardId
      * param - width
      * param - height
      * param - data
      */
 /**
  * Transmit new Scene file from specified Board.
  * param - boardId
  * param - width
  * param - height
  * param - data
  */
function getAvailableStatuses()
{
    global $aXmlTemplates;
    $oStatuses = new BxDolUserStatusView();
    $sContents = "";
    foreach ($oStatuses->aStatuses as $sKey => $aStatus) {
        $sContents .= parseXml($aXmlTemplates["status"], $sKey, getTemplateIcon($aStatus["icon"]), _t($aStatus["title"]));
    }
    return makeGroup($sContents, "statuses");
}
Example #19
0
$sContentsType = CONTENTS_TYPE_XML;
if ($sModule == GLOBAL_MODULE) {
    require_once $sIncPath . "xmlTemplates.inc.php";
    require_once $sIncPath . "actions.inc.php";
} else {
    $sModuleIncPath = $sModulesPath . $sModule . "/inc/";
    require_once $sModuleIncPath . "header.inc.php";
    require_once $sModuleIncPath . "constants.inc.php";
    require_once $sModuleIncPath . "xmlTemplates.inc.php";
    require_once $sModuleIncPath . "customFunctions.inc.php";
    require_once $sModuleIncPath . "functions.inc.php";
    require_once $sModuleIncPath . "actions.inc.php";
}
switch ($sContentsType) {
    case CONTENTS_TYPE_XML:
        //--- Print Results in XML Format ---//
        header("Cache-Control: no-store, no-cache, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0", false);
        header("Pragma: no-cache");
        header('Content-Type: application/xml');
        echo "<?xml version='1.0' encoding='UTF-8'?>" . makeGroup($sContents);
        break;
    case CONTENTS_TYPE_SWF:
        header("Content-Type: application/x-shockwave-flash");
        echo $sContents;
        break;
    default:
        echo $sContents;
        break;
}
$oDb->disconnect();
Example #20
0
             $sMessage = "msgFileNotFound";
             break;
     }
     $sContents = parseXml($aXmlTemplates['result'], $sMessage, $sStatus);
     if ($sStatus == SUCCESS_VAL) {
         $sImageFile = $GLOBALS['sFilesDir'] . $sId . SCREENSHOT_EXT;
         $bScreenshot = file_exists($sModuleUrl . $sImageFile) && filesize($sModuleUrl . $sImageFile) > 0;
         if (!$bScreenshot) {
             $sImageFile = $GLOBALS['sFilesDir'] . "default.jpg";
         }
         $sContents = parseXml($aXmlTemplates['result'], "", SUCCESS_VAL);
         $sContents .= parseXml($aXmlTemplates['file'], $sId, $sGetFile, $sGetFile, $sImageFile, $aFile['Time'], $bScreenshot ? TRUE_VAL : FALSE_VAL, $sSaveName);
     }
     break;
 case 'getList':
     $sContents = makeGroup(mp3_getList($sId), "files");
     break;
 case 'processFile':
     $sTempFileName = $sId . TEMP_FILE_NAME;
     $sTempFile = $sFilesPathMp3 . $sTempFileName;
     @unlink($sTempFile);
     deleteTempMp3s($sId);
     $sRecordedFileUrl = getRMSUrl($sServerApp, true) . $sStreamsFolder . $sFile . ".flv";
     $sContents = parseXml($aXmlTemplates['result'], "msgProcessingError", FAILED_VAL);
     if (function_exists("curl_init")) {
         $fTemp = fopen($sTempFile, "w");
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, $sRecordedFileUrl);
         curl_setopt($curl, CURLOPT_FILE, $fTemp);
         curl_setopt($curl, CURLOPT_HEADER, false);
         curl_exec($curl);
Example #21
0
/**
 * ===> The rest of functions is for XML version only. <===
 * Update user's status
 * @comment - Refreshed
 */
function refreshUsersInfo($sId = "", $sMode = 'all')
{
    global $aXmlTemplates;
    global $sModule;
    $iUpdateInterval = (int) getSettingValue($sModule, "updateInterval");
    $iIdleTime = $iUpdateInterval * 3;
    $iDeleteTime = $iUpdateInterval * 6;
    $iCurrentTime = time();
    //--- refresh current user's track ---//
    getResult("UPDATE `" . MODULE_DB_PREFIX . "CurrentUsers` SET `Status`='" . USER_STATUS_OLD . "', `When`='" . $iCurrentTime . "' WHERE `ID`='" . $sId . "' AND `Status`<>'" . USER_STATUS_KICK . "' AND (`Status` NOT IN('" . USER_STATUS_NEW . "', '" . USER_STATUS_TYPE . "', '" . USER_STATUS_ONLINE . "') || (" . $iCurrentTime . "-`When`)>" . $iUpdateInterval . ") LIMIT 1");
    //--- refresh other users' states ---//
    getResult("UPDATE `" . MODULE_DB_PREFIX . "CurrentUsers` SET `When`=" . $iCurrentTime . ", `Status`='" . USER_STATUS_IDLE . "' WHERE `Status`<>'" . USER_STATUS_IDLE . "' AND `When`<=(" . ($iCurrentTime - $iIdleTime) . ")");
    getResult("DELETE FROM `" . MODULE_DB_PREFIX . "RoomsUsers` WHERE `Status`='" . ROOM_STATUS_DELETE . "' AND `When`<=(" . ($iCurrentTime - $iDeleteTime) . ")");
    $rFiles = getResult("SELECT `files`.`ID` AS `FileID` FROM `" . MODULE_DB_PREFIX . "Messages` AS `files` INNER JOIN `" . MODULE_DB_PREFIX . "CurrentUsers` AS `users` WHERE `files`.`Recipient`=`users`.`ID` AND `files`.`Type`='file' AND `users`.`Status`='" . USER_STATUS_IDLE . "' AND `users`.`When`<=" . ($iCurrentTime - $iDeleteTime));
    while ($aFile = mysql_fetch_assoc($rFiles)) {
        removeFile($aFile['FileID']);
    }
    //--- delete idle users, whose track was not refreshed more than delete time ---//
    getResult("DELETE FROM `" . MODULE_DB_PREFIX . "CurrentUsers`, `" . MODULE_DB_PREFIX . "RoomsUsers` USING `" . MODULE_DB_PREFIX . "CurrentUsers`, `" . MODULE_DB_PREFIX . "RoomsUsers` WHERE `" . MODULE_DB_PREFIX . "CurrentUsers`.`ID`=`" . MODULE_DB_PREFIX . "RoomsUsers`.`User` AND `" . MODULE_DB_PREFIX . "CurrentUsers`.`Status`='" . USER_STATUS_IDLE . "' AND `" . MODULE_DB_PREFIX . "CurrentUsers`.`When`<=" . ($iCurrentTime - $iDeleteTime));
    //--- delete old rooms ---//
    getResult("DELETE FROM `" . MODULE_DB_PREFIX . "Rooms`, `" . MODULE_DB_PREFIX . "RoomsUsers` USING `" . MODULE_DB_PREFIX . "Rooms`,`" . MODULE_DB_PREFIX . "RoomsUsers` WHERE `" . MODULE_DB_PREFIX . "Rooms`.`ID`=`" . MODULE_DB_PREFIX . "RoomsUsers`.`Room` AND `" . MODULE_DB_PREFIX . "Rooms`.`Status`='" . ROOM_STATUS_DELETE . "' AND `" . MODULE_DB_PREFIX . "Rooms`.`When`<=(" . ($iCurrentTime - $iDeleteTime) . ")");
    //--- delete empty rooms ---//
    if (getSettingValue($sModule, "removeRooms") == TRUE_VAL) {
        $aIds = getAdminIds();
        $sIds = count($aIds) > 0 ? " AND `OwnerID` NOT IN (" . implode(',', $aIds) . ")" : "";
        $rResult = getResult("SELECT DISTINCT(`Room`) FROM `" . MODULE_DB_PREFIX . "RoomsUsers`");
        $aFullRooms = array();
        $iCount = mysql_num_rows($rResult);
        for ($i = 0; $i < $iCount; $i++) {
            $aFullRoom = mysql_fetch_assoc($rResult);
            $aFullRooms[] = $aFullRoom['Room'];
        }
        $sFullRooms = count($aFullRooms) > 0 ? "`ID` NOT IN(" . implode(',', $aFullRooms) . ") AND " : "";
        getResult("UPDATE `" . MODULE_DB_PREFIX . "Rooms` SET `Status`='" . ROOM_STATUS_DELETE . "', `When`=" . $iCurrentTime . " WHERE " . $sFullRooms . "`OwnerID`<>0" . $sIds);
    }
    //--- delete old messages ---//
    getResult("DELETE FROM `" . MODULE_DB_PREFIX . "Messages` WHERE `Type`='text' AND `When`<=(" . ($iCurrentTime - $iDeleteTime) . ")");
    //--- Get information about users in the chat ---//
    switch ($sMode) {
        case 'update':
            $rRes = getResult("SELECT ccu.`ID` AS `ID`, ccu.`Nick` AS `Nick`, ccu.`Sex` AS `Sex`, ccu.`Age` AS `Age`, ccu.`Desc` AS `Desc`, ccu.`Photo` AS `Photo`, ccu.`Profile` AS `Profile`, ccu.`Status` AS `Status`, ccu.`Online` AS `Online`, rp.`Type` AS `Type` FROM `" . MODULE_DB_PREFIX . "Profiles` AS rp, `" . MODULE_DB_PREFIX . "CurrentUsers` AS ccu WHERE rp.`ID`=ccu.`ID` ORDER BY ccu.`When`");
            while ($aUser = mysql_fetch_assoc($rRes)) {
                if ($aUser['ID'] == $sId && !($aUser['Status'] == USER_STATUS_KICK || $aUser['Status'] == USER_STATUS_TYPE)) {
                    continue;
                }
                switch ($aUser['Status']) {
                    case USER_STATUS_NEW:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['Nick'], $aUser['Sex'], $aUser['Age'], stripslashes($aUser['Desc']), $aUser['Photo'], $aUser['Profile'], $aUser['Type'], $aUser['Online']);
                        break;
                    case USER_STATUS_TYPE:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['Type']);
                        break;
                    case USER_STATUS_ONLINE:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status'], $aUser['Type'], $aUser['Online']);
                        break;
                    case USER_STATUS_IDLE:
                    case USER_STATUS_KICK:
                        $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], $aUser['Status']);
                        break;
                }
            }
            break;
        case 'all':
            $iRunTime = isset($_REQUEST['_t']) ? floor($_REQUEST['_t'] / 1000) : 0;
            $iCurrentTime -= $iRunTime;
            $rRes = getResult("SELECT ccu.`ID` AS `ID`, ccu.`Nick` AS `Nick`, ccu.`Sex` AS `Sex`, ccu.`Age` AS `Age`, ccu.`Desc` AS `Desc`, ccu.`Photo` AS `Photo`, ccu.`Profile` AS `Profile`, ccu.`Online` AS `Online`, rp.`Type` AS `Type`, (" . $iCurrentTime . "-`ccu`.`Start`) AS `Time` FROM `" . MODULE_DB_PREFIX . "Profiles` AS rp, `" . MODULE_DB_PREFIX . "CurrentUsers` AS ccu WHERE rp.`ID`=ccu.`ID` AND ccu.`Status` NOT IN ('" . USER_STATUS_IDLE . "', '" . USER_STATUS_KICK . "') AND rp.`Banned`='" . FALSE_VAL . "' ORDER BY ccu.`When`");
            while ($aUser = mysql_fetch_assoc($rRes)) {
                $sContent .= parseXml($aXmlTemplates['user'], $aUser['ID'], USER_STATUS_NEW, $aUser['Nick'], $aUser['Sex'], $aUser['Age'], stripslashes($aUser['Desc']), $aUser['Photo'], $aUser['Profile'], $aUser['Type'], $aUser['Online'], $aUser['Time']);
            }
            break;
    }
    return makeGroup($sContent, "users");
}
     $sFiles = "";
     $sContents = parseXml($aXmlTemplates['result'], "", SUCCESS_VAL);
     if (!isset($sSql)) {
         $sApprovedFactor = $bOwner ? "" : "`F`.`Approved`='" . TRUE_VAL . "' AND ";
         $sSql = "SELECT * FROM `" . MODULE_DB_PREFIX . "Files` AS `F` INNER JOIN `" . MODULE_DB_PREFIX . "PlayLists` AS `PL` ON `ID` = `FileId` WHERE " . $sApprovedFactor . "`PL`.`Owner` = '" . $sId . "' ORDER BY `PL`.`Order`";
     }
     $res = getResult($sSql);
     for ($i = 0; $i < mysql_num_rows($res); $i++) {
         $aFile = mysql_fetch_assoc($res);
         $sFileName = $aFile['ID'] . MP3_EXTENSION;
         if (!file_exists($sFilesPath . $sFileName)) {
             continue;
         }
         $sFiles .= parseXml($aXmlTemplates['file'], $aFile['ID'], $sFileName, $aFile['Time'], $aFile['Approved'], $aFile['Title'], $aFile['Tags'], $aFile['Description']);
     }
     $sContents .= makeGroup($sFiles, "files");
     break;
     /**
      * Get user's playlist by ID
      */
 /**
  * Get user's playlist by ID
  */
 case 'getFile':
     $sFilename = $sFile . MP3_EXTENSION;
     if (!file_exists($sFilesPath . $sFilename)) {
         $sContents = parseXml($aXmlTemplates['result'], "msgFileNotFound", FAILED_VAL);
         break;
     }
     $aFile = getArray("SELECT * FROM `" . MODULE_DB_PREFIX . "Files` WHERE `ID` = '" . $sFile . "' LIMIT 1");
     if ($aFile['Approved'] != TRUE_VAL) {
    case 'newMessage':
        //--- check online status of the recipient ---//
        $iContactRid = getContactId($sRspId, $sSndId);
        if (!empty($iContactRid)) {
            $sColor = $_REQUEST['color'] ? $_REQUEST['color'] : "0";
            $sBold = $_REQUEST['bold'] ? $_REQUEST['bold'] : FALSE_VAL;
            $sUnderline = $_REQUEST['underline'] ? $_REQUEST['underline'] : FALSE_VAL;
            $sItalic = $_REQUEST['italic'] ? $_REQUEST['italic'] : FALSE_VAL;
            $iSize = $_REQUEST['size'] ? $_REQUEST['size'] : 12;
            $sFont = $_REQUEST['font'] ? $_REQUEST['font'] : "Arial";
            $sStyle = serialize(array('color' => $sColor, 'bold' => $sBold, 'underline' => $sUnderline, 'italic' => $sItalic, 'smileset' => $sSmileset, 'size' => $iSize, 'font' => $sFont));
            $iContactSid = getContactId($sSndId, $sRspId);
            if (!empty($iContactSid)) {
                $rResult = getResult("INSERT INTO `" . MODULE_DB_PREFIX . "Messages` (`ContactID`, `Message`, `Style`, `When`) VALUES ('" . $iContactSid . "', '" . $sMsg . "', '" . $sStyle . "', '" . time() . "')");
            }
        } else {
            $rResult = addPend($sSndId, $sRspId, $sMsg);
        }
        $sContents = parseXml($aXmlTemplates['result'], $rResult ? TRUE_VAL : FALSE_VAL);
        break;
    case 'help':
        $sApp = isset($_REQUEST['app']) ? $_REQUEST['app'] : "user";
        $sContents = makeGroup("", "topics");
        $sFileName = $sModulesPath . $sModule . "/help/" . $sApp . ".xml";
        if (file_exists($sFileName)) {
            $rHandle = @fopen($sFileName, "rt");
            $sContents = @fread($rHandle, filesize($sFileName));
            fclose($rHandle);
        }
        break;
}
      * @param id - user's ID, whose IM notifications need to be checked.
      * @param got - a list of notification's IDs, which were got previously (For example: 1,25,63 or -1 if this list is empty).
      */
 /**
  * Gets new IM notifications.
  * @param id - user's ID, whose IM notifications need to be checked.
  * @param got - a list of notification's IDs, which were got previously (For example: 1,25,63 or -1 if this list is empty).
  */
 case "getIms":
     $sQuery = "SELECT `ID`, `SenderID`, SUBSTRING(`Msg`, 1, 15) AS `Msg` FROM `" . $sImDBPrefix . "Pendings` WHERE `RecipientID`='" . $sId . "' AND IF('" . $_REQUEST['got'] . "'<>'-1', `ID` NOT IN (" . $_REQUEST['got'] . "), '1')";
     $aIms = getResult($sQuery);
     while ($aIm = mysql_fetch_array($aIms)) {
         $aUserInfo = getUserInfo($aIm['SenderID']);
         $sContents .= parseXml($aXmlTemplates['message'], $aIm['Msg'], $aIm['ID'], $aIm['SenderID'], $aUserInfo['nick'], $aUserInfo['sex'], $aUserInfo['age'], $aUserInfo['photo'], $aUserInfo['profile']);
     }
     $sContents = makeGroup($sContents, "msgs");
     break;
     /**
      * Declines received IM message.
      * @param id - user's ID.
      */
 /**
  * Declines received IM message.
  * @param id - user's ID.
  */
 case "declineIm":
     getResult("DELETE FROM `" . $sImDBPrefix . "Pendings` WHERE `ID`='" . $sId . "'");
     break;
     /**
      * Update information from remote server.
      * @param type - the type of information to be updated.