public static function package($source, $targetFile, $incParent = false)
 {
     // Make sure we're able to use the zip library
     if (!extension_loaded('zip')) {
         return false;
     }
     // Prepare the path
     $source = str_replace('\\', '/', realpath($source));
     // Make sure the file exists and is safe
     if (!IsSanitized::filepath($source)) {
         return false;
     }
     if (!file_exists($source)) {
         return false;
     }
     // Make sure the directory exists
     $targetDir = dirname($targetFile);
     if (!is_dir($targetDir)) {
         Dir::create($targetDir);
     }
     // Prepare the Zip Functionality
     $zip = new ZipArchive();
     if (!$zip->open($targetFile, ZIPARCHIVE::CREATE)) {
         return false;
     }
     // Run the Zip Processer
     if (is_dir($source) === true) {
         $baseDir = '';
         if ($incParent) {
             $exp = explode("/", $source);
             $baseDir = $exp[count($exp) - 1] . '/';
             $zip->addEmptyDir($baseDir);
         }
         $files = Dir::getFiles($source, true, true);
         foreach ($files as $file) {
             if (is_dir($source . '/' . $file) === true) {
                 $zip->addEmptyDir($baseDir . $file);
             } else {
                 if (is_file($source . '/' . $file) === true) {
                     $zip->addFile($source . '/' . $file, $baseDir . $file);
                 }
             }
         }
     } else {
         if (is_file($source) === true) {
             $zip->addFile($file);
         }
     }
     return $zip->close();
 }
function customErrorHandler($errorNumber, $errorString, $errorFile, $errorLine)
{
    // Prepare Values
    $errorType = "Error";
    switch ($errorNumber) {
        case E_USER_NOTICE:
            $errorType = "Notice";
            $importance = 0;
            break;
        case E_USER_WARNING:
            $errorType = "Warning";
            $importance = 2;
            break;
        case E_USER_ERROR:
            $errorType = "Fatal Error";
            $importance = 4;
            break;
        default:
            $errorType = "Unknown Error";
            $importance = 8;
            break;
    }
    // Run the Backtrace
    $backtrace = debug_backtrace();
    if (isset($backtrace[1])) {
        // Prepare Backtrace Values
        $origin = $backtrace[1];
        $behind = $backtrace[0];
        // Identify the current URL
        $urlData = URL::parse($_SERVER['SERVER_NAME'] . "/" . $_SERVER['REQUEST_URI']);
        // If the error was triggered with trigger_error(), simplify the logging
        if ($origin['function'] == "trigger_error") {
            // Prepare Logging Values
            $class = "";
            $function = "trigger_error";
            $argString = $origin['args'][0];
            $filePath = str_replace(SYS_PATH, "", $origin['file']);
            $fileLine = (int) $origin['line'];
            // Local Environment
            if (ENVIRONMENT == "local") {
                $cons = get_defined_constants(true);
                $debugData = array("Backtrace" => array_splice($backtrace, 1), "URL" => $urlData, "Constants" => $cons['user'], "_GET" => $_GET, "_POST" => $_POST, "_COOKIE" => $_COOKIE, "_SESSION" => $_SESSION, "_SERVER" => $_SERVER);
            }
        } else {
            // Prepare Logging Values
            $class = isset($origin['class']) ? $origin['class'] : "";
            $function = isset($origin['function']) ? $origin['function'] : "";
            $argString = isset($origin['args']) ? Data_Utilities::convertArrayToArgumentString($origin['args']) : "";
            $filePath = isset($behind['file']) ? str_replace(dirname(SYS_PATH), "", $behind['file']) : '';
            $fileLine = isset($behind['line']) ? $behind['line'] : 0;
            // Skip instances of the autoloader
            if ($errorType == "Unknown Error" and strpos($function, "spl_autoload") !== false) {
                return false;
            }
        }
        // Debug files in the local environment
        if (ENVIRONMENT == "local") {
            if (!isset($urlData['path'])) {
                $urlData['path'] = "home";
            }
            // Add an entry to the debug timeline
            File::write(SYS_PATH . "/debug/" . microtime(true) . "-" . str_replace("/", "_", $urlData['path']) . ".php", print_r(isset($debugData) ? $debugData : $backtrace, true));
            // Add an entry to the primary debug page
            File::prepend(SYS_PATH . "/debug/_primaryDebug.php", print_r(array("Domain" => FULL_DOMAIN, "URL" => $urlData['full'], "Error" => $errorType . ": " . $argString, "File" => "[Line " . $fileLine . "] " . $filePath, "Timestamp" => microtime(true)), true));
            // Add an entry to the debugging page
            File::prepend(SYS_PATH . "/debug/by-site/" . FULL_DOMAIN . "/" . $urlData['path'] . ".php", print_r(array("URL" => $urlData['full'], "Error" => $errorType . ": " . $behind['args'][1], "File" => "[Line " . $fileLine . "] " . $filePath, "Timestamp" => microtime(true)), true));
            // Prune the debug pages so that they don't get overloaded
            File::prune(SYS_PATH . "/debug/_primaryDebug.php", 300);
            File::prune(SYS_PATH . "/debug/by-site/" . FULL_DOMAIN . "/" . $urlData['path'] . ".php", 120);
            // Prune the timeline debug files so that they don't exhaust the system
            if (mt_rand(0, 25) == 22) {
                $debugFiles = Dir::getFiles(SYS_PATH . "/debug");
                foreach ($debugFiles as $dbf) {
                    if ($dbf[0] != "_") {
                        $exp = explode(".", $dbf);
                        if ($exp[0] < time() + 86400) {
                            File::delete(SYS_PATH . "/debug/" . $dbf);
                        } else {
                            break;
                        }
                    }
                }
            }
        }
        // Log this error in the database
        // Debug::logError($importance, $errorType, $class, $function, $argString, $filePath, $fileLine, $urlData['full'], Me::$id);
        // End the Error Handler
        return false;
        // TRUE to run standard error logging afterward
        /*
        if(ENVIRONMENT != "production")
        {
        	Debug::$verbose = true;
        	
        	Debug::scriptError($errorString, $class, $function, $argString, $filePath, $fileLine, $filePathNext, $fileLineNext);
        }
        else
        {
        	return false;
        }
        */
    }
    // Returning FALSE will activate the default PHP Handler after ours runs.
    // Returning TRUE will prevent the default PHP Handler from running.
    return true;
}
Beispiel #3
0
 public static function importToDatabase($importDir)
 {
     // Prepare Values
     $class = get_called_class();
     $buildData = [];
     $fileList = Dir::getFiles($importDir);
     // Loop through each file and retrieve the contents
     foreach ($fileList as $file) {
         $fileContents = file_get_contents($importDir . '/' . $file);
         $id = str_replace(".json", "", $file);
         $buildData[$id] = json_decode($fileContents, true);
     }
     // Run the build process
     static::build($buildData);
 }
 public static function getAdminPages($classPath = "")
 {
     $controllerList = array();
     // Get the admin pages for this class, if availble
     if (is_dir($classPath . '/admin')) {
         $contFiles = Dir::getFiles($classPath . '/admin');
         foreach ($contFiles as $filename) {
             if (strpos($filename, ".php") === false) {
                 continue;
             }
             $fileName = Sanitize::variable(str_replace(".php", "", $filename), " -");
             $controllerList[] = $fileName;
         }
     }
     return $controllerList;
 }