public static function getList()
 {
     $serverKey = MagentoDebugger::getKeyFromString($_SERVER['SERVER_NAME']);
     $profilerDir = MagentoDebugger::getDebuggerVarDir() . '/profiler';
     $dir = opendir($profilerDir);
     $files = array();
     while ($item = readdir($dir)) {
         $pathinfo = pathinfo($item);
         if (!isset($pathinfo['extension']) || $pathinfo['extension'] != 'jshe') {
             continue;
         }
         if (substr($item, 0, strlen($serverKey) + 1) != $serverKey . '.') {
             continue;
         }
         $headerJson = file_get_contents($profilerDir . '/' . $item);
         if (!$headerJson) {
             continue;
         }
         $header = json_decode(trim($headerJson));
         $time = $header->time;
         $header->time = @date('Y.m.d H:i:s', $time);
         $files[$time] = $header;
     }
     sort($files);
     echo json_encode($files);
 }
 public static function getMessages()
 {
     $varDir = MagentoDebugger::getProjectInfo()['extended']['var_dir'];
     $mysqlFile = $varDir . '/debug/pdo_mysql.log';
     if (!is_file($mysqlFile)) {
         return;
     }
     echo file_get_contents($mysqlFile);
 }
 public static function getList()
 {
     $serverKey = MagentoDebugger::getKeyFromString($_SERVER['SERVER_NAME']);
     $mailDir = MagentoDebugger::getDebuggerVarDir() . '/mails';
     $dir = opendir($mailDir);
     $files = array();
     while ($item = readdir($dir)) {
         $pathinfo = pathinfo($item);
         if (!isset($pathinfo['extension']) || $pathinfo['extension'] != 'json') {
             continue;
         }
         $itemConfigurationString = file_get_contents($mailDir . '/' . $item);
         $itemConfiguration = (array) json_decode($itemConfigurationString);
         $itemConfiguration['identifier'] = $pathinfo['filename'];
         $itemConfiguration['time'] = filemtime($mailDir . '/' . $item);
         $itemConfiguration['datetime'] = @date('Y-m-d H:i:s', $itemConfiguration['time']);
         $files[$itemConfiguration['time'] . '_' . uniqid()] = $itemConfiguration;
     }
     sort($files);
     echo json_encode($files);
 }
 public function savePost()
 {
     if (!$_POST) {
         return;
     }
     $identifier = null;
     $projectDirectory = null;
     if (isset($_POST['project_identifier'])) {
         $identifier = $this->_postIdentifier = $this->_stripData($_POST['project_identifier']);
     }
     if (isset($_POST['project_directory'])) {
         $projectDirectory = $this->_postProjectDirectory = $this->_stripData(MagentoDebugger::getPath($_POST['project_directory']));
     }
     if (!$this->verifyMagentoDirectory($projectDirectory)) {
         array_push($this->_errors, 'Please enter a right magento project directory.');
         return;
     }
     $dataToSave = "[config]\n";
     $dataToSave .= "name = '" . $_SERVER['SERVER_NAME'] . "'\n";
     $dataToSave .= "dir = '" . $projectDirectory . "'\n";
     $configDir = MagentoDebugger::getDebuggerDir() . '/config';
     $varDir = MagentoDebugger::getDebuggerDir() . '/var';
     $allowed = true;
     if (!MagentoDebugger::isWritable($varDir)) {
         array_push($this->_errors, 'Please make "var" dir at the Magento Debugger and all files on it writable ("' . $varDir . '").');
         $allowed = false;
     }
     if (!MagentoDebugger::isWritable($configDir)) {
         array_push($this->_errors, 'Please make "config" dir at the Magento Debugger and all files on it writable ("' . $configDir . '").');
         $allowed = false;
     }
     if ($allowed && @file_put_contents($configDir . '/' . $identifier . '.ini', $dataToSave)) {
         array_push($this->_messages, 'Host sucefully configured.');
     } elseif ($allowed) {
         array_push($this->_errors, 'Please check the dir "config" on the Magento Debugger. The file ' . $configDir . '/' . $identifier . '.ini can not be written.');
     }
 }
        $file = MagentoDebugger::getDebuggerVarDir() . '/ajax-console.log';
        file_put_contents($file, $_POST['message'] . "\n", FILE_APPEND);
        return;
    }
    if ($_GET['magento_debug'] == 'model' && isset($_GET['magento_debug_model_method'])) {
        $modelMethodName = $_GET['magento_debug_model_method'];
        header('Content-Type: text/plain');
        require_once MagentoDebugger::getDebuggerDir() . '/libs/Debugger/model.php';
    }
    if ($_GET['magento_debug'] == 'maillist' && isset($_GET['magento_debug_action'])) {
        require_once MagentoDebugger::getDebuggerDir() . '/libs/Debugger/mails.php';
    }
    if ($_GET['magento_debug'] == 'profiler' && isset($_GET['magento_debug_action'])) {
        require_once MagentoDebugger::getDebuggerDir() . '/libs/Debugger/profiler.php';
    }
    if ($_GET['magento_debug'] == 'mysql' && isset($_GET['magento_debug_action'])) {
        require_once MagentoDebugger::getDebuggerDir() . '/libs/Debugger/mysql.php';
    }
    return;
}
// Profiler
if (isset($_COOKIE['magento_debug_profiler']) && $_COOKIE['magento_debug_profiler'] == 'yes') {
    MagentoDebugger::enableProfiler();
}
//$_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
//ini_set('display_errors', 1);
chdir(MagentoDebugger::getProjectDir());
require_once 'index.php';
MagentoDebugger::saveConfiguration();
MagentoDebugger::saveProfiler();
 public static function updateFiles($source, $dest, $isRoot = false)
 {
     if ($isRoot) {
         self::$_defaultDirectoryPermission = fileperms($dest);
     }
     // Clearing
     if (is_dir($source)) {
         $dirResource = opendir($dest);
         while ($file = readdir($dirResource)) {
             if ($file == "." || $file == ".." || $isRoot && in_array($file, self::$_excludeUpdateFiles)) {
                 continue;
             }
             $sourceObject = $source . '/' . $file;
             if (!is_file($sourceObject) && !is_dir($sourceObject)) {
                 $destObject = $dest . '/' . $file;
                 MagentoDebugger::removeDirectory($destObject);
             }
         }
         closedir($dirResource);
     }
     // Copying
     if (is_dir($source)) {
         $dirResource = opendir($source);
         if (!$isRoot && !is_dir($dest)) {
             mkdir($dest);
             chmod($dest, self::$_defaultDirectoryPermission);
         }
         while ($file = readdir($dirResource)) {
             if ($file != "." && $file != "..") {
                 self::updateFiles($source . "/" . $file, $dest . "/" . $file);
             }
         }
         closedir($dirResource);
     } else {
         $permissions = self::$_defaultDirectoryPermission;
         if (file_exists($dest)) {
             $permissions = fileperms($dest);
         }
         copy($source, $dest);
         if ($permissions) {
             chmod($dest, $permissions);
         }
     }
 }
    MagentoDebugger::iniMage();
    while (true) {
        if (!$modelMethodName) {
            MagentoDebugger::log("Model and method does not present.");
            break;
        }
        MagentoDebugger::log("Starting model \"" . $modelMethodName . "\"");
        $modelActionName = explode('::', $modelMethodName);
        if (count($modelActionName) != 2) {
            Mage::log("Please enter a valid method & model (\"namespace_model::method\").");
            break;
        }
        $modelMethod = $modelActionName[1];
        $model = Mage::getModel($modelActionName[0]);
        if (!$model) {
            MagentoDebugger::log("Present model does not exists.");
            break;
        }
        if (!method_exists($model, $modelMethod)) {
            MagentoDebugger::log("Present method does not exists.");
            break;
        }
        $model->{$modelMethod}();
        MagentoDebugger::log();
        MagentoDebugger::log("Method has been sucefully processed.");
        break;
    }
} catch (Exception $e) {
    Mage::printException($e);
    exit(1);
}
 public static function saveConfiguration()
 {
     if (self::$_configurationSaved) {
         return;
     }
     self::$_configurationSaved = true;
     $dataObject = new Varien_Object();
     $dataObject->setVarDir(Mage::getBaseDir('var'));
     $json = Mage::helper('core')->jsonEncode($dataObject);
     $projectInfo = self::getProjectInfo();
     $file = self::getDebuggerDir() . '/var/' . $projectInfo['identifier'] . '.project.json';
     file_put_contents($file, $json);
 }
