return false;
}
+ // Secure action
+ $action = SQL_ESCAPE(htmlentities(strip_tags($formData['action']), ENT_QUOTES));
+
+ // Has it changed?
+ if ($action != $formData['action']) {
+ // Invalid data in action found
+ return false;
+ } // END - if
+
// Create the function name for selected action
- $functionName = sprintf("SURFBAR_MEMBER_%s_ACTION", strtoupper(SQL_ESCAPE($formData['action'])));
+ $functionName = sprintf("SURFBAR_MEMBER_%s_ACTION", strtoupper($action));
// Is the function there?
if (function_exists($functionName)) {
$URLs[$formData['id']]['new_status'] = $SURFBAR_CACHE['new_status'];
// Extract URL data for call-back
- $urlData = array($URLs[$formData['id']]);
+ $urlData = array(array_merge($URLs[$formData['id']], array($action => $formData)));
// Action found so execute it
$performed = call_user_func_array($functionName, $urlData);
// Show edit form or do the changes
function SURFBAR_MEMBER_EDIT_ACTION ($urlData) {
// Is the "execute" flag there?
- if (isset($urlData['execute'])) {
+ if (isset($urlData['edit']['execute'])) {
// Execute the changes
return SURFBAR_MEMBER_EXECUTE_ACTION("edit", $urlData);
} // END - if
// Show delete form or do the changes
function SURFBAR_MEMBER_DELETE_ACTION ($urlData) {
// Is the "execute" flag there?
- if (isset($urlData['execute'])) {
+ if (isset($urlData['delete']['execute'])) {
// Execute the changes
- return SURFBAR_MEMBER_EXECUTE_ACTION("del", $urlData);
+ return SURFBAR_MEMBER_EXECUTE_ACTION("delete", $urlData);
} // END - if
// Display form
- return SURFBAR_MEMBER_DISPLAY_ACTION_FORM("del", $urlData);
+ return SURFBAR_MEMBER_DISPLAY_ACTION_FORM("delete", $urlData);
+}
+// Pause active banner
+function SURFBAR_MEMBER_PAUSE_ACTION ($urlData) {
+ return SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['status'], $urlData['new_status'], array($urlData['id'] => $urlData));
+}
+// Unpause stopped banner
+function SURFBAR_MEMBER_UNPAUSE_ACTION ($urlData) {
+ // Fix missing entry for template
+ $urlData['edit'] = $urlData['unpause'];
+ $urlData['edit']['url'] = $urlData['url'];
+ $urlData['edit']['limit'] = $urlData['views_max'];
+
+ // Return status change
+ return SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['status'], $urlData['new_status'], array($urlData['id'] => $urlData));
}
// Display selected "action form"
function SURFBAR_MEMBER_DISPLAY_ACTION_FORM ($action, $urlData) {
// Translate some data
- $urlData['registered'] = MAKE_DATETIME($urlData['registered'], "2");
- $urlData['views_total'] = TRANSLATE_COMMA($urlData['views_total']);
+ $urlData['registered'] = MAKE_DATETIME($urlData['registered'], "2");
+ $urlData['views_total'] = TRANSLATE_COMMA($urlData['views_total']);
+ $urlData['views_max'] = TRANSLATE_COMMA($urlData['views_max']);
+ $urlData['views_allowed'] = TRANSLATE_COMMA($urlData['views_allowed']);
+ $urlData['last_locked'] = MAKE_DATETIME($urlData['last_locked'], "2");
+
+ // Is the lock reason empty?
+ if (empty($urlData['lock_reason'])) {
+ // Fix it to three dashes
+ $urlData['lock_reason'] = "---";
+ } // END - if
+
+ // Include fields only for action 'edit'
+ if ($action == "edit") {
+ // Default is not limited
+ $urlData['limited_yes'] = "";
+ $urlData['limited_no'] = " checked=\"checked\"";
+ $urlData['limited'] = "false";
+
+ // Is this URL limited?
+ if ($urlData['views_max'] > 0) {
+ // Then rewrite form data
+ $urlData['limited_yes'] = " checked=\"checked\"";
+ $urlData['limited_no'] = "";
+ $urlData['limited'] = "true";
+ } // END - if
+ } // END - if
// Load the form and display it
LOAD_TEMPLATE(sprintf("member_surfbar_%s_action_form", $action), false, $urlData);
// All fine by default ... ;-)
return true;
}
+// Execute choosen action
+function SURFBAR_MEMBER_EXECUTE_ACTION ($action, $urlData) {
+ // By default nothing is executed
+ $executed = false;
+
+ // Is limitation "no" and "limit" is > 0?
+ if ((isset($urlData[$action]['limited'])) && ($urlData[$action]['limited'] == "N") && ((isset($urlData[$action]['limit'])) && ($urlData[$action]['limit'] > 0)) || (!isset($urlData[$action]['limit']))) {
+ // Set it to unlimited
+ $urlData[$action]['limit'] = 0;
+ } // END - if
+
+ // Construct function name
+ $functionName = sprintf("SURFBAR_MEMBER_EXECUTE_%s_ACTION", strtoupper($action));
+
+ // Is 'userid' set and not 'uid' ?
+ if ((!isset($urlData['uid'])) && (isset($urlData['userid']))) {
+ // Auto-fix this
+ $urlData['uid'] = $urlData['userid'];
+ } // END - if
+
+ // Is that function there?
+ if (function_exists($functionName)) {
+ // Execute the function
+ if (call_user_func_array($functionName, array($urlData)) == true) {
+ // Update status as well
+ $executed = SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['status'], $urlData['new_status'], array($urlData['id'] => $urlData));
+ } // END - if
+ } else {
+ // Not found!
+ ADD_FATAL(sprintf(MEMBER_SURFBAR_EXECUTE_ACTION_404, $functionName));
+ }
+
+ // Return status
+ return $executed;
+}
+// "Execute edit" function: Update changed data
+function SURFBAR_MEMBER_EXECUTE_EDIT_ACTION ($urlData) {
+ // Default is nothing done
+ $status = false;
+
+ // Translate URLs for testing
+ $url1 = COMPILE_CODE($urlData['url']);
+ $url2 = COMPILE_CODE($urlData['edit']['url']);
+
+ // Has the URL or limit changed?
+ if (true) {
+ //if (($urlData['views_allowed'] != $urlData['edit']['limit']) || ($url1 != $url2)) {
+ // Run the query
+ SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_surfbar_urls SET url='%s', views_allowed=%s, views_max=%s WHERE id=%s AND status='%s' LIMIT 1",
+ array($urlData['url'], $urlData['edit']['limit'], $urlData['edit']['limit'], $urlData['id'], $urlData['status']), __FILE__, __LINE__);
+
+ // All fine
+ $status = true;
+ }
+
+ // Return status
+ return $status;
+}
+// "Execute delete" function: Does nothing...
+function SURFBAR_MEMBER_EXECUTE_DELETE_ACTION ($urlData) {
+ // Nothing special to do (see above function for such "special actions" to perform)
+ return true;
+}
//
// -----------------------------------------------------------------------------
// Self-maintenance functions
} // END - if
// Look up the record
- $result = SQL_QUERY_ESC("SELECT id, userid, url, views_total, status, registered, last_locked, lock_reason, views_max, views_allowed
+ $result = SQL_QUERY_ESC("SELECT id, userid, url, views_total, views_max, views_allowed, status, registered, last_locked, lock_reason, views_max, views_allowed
FROM "._MYSQL_PREFIX."_surfbar_urls
WHERE %s='%s'".$add."
ORDER BY %s %s
} // END - if
// Translate status and limit
- $content['status'] = SURFBAR_TRANSLATE_STATUS($content['status']);
$content['limit'] = SURFBAR_TRANSLATE_LIMIT($content['limit']);
// If in reg-mode we notify admin
if (empty($uid)) $uid = 0;
// Just run the insert query for now
- SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_urls (userid,url,status,views_max,views_allowed) VALUES (%s,'%s','%s','%s','%s')",
+ SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_surfbar_urls (userid,url,status,views_max,views_allowed) VALUES (%s,'%s','%s',%s,%s)",
array(
$uid,
$urlData['url'],
// Set default subject if following eval() wents wrong
$subject = ADMIN_SURFBAR_NOTIFY_DEFAULT_SUBJECT;
- // Prepare subject
- $subject = constant(sprintf("ADMIN_SURFBAR_NOTIFY_%s_SUBJECT",
+ // Create constant name
+ $constantName = sprintf("ADMIN_SURFBAR_NOTIFY_%s_SUBJECT",
strtoupper($messageType)
- ));
+ );
+
+ // Prepare subject
+ if (defined($constantName)) {
+ $subject = constant($constantName);
+ } else {
+ ADD_FATAL(ADMIN_SURFBAR_NOTIFY_SUBJECT_404, $constantName);
+ }
+
+ // Translate some data if present
+ if (isset($content['status'])) $content['status'] = SURFBAR_TRANSLATE_STATUS($content['status']);
+ if (isset($content['registered'])) $content['registered'] = MAKE_DATETIME($content['registered'], "2");
+ if (isset($content['last_locked'])) $content['last_locked'] = MAKE_DATETIME($content['last_locked'], "2");
+ if (isset($content['views_total'])) $content['views_total'] = TRANSLATE_COMMA($content['views_total']);
+ if (isset($content['views_allowed'])) $content['views_allowed'] = TRANSLATE_COMMA($content['views_allowed']);
+ if (isset($content['views_max'])) $content['views_max'] = TRANSLATE_COMMA($content['views_max']);
// Send the notification out
return SEND_ADMIN_NOTIFICATION($subject, $templateName, $content, $content['uid']);
// Set default subject if following eval() wents wrong
$subject = MEMBER_SURFBAR_NOTIFY_DEFAULT_SUBJECT;
- // Prepare subject
- $subject = constant(sprintf("MEMBER_SURFBAR_NOTIFY_%s_SUBJECT",
+ // Create constant name
+ $constantName = sprintf("MEMBER_SURFBAR_NOTIFY_%s_SUBJECT",
strtoupper($messageType)
- ));
+ );
+
+ // Prepare subject
+ if (defined($constantName)) {
+ $subject = constant($constantName);
+ } else {
+ ADD_FATAL(MEMBER_SURFBAR_NOTIFY_SUBJECT_404, $constantName);
+ }
// Load template
$mailText = LOAD_EMAIL_TEMPLATE($templateName, $content, $content['uid']);
function SURFBAR_CHANGE_STATUS ($urlId, $prevStatus, $newStatus, $data=array()) {
global $_CONFIG;
+ // Make new status always lower-case
+ $newStatus = strtolower($newStatus);
+
// Get URL data for status comparison if missing
if ((!is_array($data)) || (count($data) == 0)) {
// Fetch missing URL data
$data = SURFBAR_GET_URL_DATA($urlId);
} // END - if
+ // Is the new status set?
+ if ((!is_string($newStatus)) || (empty($newStatus))) {
+ // Abort here, but fine!
+ return true;
+ } // END - if
+
// Is the status like prevStatus is saying?
if ($data[$urlId]['status'] != $prevStatus) {
// No, then abort here
// ---------- Comment out for debugging/developing member actions! ---------
// Was that fine?
- if (SQL_AFFECTEDROWS() != 1) {
- // No, something went wrong
- return false;
- } // END - if
+ //if (SQL_AFFECTEDROWS() != 1) {
+ // // No, something went wrong
+ // return false;
+ //} // END - if
// Prepare content for notification routines
$data[$urlId]['uid'] = $data[$urlId]['userid'];
$data[$urlId]['frametester'] = FRAMETESTER($data[$urlId]['url']);
$data[$urlId]['reward'] = TRANSLATE_COMMA($_CONFIG['surfbar_static_reward']);
$data[$urlId]['costs'] = TRANSLATE_COMMA($_CONFIG['surfbar_static_costs']);
- $data[$urlId]['status'] = SURFBAR_TRANSLATE_STATUS($newStatus);
- $data[$urlId]['registered'] = MAKE_DATETIME($data[$urlId]['registered'], "2");
- $newStatus = strtolower($newStatus);
+
+ // Do some dirt fixing here:
+ if (($data[$urlId]['status'] == "STOPPED") && ($newStatus == "pending")) {
+ // Fix for template change
+ $newStatus = "continued";
+ } // END - if
// Send admin notification
- SURFBAR_NOTIFY_ADMIN("url_{$newStatus}", $data[$urlId]);
+ SURFBAR_NOTIFY_ADMIN("url_{$data[$urlId]['status']}_{$newStatus}", $data[$urlId]);
// Send user notification
- SURFBAR_NOTIFY_USER("url_{$newStatus}", $data[$urlId]);
+ SURFBAR_NOTIFY_USER("url_{$data[$urlId]['status']}_{$newStatus}", $data[$urlId]);
// All done!
return true;
$URLs = array();
// Begin the query
- $result = SQL_QUERY_ESC("SELECT u.id, u.userid, u.url, u.views_total, u.status, UNIX_TIMESTAMP(u.registered) AS registered, UNIX_TIMESTAMP(u.last_locked) AS last_locked, u.lock_reason AS lock_reason
+ $result = SQL_QUERY_ESC("SELECT u.id, u.userid, u.url, u.views_total, u.views_max, u.views_allowed, u.status, UNIX_TIMESTAMP(u.registered) AS registered, UNIX_TIMESTAMP(u.last_locked) AS last_locked, u.lock_reason AS lock_reason
FROM "._MYSQL_PREFIX."_surfbar_urls AS u
WHERE u.userid=%s AND u.status != 'DELETED'
ORDER BY u.id ASC",