X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Flibs%2Fyoomedia_functions.php;h=8a9889d3ead598d0fffc4223276c617cc6890625;hb=4cf6094cc3cbebfda691fa797e00fe674bbb329c;hp=ef00bd8e29f0b0e95dd936f6f8cff371a6f7812e;hpb=40a3f53ad48b0205d39498ab28d526b4fd30a0ec;p=mailer.git diff --git a/inc/libs/yoomedia_functions.php b/inc/libs/yoomedia_functions.php index ef00bd8e29..8a9889d3ea 100644 --- a/inc/libs/yoomedia_functions.php +++ b/inc/libs/yoomedia_functions.php @@ -14,12 +14,10 @@ * $Date:: $ * * $Tag:: 0.2.1-FINAL $ * * $Author:: $ * - * Needs to be in all Files and every File needs "svn propset * - * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009, 2010 by Mailer Developer Team * - * For more information visit: http://www.mxchange.org * + * Copyright (c) 2009 - 2011 by Mailer Developer Team * + * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -49,21 +47,20 @@ function YOOMEDIA_QUERY_API ($script, $countQuery = true) { // Enougth queries left? if ((getConfig('yoomedia_requests_remain') > 0) || ($countQuery === false)) { - // Prepare the low-level request - $requestString = sprintf("http://www.yoomedia.de/interface_2.0/%s?id=%s&sid=%s&pw=%s&reload=%s&ma=%s&uebrig=%s&verguetung=%s&erotik=%s", - $script, - getConfig('yoomedia_id'), - getConfig('yoomedia_sid'), - getConfig('yoomedia_passwd'), - getConfig('yoomedia_tm_max_reload'), - getConfig('yoomedia_tm_min_wait'), - getConfig('yoomedia_tm_clicks_remain'), - getConfig('yoomedia_tm_min_pay'), - getConfig('yoomedia_erotic_allowed') + // Prepare request array + $requestData = array( + 'id' => getConfig('yoomedia_id'), + 'sid' => getConfig('yoomedia_sid'), + 'pw' => getConfig('yoomedia_passwd'), + 'reload' => getConfig('yoomedia_tm_max_reload'), + 'ma' => getConfig('yoomedia_tm_min_wait'), + 'uebrig' => getConfig('yoomedia_tm_clicks_remain'), + 'verguetung' => getConfig('yoomedia_tm_min_pay'), + 'erotik' => getConfig('yoomedia_erotic_allowed') ); // Run the query - $response = sendGetRequest($requestString); + $response = sendGetRequest('http://www.yoomedia.de/interface_2.0/' . $script, $requestData, true); // Convert from ISO to UTF-8 only if count is > 3 because <= 3 means timeout if (count($response) > 3) { @@ -71,14 +68,6 @@ function YOOMEDIA_QUERY_API ($script, $countQuery = true) { foreach ($response as $k => $v) { // Convert the line $response[$k] = iconv('windows-1252', 'UTF-8//TRANSLIT', $v); - /* - // iconv()-less ISO-8859-1 -> UTF-8 - $response[$k] = preg_replace( - "/([\x80-\xFF])/e", - "chr(0xC0|ord('\\1')>>6).chr(0x80|ord('\\1')&0x3F)", - $v - ); - */ } // END - foreach } // END - if @@ -101,15 +90,18 @@ function YOOMEDIA_TEST_CONFIG ($data) { return false; } // END - if - // Transfer config data + // Remove 'ok' + unset($data['ok']); + + // Merge config mergeConfig($data); // Temporary allow maximum - setConfigEntry('yoomedia_tm_max_reload' , 100000); - setConfigEntry('yoomedia_tm_min_wait' , 0); - setConfigEntry('yoomedia_tm_clicks_remain', 10); - setConfigEntry('yoomedia_tm_min_pay' , 0); - setConfigEntry('yoomedia_erotic_allowed' , 1); + setConfigEntry('yoomedia_tm_max_reload' , '100000'); + setConfigEntry('yoomedia_tm_min_wait' , '1000'); + setConfigEntry('yoomedia_tm_clicks_remain', '10'); + setConfigEntry('yoomedia_tm_min_pay' , '0.00001'); + setConfigEntry('yoomedia_erotic_allowed' , '1'); // Query the API with a test request without couting it // If zero reply comes back the data is invalid! @@ -119,20 +111,16 @@ function YOOMEDIA_TEST_CONFIG ($data) { $errorCode = YOOMEDIA_GET_ERRORCODE_FROM_RESULT($response); // Log the response if failed - if (count($response) == '0') { + if ((count($response) == 0) && ($errorCode > 0)) { // Queries depleted (as we count here!) - logDebugMessage(__FUNCTION__, __LINE__, 'Requested depleted. Maxmimum was: ' . getConfig('yoomedia_requests_total')); - $errorCode = -1; - } elseif (!isset($response[8])) { - // Invalid response - logDebugMessage(__FUNCTION__, __LINE__, 'Missing response line [8]. Raw response=' . base64_encode(serialize($response))); + logDebugMessage(__FUNCTION__, __LINE__, 'Requested depleted. Maxmimum was: ' . getConfig('yoomedia_requests_total') . ',errorCode=' . $errorCode); $errorCode = -1; } elseif ((($errorCode <= 4) && ($errorCode > 0)) || ($errorCode >= 8)) { // An error has returned from the account logDebugMessage(__FUNCTION__, __LINE__, 'Unexpected error code ' . $errorCode . ' received.'); - } elseif (count($response) < 9) { + } elseif ((count($response) > 0) && ($errorCode != 0)) { // Log serialized raw response - logDebugMessage(__FUNCTION__, __LINE__, 'Raw response=' . base64_encode(serialize($response))); + logDebugMessage(__FUNCTION__, __LINE__, 'errorCode=' . $errorCode . ',response=' . base64_encode(serialize($response))); $errorCode = -1; } else { // This is fine, because the result array is okay and the response code on element 8 is fine @@ -149,8 +137,13 @@ function YOOMEDIA_GET_PARSED_RESULT_TEXTMAILS () { // Get the raw response $response = YOOMEDIA_QUERY_API('out_textmail.php'); + // By default an empty result is returned + $result = array(); + // Parse the response - $result = YOOMEDIA_PARSE_RESPONSE($response, 'textmail'); + if (count($response) > 0) { + $result = YOOMEDIA_PARSE_RESPONSE($response, 'textmail'); + } // END - if // Return result return $result; @@ -162,22 +155,12 @@ function YOOMEDIA_PARSE_RESPONSE ($response, $type) { $result = array(); // Cut off the header - $dummy = $response; - foreach ($response as $line) { - // Remove line - array_shift($dummy); - - // Is this line empty? - if (empty($line)) { - // Then stop here - break; - } // END - if - } // END - foreach + $dummy = removeHttpHeaderFromResponse($response); // If we have no result, abort here if (count($dummy) == 0) { // Empty response from API - logDebugMessage(__FUNCTION__, __LINE__, 'Empy result from API received.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Empty result from API received. response()=' . count($response) . ',type=' . $type); return array(); } // END - if @@ -185,25 +168,27 @@ function YOOMEDIA_PARSE_RESPONSE ($response, $type) { $responseLine = trim(implode("\n", $dummy)); // Last line should never be a pipe! - if (substr($responseLine, -1, 1) == '|') $responseLine = substr($responseLine, 0, -1); + if (substr($responseLine, -1, 1) == '|') { + $responseLine = substr($responseLine, 0, -1); + } // END - if // Now, explode all in one array $dataArray = explode('|', $responseLine); // Now make the result array with two dimensions - $cnt = '0'; $entry = '0'; + $count = '0'; $entry = '0'; foreach ($dataArray as $line) { // Add the line - $result[$entry][yoomediaTranslateIndex($type, $cnt)] = $line; + $result[$entry][yoomediaTranslateIndex($type, $count)] = $line; // End of data of first entry reached? - if ($cnt == 6) { + if ($count == 6) { // Then advance to next entry and reset counter $entry++; - $cnt = '0'; + $count = '0'; } else { // Count up - $cnt++; + $count++; } } // END - foreach @@ -231,18 +216,6 @@ function YOOMEDIA_PREPARE_MAIL_DELIVERY ($data) { // Is the reward below one? if ($data['reward'] < 1) $data['reward'] = 1; - // Add website id - $data['sid'] = getConfig('yoomedia_sid'); - - // Add total receivers - $data['all'] = translateComma(getTotalReceivers()); - - // Add categories - $data['categories'] = generateCategoryOptionsList('normal'); - - // Decode entities - $data['text'] = decodeEntities($data['text']); - // Load template loadTemplate('admin_send_yoomedia', false, $data); } @@ -316,8 +289,8 @@ function yoomediaTranslateIndex ($type, $index) { // Use this element $return = $GLOBALS['translation_tables']['yoomedia'][$type][$index]; } else { - // Not found! - logDebugMessage(__FUNCTION__, __LINE__, "type={$type},index={$index} not found."); + // Not found + logDebugMessage(__FUNCTION__, __LINE__, 'type=' . $type . ',index=' . $index . ' not found'); } // Return value @@ -331,11 +304,11 @@ function translateYooMediaError ($errorCode) { // Is the entry there? if (isset($GLOBALS['translation_tables']['yoomedia']['error_codes'][$errorCode])) { - // Entry found! + // Entry found $return = $GLOBALS['translation_tables']['yoomedia']['error_codes'][$errorCode]; } else { // Log missing entries - debug_report_bug(sprintf("Unknown error code %s[%s] detected.", $errorCode, gettype($errorCode))); + debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown error code %s[%s] detected.", $errorCode, gettype($errorCode))); } // Return value @@ -406,6 +379,9 @@ function YOOMEDIA_CONVERT_MODE ($mode) { // Extract code from response function YOOMEDIA_GET_ERRORCODE_FROM_RESULT ($response) { + // The response must be an array + assert(is_array($response)); + // Bad code as default $code = -999; @@ -416,32 +392,44 @@ function YOOMEDIA_GET_ERRORCODE_FROM_RESULT ($response) { // Use only the first element $code = bigintval($codeArray[0]); - } elseif ((is_array($response[0])) && (isset($response[0]['id']))) { - // Begin with extraction - $codeArray = explode(' ', $response[0]['id']); - $code = $codeArray[0]; - $codeArray = explode('
', $code); - $code = $codeArray[0]; - $codeArray = explode('
', $code); - $code = $codeArray[0]; - - // Remove all new-line characters - $codeArray = explode("\n", $code); - $code = $codeArray[0]; - - // Remove carrige-return - $code = str_replace("\n", '', $code); - + } elseif (!empty($response[0])) { + // Merge response together + $parts = explode('|', implode('', $response)); + + // If we have only one part, we got an error + if (count($parts) > 1) { + // All fine + $code = '0'; + } else { + // Begin with extraction of error code + $codeArray = explode(' ', $response[0]); + $code = $codeArray[0]; + $codeArray = explode('
', $code); + $code = $codeArray[0]; + $codeArray = explode('
', $code); + $code = $codeArray[0]; + + // Remove all new-line characters + $codeArray = explode("\n", $code); + $code = $codeArray[0]; + + // Remove carrige-return + $code = trim(str_replace("\n", '', $code)); + + // Is it still empty? + if (empty($code)) { + // Then fix it + $code = -999; + } // END - if + } + } elseif (count($response) == 0) { + // All fine, but empty result + $code = '0'; } else { // Should not happen! - debug_report_bug('Cannot parse response. Raw response:
' . print_r($response, true) . '
'); + debug_report_bug(__FUNCTION__, __LINE__, 'Cannot parse response. Raw response:
' . print_r($response, true) . '
'); } - // Fix empty code to bad - if (empty($code)) { - $code = -999; - } // END - if - // Return error code return $code; }