<?php

require_once dirname(__FILE__) . '/libs/Debugger/debugger.php';
MagentoDebugger::setDebuggerDir(dirname(__FILE__));
if (!isset($argv[1])) {
    return;
}
$version = $argv[1];
require_once MagentoDebugger::getDebuggerDir() . '/libs/Debugger/update.php';
try {
    MagentoDebugger_Update::run($version);
} catch (Exception $e) {
    echo "Error while updating: " . $e->getMessage . "\n";
}
<?php

require_once dirname(__FILE__) . '/libs/Debugger/debugger.php';
MagentoDebugger::setDebuggerDir(dirname(__FILE__));
$targetDir = MagentoDebugger::getDebuggerDir();
require_once MagentoDebugger::getDebuggerDir() . '/libs/Debugger/update.php';
$filePermissions = fileperms(MagentoDebugger::getDebuggerVarDir() . '/required.version');
$dirPermissions = fileperms(MagentoDebugger::getDebuggerVarDir() . '/required.dir');
$owner = fileowner(MagentoDebugger::getDebuggerVarDir() . '/required.version');
$fixed = MagentoDebugger_Update::fixPermissions($targetDir, $owner, $filePermissions, $dirPermissions);
 /**
  * Send mail to recipient
  *
  * @param   array|string       $email        E-mail(s)
  * @param   array|string|null  $name         receiver name(s)
  * @param   array              $variables    template variables
  * @return  boolean
  **/
 public function send($email, $name = null, array $variables = array())
 {
     if (!$this->isValidForSend()) {
         Mage::logException(new Exception('This letter cannot be sent.'));
         // translation is intentionally omitted
         return false;
     }
     $emails = array_values((array) $email);
     $names = is_array($name) ? $name : (array) $name;
     $names = array_values($names);
     foreach ($emails as $key => $email) {
         if (!isset($names[$key])) {
             $names[$key] = substr($email, 0, strpos($email, '@'));
         }
     }
     $variables['email'] = reset($emails);
     $variables['name'] = reset($names);
     ini_set('SMTP', Mage::getStoreConfig('system/smtp/host'));
     ini_set('smtp_port', Mage::getStoreConfig('system/smtp/port'));
     $mail = $this->getMail();
     $setReturnPath = Mage::getStoreConfig(self::XML_PATH_SENDING_SET_RETURN_PATH);
     switch ($setReturnPath) {
         case 1:
             $returnPathEmail = $this->getSenderEmail();
             break;
         case 2:
             $returnPathEmail = Mage::getStoreConfig(self::XML_PATH_SENDING_RETURN_PATH_EMAIL);
             break;
         default:
             $returnPathEmail = null;
             break;
     }
     if ($returnPathEmail !== null) {
         $mailTransport = new Zend_Mail_Transport_Sendmail("-f" . $returnPathEmail);
         Zend_Mail::setDefaultTransport($mailTransport);
     }
     $debugToArray = array();
     foreach ($emails as $key => $email) {
         array_push($debugToArray, $email);
         $mail->addTo($email, '=?utf-8?B?' . base64_encode($names[$key]) . '?=');
     }
     $this->setUseAbsoluteLinks(true);
     $text = $this->getProcessedTemplate($variables, true);
     $this->_mailDebuggerInfo->setEmailSubject($this->getProcessedTemplateSubject($variables));
     $this->_mailDebuggerInfo->setEmailBody($text);
     $this->_mailDebuggerInfo->setEmailIsPlan($this->isPlain());
     $this->_mailDebuggerInfo->setBacktrace(Varien_Debug::backtrace(true));
     if ($this->isPlain()) {
         $mail->setBodyText($text);
     } else {
         $mail->setBodyHTML($text);
     }
     $mail->setSubject('=?utf-8?B?' . base64_encode($this->getProcessedTemplateSubject($variables)) . '?=');
     $mail->setFrom($this->getSenderEmail(), $this->getSenderName());
     $this->_mailDebuggerInfo->setEmailTo(implode("; ", $debugToArray));
     $this->_mailDebuggerInfo->setEmailFrom($mail->getFrom());
     $jsonDebugData = Mage::helper('core')->jsonEncode($this->_mailDebuggerInfo->getData());
     $serverKey = MagentoDebugger::getKeyFromString(isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'console');
     $jsonDebugFile = MagentoDebugger::getDebuggerVarDir() . '/mails/' . $serverKey . '.' . time() . '_' . uniqid() . '.json';
     if (!is_dir(MagentoDebugger::getDebuggerVarDir() . '/mails/')) {
         mkdir(MagentoDebugger::getDebuggerVarDir() . '/mails/');
     }
     //file_put_contents($jsonDebugFile . '.html', $text);
     file_put_contents($jsonDebugFile, $jsonDebugData);
     try {
         $mail->send();
         $this->_mail = null;
     } catch (Exception $e) {
         $this->_mail = null;
         Mage::logException($e);
         return false;
     }
     return true;
 }