]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
Caching of XML/email templates finished:
[mailer.git] / inc / functions.php
index 9305df0bc288329bd251a47fd9ab4eb558cb2f64..c37b570c973521bd1b26183a87f88e4754da0972 100644 (file)
@@ -64,7 +64,7 @@ function addFatalMessage ($F, $L, $message, $extra = '') {
        array_push($GLOBALS['fatal_messages'], $message);
 
        // Log fatal messages away
-       logDebugMessage($F, $L, 'Fatal error message: ' . $message);
+       logDebugMessage($F, $L, 'Fatal error message: ' . compileCode($message));
 }
 
 // Getter for total fatal message count
@@ -330,7 +330,7 @@ function translateMenuVisibleLocked ($content, $prefix = '') {
 }
 
 // Generates an URL for the dereferer
-function generateDerefererUrl ($url) {
+function generateDereferrerUrl ($url) {
        // Don't de-refer our own links!
        if (substr($url, 0, strlen(getUrl())) != getUrl()) {
                // Encode URL
@@ -2282,6 +2282,136 @@ function removeDoubleDotFromSubject ($subject) {
        return $subject;
 }
 
+// Adds a given entry to the database
+function memberAddEntries ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $columnIndex = NULL) {
+       // Is it a member?
+       if (!isMember()) {
+               // Then abort here
+               return false;
+       } // END - if
+
+       // Set POST data generic userid
+       setPostRequestElement('userid', getMemberId());
+
+       // Call inner function
+       doGenericAddEntries($tableName, $columns, $filterFunctions, $extraValues, $timeColumns, $columnIndex);
+
+       // Entry has been added?
+       if ((!SQL_HASZEROAFFECTED()) && ($GLOBALS['__XML_PARSE_RESULT'] === true)) {
+               // Display success message
+               displayMessage('{--MEMBER_ENTRY_ADDED--}');
+       } else {
+               // Display failed message
+               displayMessage('{--MEMBER_ENTRY_NOT_ADDED--}');
+       }
+}
+
+// Edit rows by given id numbers
+function memberEditEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $editNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
+       // $tableName must be an array
+       if ((!is_array($tableName)) || (count($tableName) != 1)) {
+               // No tableName specified
+               reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
+       } elseif (!is_array($idColumn)) {
+               // $idColumn is no array
+               reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
+       } elseif (!is_array($userIdColumn)) {
+               // $userIdColumn is no array
+               reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
+       } elseif (!is_array($editNow)) {
+               // $editNow is no array
+               reportBug(__FUNCTION__, __LINE__, 'editNow[]=' . gettype($editNow) . '!=array: userIdColumn=' . $userIdColumn);
+       } // END - if
+
+       // Shall we change here or list for editing?
+       if ($editNow[0] === true) {
+               // Add generic userid field
+               setPostRequestElement('userid', getMemberId());
+
+               // Call generic change method
+               $affected = doGenericEditEntriesConfirm($tableName, $columns, $filterFunctions, $extraValues, $timeColumns, $editNow, $idColumn, $userIdColumn, $rawUserId, $cacheFiles);
+
+               // Was this fine?
+               if ($affected == countPostSelection($idColumn[0])) {
+                       // All deleted
+                       displayMessage('{--MEMBER_ALL_ENTRIES_EDITED--}');
+               } else {
+                       // Some are still there :(
+                       displayMessage(sprintf(getMessage('MEMBER_SOME_ENTRIES_NOT_EDITED'), $affected, countPostSelection($idColumn[0])));
+               }
+       } else {
+               // List for editing
+               memberListBuilder('edit', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+       }
+}
+
+// Delete rows by given id numbers
+function memberDeleteEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $deleteNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
+       // Do this only for members
+       assert(isMember());
+
+       // $tableName must be an array
+       if ((!is_array($tableName)) || (count($tableName) != 1)) {
+               // No tableName specified
+               reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
+       } elseif (!is_array($idColumn)) {
+               // $idColumn is no array
+               reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
+       } elseif (!is_array($userIdColumn)) {
+               // $userIdColumn is no array
+               reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
+       } elseif (!is_array($deleteNow)) {
+               // $deleteNow is no array
+               reportBug(__FUNCTION__, __LINE__, 'deleteNow[]=' . gettype($deleteNow) . '!=array: userIdColumn=' . $userIdColumn);
+       } // END - if
+
+       // Shall we delete here or list for deletion?
+       if ($deleteNow[0] === true) {
+               // Add generic userid field
+               setPostRequestElement('userid', getMemberId());
+
+               // Call generic function
+               $affected = doGenericDeleteEntriesConfirm($tableName, $columns, $filterFunctions, $extraValues, $deleteNow, $idColumn, $userIdColumn, $rawUserId, $cacheFiles);
+
+               // Was this fine?
+               if ($affected == countPostSelection($idColumn[0])) {
+                       // All deleted
+                       displayMessage('{--MEMBER_ALL_ENTRIES_REMOVED--}');
+               } else {
+                       // Some are still there :(
+                       displayMessage(sprintf(getMessage('MEMBER_SOME_ENTRIES_NOT_DELETED'), SQL_AFFECTEDROWS(), countPostSelection($idColumn[0])));
+               }
+       } else {
+               // List for deletion confirmation
+               memberListBuilder('delete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+       }
+}
+
+// Build a special template list
+function memberListBuilder ($listType, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $rawUserId = array('userid')) {
+       // Do this only for logged in member
+       assert(isMember());
+
+       // Call inner (general) function
+       doGenericListBuilder('member', $listType, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $rawUserId);
+}
+
+// Checks whether given address is IPv4
+function isIp4AddressValid ($address) {
+       // Is there cache?
+       if (!isset($GLOBALS[__FUNCTION__][$address])) {
+               // Determine it ...
+               $GLOBALS[__FUNCTION__][$address] = preg_match('/((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]))/', $address);
+       } // END - if
+
+       // Return cache
+       return $GLOBALS[__FUNCTION__][$address];
+}
+
+// ----------------------------------------------------------------------------
+//              "Translatation" functions for points_data table
+// ----------------------------------------------------------------------------
+
 // Translates generically some data into a target string
 function translateGeneric ($messagePrefix, $data) {
        // Is the method null or empty?
@@ -2309,16 +2439,6 @@ function translateGeneric ($messagePrefix, $data) {
        return $return;
 }
 
-// Translates task type to a human-readable version
-function translateTaskType ($taskType) {
-       // Return it
-       return translateGeneric('ADMIN_TASK_TYPE', $taskType);
-}
-
-// ----------------------------------------------------------------------------
-//              "Translatation" functions for points_data table
-// ----------------------------------------------------------------------------
-
 // Translates points subject to human-readable
 function translatePointsSubject ($subject) {
        // Remove any :x
@@ -2358,6 +2478,12 @@ function translatePointsNotifyRecipient ($notifyRecipient) {
        return translateGeneric('POINTS_NOTIFY_RECIPIENT', $notifyRecipient);
 }
 
+// Translates task type to a human-readable version
+function translateTaskType ($taskType) {
+       // Return it
+       return translateGeneric('ADMIN_TASK_TYPE', $taskType);
+}
+
 //-----------------------------------------------------------------------------
 // Automatically re-created functions, all taken from user comments on www.php.net
 //-----------------------------------------------------------------------------