<?php /* * Describe what it does to show you're not that dumb! * **/ /** @var $ctrl \bbn\mvc\controller */ if (isset($ctrl->arguments[0])) { $ctrl->set_mode("image"); $is_tmp = false; if ($ctrl->arguments[0] === 'tmp' && \bbn\str::is_integer($ctrl->arguments[1])) { array_shift($ctrl->arguments); $is_tmp = 1; $path = BBN_USER_PATH . 'tmp/' . array_shift($ctrl->arguments) . '/'; } if (isset($path)) { $file = $path . implode("/", $ctrl->arguments); $ctrl->obj->img = $file; //die(); //die(var_dump($file, is_file($file))); //die(var_dump($ctrl->mvc)); } }
foreach (json_decode($model->data['languages'], 1) as $l) { array_push($languages, $l['path']); } foreach (json_decode($model->data['themes'], 1) as $l) { array_push($themes, $l['path']); } $content = ['files' => !empty($model->data['files']) ? json_decode($model->data['files'], 1) : [], 'lang' => $languages, 'theme_files' => $themes]; if (!empty($model->data['latest'])) { $internal = $db->get_one("\n SELECT MAX(internal)\n FROM versions\n WHERE library = ?", $model->data['name']); if (is_null($internal)) { $internal = 0; } else { $internal++; } } else { if (isset($model->data['internal']) && \bbn\str::is_integer($model->data['internal'])) { $internal = $model->data['internal']; if ($db->select_one('versions', 'internal', ['internal' => $internal])) { $db->query("\n UPDATE versions SET internal = internal+1\n WHERE internal >= ?\n AND library = ?", $internal, $model->data['name']); } } } if ($db->insert('versions', ['name' => $model->data['vname'], 'library' => $model->data['name'], 'content' => json_encode($content), 'date_added' => date('Y-m-d H:i:s', time()), 'internal' => $internal])) { $id = $db->last_id(); if (!empty($model->data['dependencies'])) { foreach ($model->data['dependencies'] as $dep) { if ($db->select_one('dependencies', 'order', ['order' => $dep['order']])) { $db->query(' UPDATE "dependencies" SET "order" = "order"+1 WHERE "order" >= ? AND "id_slave" = ?', $dep['order'], $id);
**/ /** @var $ctrl \bbn\mvc\controller */ if (!isset($ctrl->arguments[0])) { $id_perm = $ctrl->inc->perm->get_option_root(); $perm =& $ctrl->inc->perm; $ctrl->add_data(['cat' => $id_perm, 'lng' => ['refresh_all_permissions' => _("Refresh all permissions"), 'confirm_update_permissions' => _("Are you sure you wanna update all permissions? It might take a while..."), 'total_updated' => _("A total of {0} permissions has been added"), 'no_permission_updated' => _("No permission has been added")], 'tree' => $ctrl->inc->options->map(function ($r) use($perm) { if (empty($r['icon'])) { if (substr($r['code'], -1) === '/') { $r['icon'] = 'fa fa-folder'; } else { $r['icon'] = 'fa fa-file'; } } if ($perm->has($r['id'])) { $o = ['id' => $r['id'], 'text' => $r['text'], 'code' => $r['code'], 'icon' => $r['icon'], 'is_parent' => empty($r['num_children']) ? false : true]; if ($o['is_parent']) { $o['items'] = $r['items']; } return $o; } }, $id_perm, true)]); $ctrl->combo(_("Permissions"), $ctrl->data); } else { if (\bbn\str::is_integer($ctrl->arguments[0])) { $ctrl->add_data(['id' => $ctrl->arguments[0], 'full' => isset($ctrl->post['full']) ? $ctrl->post['full'] : false, 'routes' => $ctrl->get_routes()]); $ctrl->obj->data = $ctrl->get_model(); } else { $ctrl->add_data(['action' => $ctrl->arguments[0]], $ctrl->post); $ctrl->obj->data = $ctrl->get_model(); } }
<?php /* * Describe what it does to show you're not that dumb! * **/ /** @var $ctrl \bbn\mvc\controller */ if (isset($ctrl->files['file'], $ctrl->arguments[0]) && \bbn\str::is_integer($ctrl->arguments[0])) { $f =& $ctrl->files['file']; $path = BBN_USER_PATH . 'tmp/' . $ctrl->arguments[0]; $new = \bbn\str::encode_filename($f['name'], \bbn\str::file_ext($f['name'])); $file = $path . '/' . $new; if (\bbn\file\dir::create_path($path) && move_uploaded_file($f['tmp_name'], $file)) { $tmp = \bbn\str::file_ext($new, 1); $fname = $tmp[0]; $ext = $tmp[1]; $ctrl->obj->success = 1; $archives = ['zip', 'rar', 'tar', 'gzip', 'iso']; $images = ['jpg', 'gif', 'jpeg', 'png', 'svg']; $files = [basename($file)]; if (in_array($ext, $archives)) { $archive = \wapmorgan\UnifiedArchive\UnifiedArchive::open($file); \bbn\file\dir::create_path($path . '/' . $fname); if ($num = $archive->extractNode($path . '/' . $fname, '/')) { $tmp = getcwd(); chdir($path); $all = \bbn\file\dir::scan($fname, 'file'); foreach ($all as $a) { array_push($files, $a); } chdir($tmp);
return substr($a, -3) === 'log'; }); if (($log_file = ini_get('error_log')) && strpos($log_file, BBN_DATA_PATH . 'logs') === false) { array_unshift($log_files, $log_file); } $res = []; foreach ($log_files as $lf) { $res[basename($lf)] = $lf; } ksort($res); if (isset($model->data['log'])) { $output = []; if ($model->data['clear']) { file_put_contents($res[$model->data['log']], ''); } else { $file = escapeshellarg($res[$model->data['log']]); // for the security concious (should be everyone!) $num_lines = isset($model->data['num_lines']) && \bbn\str::is_integer($model->data['num_lines']) && $model->data['num_lines'] > 0 && $model->data['num_lines'] <= 1000 ? $model->data['num_lines'] : 100; $line = "tail -n {$num_lines} {$file}"; exec($line, $output); $res = []; $pid = 0; } return ['content' => implode("\n", $output)]; } else { $data = ['logs' => []]; foreach ($res as $k => $v) { array_push($data['logs'], ['text' => $k]); } return $data; }
<?php /* @var $ctrl \bbn\mvc */ if (isset($ctrl->post['log'])) { $ctrl->data['log'] = $ctrl->post['log']; $ctrl->data['clear'] = !empty($ctrl->post['clear']); $ctrl->data['num_lines'] = isset($ctrl->post['num_lines']) && \bbn\str::is_integer($ctrl->post['num_lines']) ? $ctrl->post['num_lines'] : 100; $ctrl->obj = $ctrl->get_object_model(); } else { echo $ctrl->combo("Log files", ['root' => $ctrl->say_dir() . '/']); }
$ln = 'bbn-ide-error_log-'; $res = []; $lines = file($file); foreach ($lines as $o) { preg_match_all('/\\[([^\\]]+)\\]/', $o, $r); if (isset($r[1][0])) { if ($pos_mill = strpos($r[1][0], '.')) { $r[1][0] = substr($r[1][0], 0, $pos_mill) . substr($r[1][0], strpos($r[1][0], ' ', $pos_mill)); } if (strpos($o, ' PHP ') && ($d = date_parse($r[1][0]))) { $php = strpos($o, ' PHP ') + 5; $coma = strrpos($o, ','); $reste = trim(substr($o, $php, $coma - $php)); $time = mktime($d['hour'], $d['minute'], $d['second'], $d['month'], $d['day'], $d['year']); // Trace if (\bbn\str::is_integer(substr($reste, 0, 1))) { if (isset($cur)) { $idx = intval(trim(substr($reste, 0, strpos($reste, '.')))); if ($idx === 1) { $res[$cur]['trace'] = []; } $res[$cur]['trace'][$idx - 1] = ['index' => $idx, 'text' => trim(substr($reste, strpos($reste, '.') + 1))]; } } else { if (strpos($reste, 'Stack trace:') === 0) { } else { if (isset($res[$reste])) { $res[$reste]['count']++; $res[$reste]['last_date'] = date('Y-m-d H:i:s', $time); } else { $cur = $reste;