10); } // Queries the given Yoo!Media API 2.0 script function YOOMEDIA_QUERY_API ($script, $countQuery = true) { // Init response array $response = array(); // Enougth queries left? if ((getConfig('yoomedia_requests_remain') > 0) || (!$countQuery)) { // 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')) ); // Run the query $response = GET_URL($requestString); // Shall we count the query as used? if ($countQuery) { // Then update the config! UPDATE_CONFIG("yoomedia_requests_remain", 1, "-"); } // END - if } // END - if // Return the data return $response; } // "Getter" for a parsed result for all text mails. This means an array without // the header lines will be returned function YOOMEDIA_GET_PARSED_RESULT_TEXTMAILS () { // Get the raw response $response = YOOMEDIA_QUERY_API("out_textmail.php"); // Parse the response $result = YOOMEDIA_PARSE_RESPONSE($response, "textmail"); // Return result return $result; } // Parser function for Yoo!Media API responses function YOOMEDIA_PARSE_RESPONSE ($response, $type) { // Init result $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 // The result is now still raw, so we must split it up and trim spaces away $responseLine = trim(implode("\n", $dummy)); // Last line should never be a pipe! if (substr($responseLine, -1, 1) == "|") $responseLine = substr($responseLine, 0, -1); // Now, explode all in one array $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; // End of data of first entry reached? if ($cnt == 6) { // Then advance to next entry and reset counter $entry++; $cnt = 0; } else { // Count up $cnt++; } } // END - foreach // Return it return $result; } // Prepares a bonus mail for delivery. Works only if extension "bonus" is active function YOOMEDIA_PREPARE_MAIL_DELIVERY ($data) { // Is this an admin? if (!IS_ADMIN()) { // Abort here return false; } elseif (!EXT_IS_ACTIVE("bonus")) { // Abort here return false; } // Is the waiting time below one second? Then fix it to one (zero seconds are not yet supported!) if ($data['wait'] < 1) $data['wait'] = 1; // Half of waiting time is a good reward! $data['reward'] = round($data['wait'] / 2 + 0.4); // 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'] = TRANSLATE_COMMA(GET_TOTAL_RECEIVERS()); // Add categories $data['categories'] = ADD_CATEGORY_OPTIONS("normal"); // Load template LOAD_TEMPLATE("admin_send_yoomedia", false, $data); } // Adds the mail to the bonus mail pool function YOOMEDIA_SEND_BONUS_MAIL ($data, $mode) { // Is this an admin? if (!IS_ADMIN()) { // Abort here return false; } elseif (!EXT_IS_ACTIVE("bonus")) { // Abort here return false; } // Add dummy receiver to avoid notice $data['receiver'] = 0; // HTML or normal? (normal is default...) $type = "t"; if (($mode == "html") && (EXT_IS_ACTIVE("html"))) $type = "h"; // Auto-generate URL $data['url'] = sprintf("http://www.yoomedia.de/code/%s-mail.php?id=%s&sid=%s", $type, $data['id'], $data['sid'] ); // Lock this mail for new delivery YOOMEDIA_RELOAD_LOCK($data, $mode); // Call the lower function ADD_NEW_BONUS_MAIL($data, $mode); } // Lockdown given id function YOOMEDIA_EXCLUDE_MAIL ($data, $mode) { // Search for the entry if (YOOMEDIA_CHECK_RELOAD($data['id'], $data['reload'], $mode) === false) { // Convert mode for mails $mode = YOOMEDIA_CONVERT_MODE($mode); // Add the entry 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 } // Remove lock of given mail function YOOMEDIA_UNLIST_MAIL ($data, $mode) { // Convert mode for mails $mode = YOOMEDIA_CONVERT_MODE($mode); // Add the entry 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; // Default is the index $return = $index; // Is the element there? if (isset($yoomediaTranslationTable[$type][$index])) { // Use this element $return = $yoomediaTranslationTable[$type][$index]; } else { // Not found! DEBUG_LOG(__FUNCTION__, __LINE__, " type={$type},index={$index} not found."); } // Return value return $return; } // "Translate" error code function YOOMEDIA_TRANSLATE_ERROR ($errorCode) { global $yoomediaTranslationTable; // Default is "failed" $return = "failed"; // Is the entry there? if (isset($yoomediaTranslationTable['error_codes'][$errorCode])) { // Entry found! $return = $yoomediaTranslationTable['error_codes'][$errorCode]; } else { // Log missing entries DEBUG_LOG(__FUNCTION__, __LINE__, " errorCode={$errorCode}"); } // Return value return $return; } // Checks if the mail id is in reload lock function YOOMEDIA_CHECK_RELOAD ($id, $reload, $type) { // Default is not in reload lock $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)), __FUNCTION__, __LINE__); // Entry found? if (SQL_NUMROWS($result) == 1) { // Load time list($id, $time) = SQL_FETCHROW($result); // Are we ready to sent again? if (((time() - $time) >= ($reload * 60*60)) && ($time > 0)) { // Remove entry 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; } } // END - if // Free result SQL_FREERESULT($result); // Return result return $reloaded; } // Lock given mail down for reload lock function YOOMEDIA_RELOAD_LOCK ($data, $mode) { // Search for the entry if (YOOMEDIA_CHECK_RELOAD($data['id'], $data['reload'], $mode) === false) { // Convert mode for mails $mode = YOOMEDIA_CONVERT_MODE($mode); // Add the entry 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 } // Convert mode for mails function YOOMEDIA_CONVERT_MODE ($mode) { // Convert mode for normal/html switch ($mode) { case "normal": $mode = "textmail"; break; case "html": $mode = "htmlmail"; break; } // END - switch // Return result return $mode; } // ?>