예제 #1
0
파일: cron.php 프로젝트: phpsa/CoreCMS
 public function index()
 {
     $output = DATE("c") . " Running Cron \n";
     $this->event->trigger('cron.run', $output);
     $logger = new \Core\Log("cron.log");
     $logger->write($output);
     echo $output;
     exit;
 }
예제 #2
0
파일: index.php 프로젝트: alvin-li/easy-pf
 */
define('ROOT_PATH', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
//项目根目录
require_once 'config/init.conf.php';
require_once CORE_PATH . 'Loader.php';
//捕获错误信息
function getLastErr()
{
    $errInfo = error_get_last();
    if (null != $errInfo) {
        $fileName = ROOT_PATH . 'logs' . DIRECTORY_SEPARATOR . 'error.log';
        $errStr = date('Y-m-d H:i:s');
        foreach ($errInfo as $key => $value) {
            $errStr .= $key . '=' . $value . ',';
        }
        file_put_contents($fileName, $errStr, FILE_APPEND);
    }
}
register_shutdown_function('getLastErr');
registerAutoLoad();
try {
    $routerObj = new Core\Router();
    $routerObj->dispatch();
} catch (Exception $exc) {
    $logObj = new Core\Log(EXCEPTION_LOG_FILE, false, EXCEPTION_LOG_PATH);
    $logObj->exceptionLog(array('code' => $exc->getCode(), 'msg' => $exc->getMessage(), 'file' => $exc->getFile(), 'trace' => $exc->getTraceAsString()));
    $logObj->closeFile();
    if ('dev' == ENV) {
        Core\CommonFunction::show_exception($exc);
    }
}
예제 #3
0
                Всего у вас <?php 
echo $count;
?>
 уведомений
            </p>
        </li>
        <?php 
foreach ($result as $obj) {
    ?>
            <li>
                <a href="<?php 
    echo $obj->link;
    ?>
">
                    <?php 
    echo Core\Log::icon($obj->type);
    ?>
                    <span class="message" title="<?php 
    echo $obj->name;
    ?>
"><?php 
    echo $obj->name;
    ?>
</span>
                    <span class="time"><?php 
    echo date('d.m.Y H:i', $obj->created_at);
    ?>
</span>
                </a>
            </li>
        <?php 
예제 #4
0
 public function refresh()
 {
     $this->load->language('extension/modification');
     $this->document->setTitle($this->language->get('heading_title'));
     $this->load->model('extension/modification');
     if ($this->validate()) {
         // Just before files are deleted, if config settings say maintenance mode is off then turn it on
         $org_maintenance = $this->config->get('config_maintenance');
         if (!$this->config->get('config_maintenance')) {
             $this->load->model('setting/setting');
             $this->model_setting_setting->editSettingValue('config', 'config_maintenance', true);
         }
         //Log
         $log = array();
         // Clear all modification files
         $files = array();
         // Make path into an array
         $path = array(DIR_MODIFICATION . '*');
         // While the path array is still populated keep looping through
         while (count($path) != 0) {
             $next = array_shift($path);
             foreach (glob($next) as $file) {
                 // If directory add to path array
                 if (is_dir($file)) {
                     $path[] = $file . '/*';
                 }
                 // Add the file to the files to be deleted array
                 $files[] = $file;
             }
         }
         // Reverse sort the file array
         rsort($files);
         // Clear all modification files
         foreach ($files as $file) {
             if ($file != DIR_MODIFICATION . 'index.html') {
                 // If file just delete
                 if (is_file($file)) {
                     unlink($file);
                     // If directory use the remove directory function
                 } elseif (is_dir($file)) {
                     rmdir($file);
                 }
             }
         }
         // Begin
         $xml = array();
         // Load the default modification XML
         $xml[] = file_get_contents(DIR_SYSTEM . 'modification.xml');
         // This is purly for developers so they can run mods directly and have them run without upload sfter each change.
         $files = glob(DIR_SYSTEM . '*.mod.xml');
         if ($files) {
             foreach ($files as $file) {
                 $xml[] = file_get_contents($file);
             }
         }
         // Get the default modification file
         $results = $this->model_extension_modification->getModifications();
         foreach ($results as $result) {
             if ($result['status']) {
                 $xml[] = $result['xml'];
             }
         }
         $modification = array();
         foreach ($xml as $xml) {
             $dom = new DOMDocument('1.0', 'UTF-8');
             $dom->preserveWhiteSpace = false;
             $dom->loadXml($xml);
             // Log
             $log[] = 'MOD: ' . $dom->getElementsByTagName('name')->item(0)->textContent;
             // Wipe the past modification store in the backup array
             $recovery = array();
             // Set the a recovery of the modification code in case we need to use it if an abort attribute is used.
             if (isset($modification)) {
                 $recovery = $modification;
             }
             $files = $dom->getElementsByTagName('modification')->item(0)->getElementsByTagName('file');
             foreach ($files as $file) {
                 $operations = $file->getElementsByTagName('operation');
                 $files = explode(',', $file->getAttribute('path'));
                 foreach ($files as $file) {
                     $path = '';
                     // Get the full path of the files that are going to be used for modification
                     if (substr($file, 0, 5) == 'front') {
                         $path = DIR_ROOT . str_replace('../', '', substr($file, 5));
                     }
                     if (substr($file, 0, 5) == 'admin') {
                         $path = DIR_APPLICATION . str_replace('../', '', substr($file, 6));
                     }
                     if (substr($file, 0, 6) == 'system') {
                         $path = DIR_SYSTEM . str_replace('../', '', substr($file, 7));
                     }
                     if (substr($file, 0, 7) == 'plugins') {
                         $path = DIR_PLUGINS . str_replace('../', '', substr($file, 8));
                     }
                     if ($path) {
                         $files = glob($path);
                         if ($files) {
                             foreach ($files as $file) {
                                 // Get the key to be used for the modification cache filename.
                                 if (substr($file, 0, strlen(DIR_ROOT)) == DIR_ROOT) {
                                     $key = substr($file, strlen(DIR_ROOT));
                                 }
                                 if (substr($file, 0, strlen(DIR_APPLICATION)) == DIR_APPLICATION) {
                                     $key = 'admin/' . substr($file, strlen(DIR_APPLICATION));
                                 }
                                 if (substr($file, 0, strlen(DIR_SYSTEM)) == DIR_SYSTEM) {
                                     $key = 'system/' . substr($file, strlen(DIR_SYSTEM));
                                 }
                                 if (substr($file, 0, strlen(DIR_PLUGINS)) == DIR_PLUGINS) {
                                     $key = 'plugins/' . substr($file, strlen(DIR_PLUGINS));
                                 }
                                 // If file contents is not already in the modification array we need to load it.
                                 if (!isset($modification[$key])) {
                                     $content = file_get_contents($file);
                                     $modification[$key] = preg_replace('~\\r?\\n~', "\n", $content);
                                     $original[$key] = preg_replace('~\\r?\\n~', "\n", $content);
                                     // Log
                                     $log[] = 'FILE: ' . $key;
                                 }
                                 foreach ($operations as $operation) {
                                     $error = $operation->getAttribute('error');
                                     // Ignoreif
                                     $ignoreif = $operation->getElementsByTagName('ignoreif')->item(0);
                                     if ($ignoreif) {
                                         if ($ignoreif->getAttribute('regex') != 'true') {
                                             if (strpos($modification[$key], $ignoreif->textContent) !== false) {
                                                 continue;
                                             }
                                         } else {
                                             if (preg_match($ignoreif->textContent, $modification[$key])) {
                                                 continue;
                                             }
                                         }
                                     }
                                     $status = false;
                                     // Search and replace
                                     if ($operation->getElementsByTagName('search')->item(0)->getAttribute('regex') != 'true') {
                                         // Search
                                         $search = $operation->getElementsByTagName('search')->item(0)->textContent;
                                         $trim = $operation->getElementsByTagName('search')->item(0)->getAttribute('trim');
                                         $index = $operation->getElementsByTagName('search')->item(0)->getAttribute('index');
                                         $position = $operation->getElementsByTagName('search')->item(0)->getAttribute('position');
                                         $offset = $operation->getElementsByTagName('search')->item(0)->getAttribute('offset');
                                         // Trim line if no trim attribute is set or is set to true.
                                         if (!$trim || $trim == 'true') {
                                             $search = trim($search);
                                         }
                                         // Add
                                         $add = $operation->getElementsByTagName('add')->item(0)->textContent;
                                         $trim = $operation->getElementsByTagName('add')->item(0)->getAttribute('trim');
                                         $_position = $operation->getElementsByTagName('add')->item(0)->getAttribute('position');
                                         $_offset = $operation->getElementsByTagName('add')->item(0)->getAttribute('offset');
                                         if ($_offset) {
                                             $offset = $_offset;
                                         }
                                         if ($_position) {
                                             $position = $_position;
                                         }
                                         if ($offset == '') {
                                             $offset = 0;
                                         }
                                         // Trim line if is set to true.
                                         if ($trim == 'true') {
                                             $add = trim($add);
                                         }
                                         // Log
                                         $log[] = 'CODE: ' . $search;
                                         // Check if using indexes
                                         if ($index !== '') {
                                             $indexes = explode(',', $index);
                                         } else {
                                             $indexes = array();
                                         }
                                         // Get all the matches
                                         $i = 0;
                                         $lines = explode("\n", $modification[$key]);
                                         for ($line_id = 0; $line_id < count($lines); $line_id++) {
                                             $line = $lines[$line_id];
                                             // Status
                                             $match = false;
                                             // Check to see if the line matches the search code.
                                             if (stripos($line, $search) !== false) {
                                                 // If indexes are not used then just set the found status to true.
                                                 if (!$indexes) {
                                                     $match = true;
                                                 } elseif (in_array($i, $indexes)) {
                                                     $match = true;
                                                 }
                                                 $i++;
                                             }
                                             // Now for replacing or adding to the matched elements
                                             if ($match) {
                                                 switch ($position) {
                                                     default:
                                                     case 'replace':
                                                         $new_lines = explode("\n", $add);
                                                         if ($offset < 0) {
                                                             array_splice($lines, $line_id + $offset, abs($offset) + 1, array(str_replace($search, $add, $line)));
                                                             $line_id -= $offset;
                                                         } else {
                                                             array_splice($lines, $line_id, $offset + 1, array(str_replace($search, $add, $line)));
                                                         }
                                                         break;
                                                     case 'before':
                                                         $new_lines = explode("\n", $add);
                                                         array_splice($lines, $line_id - $offset, 0, $new_lines);
                                                         $line_id += count($new_lines);
                                                         break;
                                                     case 'after':
                                                         $new_lines = explode("\n", $add);
                                                         //array_unshift($new_lines, $search);
                                                         array_splice($lines, $line_id + 1 + $offset, 0, $new_lines);
                                                         $line_id += count($new_lines);
                                                         break;
                                                 }
                                                 // Log
                                                 $log[] = 'LINE: ' . $line_id;
                                                 $status = true;
                                             }
                                         }
                                         $modification[$key] = implode("\n", $lines);
                                     } else {
                                         $search = trim($operation->getElementsByTagName('search')->item(0)->textContent);
                                         $limit = $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
                                         $replace = trim($operation->getElementsByTagName('add')->item(0)->textContent);
                                         // Limit
                                         if (!$limit) {
                                             $limit = -1;
                                         }
                                         // Log
                                         $match = array();
                                         preg_match_all($search, $modification[$key], $match, PREG_OFFSET_CAPTURE);
                                         // Remove part of the the result if a limit is set.
                                         if ($limit > 0) {
                                             $match[0] = array_slice($match[0], 0, $limit);
                                         }
                                         if ($match[0]) {
                                             $log[] = 'REGEX: ' . $search;
                                             for ($i = 0; $i < count($match[0]); $i++) {
                                                 $log[] = 'LINE: ' . (substr_count(substr($modification[$key], 0, $match[0][$i][1]), "\n") + 1);
                                             }
                                             $status = true;
                                         }
                                         // Make the modification
                                         $modification[$key] = preg_replace($search, $replace, $modification[$key], $limit);
                                     }
                                     if (!$status) {
                                         // Log
                                         $log[] = 'NOT FOUND!';
                                         // Skip current operation
                                         if ($error == 'skip') {
                                             break;
                                         }
                                         // Abort applying this modification completely.
                                         if ($error == 'abort') {
                                             $modification = $recovery;
                                             // Log
                                             $log[] = 'ABORTING!';
                                             break 5;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             // Log
             $log[] = '----------------------------------------------------------------';
         }
         // Log
         $ocmod = new \Core\Log('cmsmods.log');
         $ocmod->write(implode("\n", $log));
         // Write all modification files
         foreach ($modification as $key => $value) {
             // Only create a file if there are changes
             if ($original[$key] != $value) {
                 $path = '';
                 $directories = explode('/', dirname($key));
                 foreach ($directories as $directory) {
                     $path = $path . '/' . $directory;
                     if (!is_dir(DIR_MODIFICATION . $path)) {
                         @mkdir(DIR_MODIFICATION . $path, 0777);
                     }
                 }
                 $handle = fopen(DIR_MODIFICATION . $key, 'w');
                 fwrite($handle, $value);
                 fclose($handle);
             }
         }
         // Just after modifications are complete, if config settings say maintenance mode is on AND is different org state, then turn it back on
         if ($org_maintenance != $this->config->get('config_maintenance')) {
             $this->model_setting_setting->editSettingValue('config', 'config_maintenance', false);
         }
         $this->session->data['success'] = $this->language->get('text_success');
         $url = '';
         if (isset($this->request->get['sort'])) {
             $url .= '&sort=' . $this->request->get['sort'];
         }
         if (isset($this->request->get['order'])) {
             $url .= '&order=' . $this->request->get['order'];
         }
         if (isset($this->request->get['page'])) {
             $url .= '&page=' . $this->request->get['page'];
         }
         $this->redirect($this->url->link('extension/modification', 'token=' . $this->session->data['token'] . $url, 'SSL'));
     }
     $this->getList();
 }