X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flibs%2Fyoomedia_functions.php;h=19f8a773f5bd22e92419d2a34e11c56bb56722ed;hp=6cf2f2081319799af776d9b1d33fcaf50ef612ff;hb=55980dc6bc65fb3c766ff053440a7446962cb85f;hpb=5f8c1a333627cd0145f778a6eebdb251f5bb40b6 diff --git a/inc/libs/yoomedia_functions.php b/inc/libs/yoomedia_functions.php index 6cf2f20813..19f8a773f5 100644 --- a/inc/libs/yoomedia_functions.php +++ b/inc/libs/yoomedia_functions.php @@ -10,9 +10,14 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Spezielle Funktion fuer Yoo!Media-Erweiterung * * -------------------------------------------------------------------- * - * * + * $Revision:: $ * + * $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 - 2008 by Roland Haeder * + * Copyright (c) 2003 - 2009 by Roland Haeder * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -33,76 +38,99 @@ // Some security stuff... if (!defined('__SECURITY')) { - $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; - require($INC); + die(); } // Test if the extension settings did work -function YOOMEDIDA_TEST_CONFIG ($data) { - global $_CONFIG; - +function YOOMEDIA_TEST_CONFIG ($data) { // Is this admin? - if (!IS_ADMIN()) { + if (!isAdmin()) { // No admin! return false; } // END - if // Transfer config data - $_CONFIG = array_merge($_CONFIG, $data); + mergeConfig($data); // Temporary allow maximum - $_CONFIG['yoomedia_tm_max_reload'] = 1000; - $_CONFIG['yoomedia_tm_min_wait'] = 0; - $_CONFIG['yoomedia_tm_clicks_remain'] = 10; - $_CONFIG['yoomedia_tm_min_pay'] = 0; - $_CONFIG['yoomedia_erotic_allowed'] = 1; + 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); // Query the API with a test request without couting it // If zero reply comes back the data is invalid! - $response = YOOMEDIA_QUERY_API("out_textmail.php", true); // TODO Ask Yoo!Media for test script + $response = YOOMEDIA_QUERY_API('out_textmail.php', true); // @TODO Ask Yoo!Media for test script + + // Default error code is 0 = all fine! + $errorCode = YOOMEDIA_GET_ERRORCODE_FROM_RESULT($response); // Log the response if failed if (count($response) == 0) { // Queries depleted (as we count here!) - DEBUG_LOG(__FUNCTION__, __LINE__, " Requested depleted. Maxmimum was: ".$_CONFIG['yoomedia_requests_total']); - } elseif (count($response) <= 10) { + 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))); + $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) { // Log serialized raw response - DEBUG_LOG(__FUNCTION__, __LINE__, " Raw response=".base64_encode(serialize($response))); - } // END - if + logDebugMessage(__FUNCTION__, __LINE__, 'Raw 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 + $errorCode = 0; + } // Do we have some data there? - return (count($response) > 10); + return ($errorCode == 0); } // Queries the given Yoo!Media API 2.0 script function YOOMEDIA_QUERY_API ($script, $countQuery = true) { - global $_CONFIG; - // Init response array $response = array(); // Enougth queries left? - if (($_CONFIG['yoomedia_requests_remain'] > 0) || (!$countQuery)) { + 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, - bigintval($_CONFIG['yoomedia_id']), - bigintval($_CONFIG['yoomedia_sid']), - $_CONFIG['yoomedia_passwd'], - bigintval($_CONFIG['yoomedia_tm_max_reload']), - bigintval($_CONFIG['yoomedia_tm_min_wait']), - bigintval($_CONFIG['yoomedia_tm_clicks_remain']), - bigintval($_CONFIG['yoomedia_tm_min_pay']), - bigintval($_CONFIG['yoomedia_erotic_allowed']) + 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') ); // Run the query - $response = GET_URL($requestString); + $response = sendGetRequest($requestString); + + // Convert from ISO to UTF-8 + foreach ($response as $k => $v) { + $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 - if // Shall we count the query as used? - if ($countQuery) { + if ($countQuery === true) { // Then update the config! - UPDATE_CONFIG("yoomedia_requests_remain", 1, "-"); + updateConfiguration('yoomedia_requests_remain', 1, '-'); } // END - if } // END - if @@ -114,10 +142,10 @@ function YOOMEDIA_QUERY_API ($script, $countQuery = true) { // the header lines will be returned function YOOMEDIA_GET_PARSED_RESULT_TEXTMAILS () { // Get the raw response - $response = YOOMEDIA_QUERY_API("out_textmail.php"); + $response = YOOMEDIA_QUERY_API('out_textmail.php'); // Parse the response - $result = YOOMEDIA_PARSE_RESPONSE($response, "textmail"); + $result = YOOMEDIA_PARSE_RESPONSE($response, 'textmail'); // Return result return $result; @@ -145,16 +173,16 @@ 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); // Now, explode all in one array - $dataArray = explode("|", $responseLine); + $dataArray = explode('|', $responseLine); // Now make the result array with two dimensions $cnt = 0; $entry = 0; foreach ($dataArray as $line) { // Add the line - $result[$entry][YOOMEDIA_TRANSLATE_INDEX($type, $cnt)] = $line; + $result[$entry][yoomediaTranslateIndex($type, $cnt)] = $line; // End of data of first entry reached? if ($cnt == 6) { @@ -171,15 +199,13 @@ function YOOMEDIA_PARSE_RESPONSE ($response, $type) { return $result; } -// Prepares a bonus mail for delivery. Works only if extension "bonus" is active +// Prepares a bonus mail for delivery. Works only if extension 'bonus' is active function YOOMEDIA_PREPARE_MAIL_DELIVERY ($data) { - global $_CONFIG; - // Is this an admin? - if (!IS_ADMIN()) { + if (!isAdmin()) { // Abort here return false; - } elseif (!EXT_IS_ACTIVE("bonus")) { + } elseif (!isExtensionActive('bonus')) { // Abort here return false; } @@ -194,27 +220,28 @@ function YOOMEDIA_PREPARE_MAIL_DELIVERY ($data) { if ($data['reward'] < 1) $data['reward'] = 1; // Add website id - $data['sid'] = $_CONFIG['yoomedia_sid']; + $data['sid'] = getConfig('yoomedia_sid'); // Add total receivers - $data['all'] = TRANSLATE_COMMA(GET_TOTAL_RECEIVERS()); + $data['all'] = translateComma(getTotalReceivers()); // Add categories - $data['categories'] = ADD_CATEGORY_OPTIONS("normal"); + $data['categories'] = generateCategoryOptionsList('normal'); + + // Decode entities + $data['text'] = decodeEntities($data['text']); // Load template - LOAD_TEMPLATE("admin_send_yoomedia", false, $data); + loadTemplate('admin_send_yoomedia', false, $data); } // Adds the mail to the bonus mail pool function YOOMEDIA_SEND_BONUS_MAIL ($data, $mode) { - global $_CONFIG; - // Is this an admin? - if (!IS_ADMIN()) { + if (!isAdmin()) { // Abort here return false; - } elseif (!EXT_IS_ACTIVE("bonus")) { + } elseif (!isExtensionActive('bonus')) { // Abort here return false; } @@ -223,8 +250,8 @@ function YOOMEDIA_SEND_BONUS_MAIL ($data, $mode) { $data['receiver'] = 0; // HTML or normal? (normal is default...) - $type = "t"; - if (($mode == "html") && (EXT_IS_ACTIVE("html"))) $type = "h"; + $type = 't'; + if (($mode == 'html') && (isExtensionActive('html_mail'))) $type = 'h'; // Auto-generate URL $data['url'] = sprintf("http://www.yoomedia.de/code/%s-mail.php?id=%s&sid=%s", @@ -237,7 +264,7 @@ function YOOMEDIA_SEND_BONUS_MAIL ($data, $mode) { YOOMEDIA_RELOAD_LOCK($data, $mode); // Call the lower function - ADD_NEW_BONUS_MAIL($data, $mode); + addNewBonusMail($data, $mode); } // Lockdown given id @@ -248,8 +275,12 @@ function YOOMEDIA_EXCLUDE_MAIL ($data, $mode) { $mode = YOOMEDIA_CONVERT_MODE($mode); // Add the entry - $result = SQL_QUERY_ESC("INSERT INTO `"._MYSQL_PREFIX."_yoomedia_reload` (`type`,`y_id`,`y_reload`,`inserted`) VALUES ('%s',%s,%s,'0000-00-00 00:00')", - array($mode, bigintval($data['id']), bigintval($data['reload'])), __FILE__, __LINE__); + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_yoomedia_reload` (`type`,`y_id`,`y_reload`,`inserted`) VALUES ('%s',%s,%s,'0000-00-00 00:00')", + array( + $mode, + bigintval($data['id']), + bigintval($data['reload']) + ), __FUNCTION__, __LINE__); } // END - if } @@ -259,24 +290,22 @@ function YOOMEDIA_UNLIST_MAIL ($data, $mode) { $mode = YOOMEDIA_CONVERT_MODE($mode); // Add the entry - $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `"._MYSQL_PREFIX."_yoomedia_reload` WHERE `type`='%s' AND `y_id`=%s LIMIT 1", - array($mode, bigintval($data['id'])), __FILE__, __LINE__); + SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_yoomedia_reload` WHERE `type`='%s' AND `y_id`=%s LIMIT 1", + array($mode, bigintval($data['id'])), __FUNCTION__, __LINE__); } // "Translates" the index number into an assosiative value -function YOOMEDIA_TRANSLATE_INDEX ($type, $index) { - global $yoomediaTranslationTable; - +function yoomediaTranslateIndex ($type, $index) { // Default is the index $return = $index; // Is the element there? - if (isset($yoomediaTranslationTable[$type][$index])) { + if (isset($GLOBALS['translation_tables']['yoomedia'][$type][$index])) { // Use this element - $return = $yoomediaTranslationTable[$type][$index]; + $return = $GLOBALS['translation_tables']['yoomedia'][$type][$index]; } else { // Not found! - DEBUG_LOG(__FUNCTION__, __LINE__, " type={$type},index={$index} not found."); + logDebugMessage(__FUNCTION__, __LINE__, "type={$type},index={$index} not found."); } // Return value @@ -284,19 +313,17 @@ function YOOMEDIA_TRANSLATE_INDEX ($type, $index) { } // "Translate" error code -function YOOMEDIA_TRANSLATE_ERROR ($errorCode) { - global $yoomediaTranslationTable; - - // Default is "failed" - $return = "failed"; +function translateYooMediaError ($errorCode) { + // Default is 'failed' + $return = 'failed (Code: ' . $errorCode . ')'; // Is the entry there? - if (isset($yoomediaTranslationTable['error_codes'][$errorCode])) { + if (isset($GLOBALS['translation_tables']['yoomedia']['error_codes'][$errorCode])) { // Entry found! - $return = $yoomediaTranslationTable['error_codes'][$errorCode]; + $return = $GLOBALS['translation_tables']['yoomedia']['error_codes'][$errorCode]; } else { // Log missing entries - DEBUG_LOG(__FUNCTION__, __LINE__, " errorCode={$errorCode}"); + debug_report_bug(sprintf("Unknown error code %s detected.", $errorCode)); } // Return value @@ -309,8 +336,8 @@ function YOOMEDIA_CHECK_RELOAD ($id, $reload, $type) { $reloaded = false; // Query database - $result = SQL_QUERY_ESC("SELECT `id`, UNIX_TIMESTAMP(`inserted`) AS inserted FROM `"._MYSQL_PREFIX."_yoomedia_reload` WHERE `type`='%s' AND `y_id`=%s LIMIT 1", - array($type, bigintval($id)), __FILE__, __LINE__); + $result = SQL_QUERY_ESC("SELECT `id`, UNIX_TIMESTAMP(`inserted`) AS inserted FROM `{?_MYSQL_PREFIX?}_yoomedia_reload` WHERE `type`='%s' AND `y_id`=%s LIMIT 1", + array($type, bigintval($id)), __FUNCTION__, __LINE__); // Entry found? if (SQL_NUMROWS($result) == 1) { @@ -320,8 +347,8 @@ function YOOMEDIA_CHECK_RELOAD ($id, $reload, $type) { // Are we ready to sent again? if (((time() - $time) >= ($reload * 60*60)) && ($time > 0)) { // Remove entry - $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_yoomedia_reload WHERE id=%s LIMIT 1", - array($id), __FILE__, __LINE__); + SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_yoomedia_reload` WHERE `id`=%s LIMIT 1", + array($id), __FUNCTION__, __LINE__); } else { // Dont' sent again this mail $reloaded = $time; @@ -343,8 +370,8 @@ function YOOMEDIA_RELOAD_LOCK ($data, $mode) { $mode = YOOMEDIA_CONVERT_MODE($mode); // Add the entry - $result = SQL_QUERY_ESC("INSERT INTO `"._MYSQL_PREFIX."_yoomedia_reload` (`type`,`y_id`,`y_reload`) VALUES ('%s',%s,%s)", - array($mode, bigintval($data['id']), bigintval($data['reload'])), __FILE__, __LINE__); + SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_yoomedia_reload` (`type`,`y_id`,`y_reload`) VALUES ('%s',%s,%s)", + array($mode, bigintval($data['id']), bigintval($data['reload'])), __FUNCTION__, __LINE__); } // END - if } @@ -352,11 +379,11 @@ function YOOMEDIA_RELOAD_LOCK ($data, $mode) { function YOOMEDIA_CONVERT_MODE ($mode) { // Convert mode for normal/html switch ($mode) { - case "normal": + case 'normal': $mode = "textmail"; break; - case "html": + case 'html': $mode = "htmlmail"; break; } // END - switch @@ -365,5 +392,41 @@ function YOOMEDIA_CONVERT_MODE ($mode) { return $mode; } -// +// Extract code from response +function YOOMEDIA_GET_ERRORCODE_FROM_RESULT ($response) { + // Bad code as default + $code = -999; + + // Which response should we parse? + if ((isset($response[8])) && (count($response) == 9)) { + // Use error code from element 8 (mostly API errors) + $codeArray = explode("
", $response[8]); + + // 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); + } else { + // Should not happen! + logDebugMessage(__FUNCTION__, __LINE__, "Cannot parse response. Raw response=" . base64_encode(serialize($response))); + } + + // Return error code + return $code; +} + +// [EOF] ?>