public function actionUpdate($id) { $model = $this->loadModel($id); $model->scenario = 'update'; $this->performAjaxValidation($model); if (isset($_POST[$this->modelName])) { $model->attributes = $_POST[$this->modelName]; if (isset($_POST[$this->modelName]['password']) && $_POST[$this->modelName]['password']) { if (demo()) { Yii::app()->user->setFlash('error', tc('Sorry, this action is not allowed on the demo server.')); unset($model->password, $model->salt); $this->redirect(array('update', 'id' => $model->id)); } else { $model->scenario = 'changePass'; } } else { unset($model->password, $model->salt); } if ($model->validate()) { if ($model->scenario == 'changePass') { $model->setPassword(); } if ($model->save(false)) { $this->redirect(array('view', 'id' => $model->id)); } } } $this->render('update', array('model' => $model)); }
public function actionIndex() { $model = $this->loadModel(Yii::app()->user->id); if (isset($_POST[$this->modelName])) { $model->scenario = 'changeAdminPass'; $model->old_password = $_POST[$this->modelName]['old_password']; if ($model->validatePassword($model->old_password)) { if (demo()) { Yii::app()->user->setFlash('error', tc('Sorry, this action is not allowed on the demo server.')); $this->redirect(array('index')); } $model->attributes = $_POST[$this->modelName]; if ($model->validate()) { $model->setPassword(); $model->save(false); Yii::app()->user->setFlash('success', Yii::t('module_usercpanel', 'Your password successfully changed.')); $this->redirect(array('index')); } } else { Yii::app()->user->setFlash('error', Yii::t('module_adminpass', 'Wrong admin password! Try again.')); $this->redirect(array('index')); } } $this->render('index', array('model' => $model)); }
function demo($a) { if ($a > 1) { $r = $a * demo($a - 1); } else { $r = $a; } return $r; }
public function actionSetDefault() { if (demo()) { throw new CException(tc('Sorry, this action is not allowed on the demo server.')); } $id = (int) Yii::app()->request->getPost('id'); $model = Themes::model()->findByPk($id); $model->setDefault(); // delete assets js cache ConfigurationModel::clearGenerateJSAssets(); Yii::app()->end(); }
public static function getAdminValue($model) { if ($model->type == 'bool') { $url = Yii::app()->controller->createUrl("activate", array('id' => $model->id, 'action' => $model->value == 1 ? 'deactivate' : 'activate')); $img = CHtml::image(Yii::app()->request->baseUrl . '/images/' . ($model->value ? '' : 'in') . 'active.png', Yii::t('common', $model->value ? 'Inactive' : 'Active'), array('title' => Yii::t('common', $model->value ? 'Deactivate' : 'Activate'))); $options = array('onclick' => 'ajaxSetStatus(this, "socialauth-table"); return false;'); return '<div align="left">' . CHtml::link($img, $url, $options) . '</div>'; } else { if (demo()) { return tc('Hidden in demo mode'); } else { return utf8_substr($model->value, 0, 55); } } }
public function actionActivate() { if (demo()) { echo 'ok'; Yii::app()->end(); } $id = intval(Yii::app()->request->getQuery('id', 0)); if ($id) { $action = Yii::app()->request->getQuery('action'); $model = $this->loadModel($id); if ($model) { $model->value = $action == 'activate' ? 1 : 0; $model->update(array('value')); } } if (!Yii::app()->request->isAjaxRequest) { $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); } }
public static function getDefaultTheme() { if (!isset(self::$_defaultTheme)) { $sql = "SELECT title, color_theme, bg_image FROM {{themes}} WHERE is_default=1"; $data = Yii::app()->db->createCommand($sql)->queryRow(); if (demo()) { if (isset($_GET['theme']) && array_key_exists($_GET['theme'], Themes::getColorThemesList())) { self::$_params['color_theme'] = $_GET['theme']; } else { self::$_params['color_theme'] = isset(Yii::app()->request->cookies['theme']) ? (string) Yii::app()->request->cookies['theme'] : $data['color_theme']; } } else { self::$_params['color_theme'] = $data['color_theme']; } if (self::$_params['color_theme'] == 'color-green.css') { self::$_params['bg_image'] = $data['bg_image'] ? $data['bg_image'] : 'demo-cloud.jpg'; } else { self::$_params['bg_image'] = $data['bg_image']; } self::$_defaultTheme = $data['title']; } return self::$_defaultTheme; }
<?php $this->breadcrumbs = array(tt('Manage themes')); $this->adminTitle = tt('Manage themes'); $this->widget('CustomGridView', array('id' => 'themes-grid', 'dataProvider' => $model->search(), 'afterAjaxUpdate' => 'function(){$("a[rel=\'tooltip\']").tooltip(); $("div.tooltip-arrow").remove(); $("div.tooltip-inner").remove();}', 'columns' => array(array('name' => 'is_default', 'type' => 'raw', 'value' => '$data->getIsDefaultHtml()', 'filter' => false, 'sortable' => false, 'htmlOptions' => array('class' => 'width100 center')), array('name' => 'title', 'filter' => false, 'sortable' => false), array('name' => 'color_theme', 'filter' => false, 'sortable' => false), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{update}', 'buttons' => array('update' => array('visible' => '$data->title == "atlas"')))))); Yii::app()->clientScript->registerScript('setDefThemes', "\n var demo = " . (demo() ? 1 : 0) . ";\n\tfunction changeDefault(id){\n\t if(demo){\n\t alert(" . CJavaScript::encode(tc('Sorry, this action is not allowed on the demo server.')) . ");\n\t \$('#currency-grid').yiiGridView.update('themes-grid');\n\t return false;\n\t }\n\n\t\t\$.ajax({\n\t\t\ttype: 'POST',\n\t\t\turl: '" . Yii::app()->request->baseUrl . "/themes/backend/main/setDefault',\n\t\t\tdata: { 'id' : id },\n\t\t\tsuccess: function(msg){\n\t\t\t\t\$('#currency-grid').yiiGridView.update('themes-grid');\n\t\t\t}\n\t\t});\n\t\treturn;\n\t}", CClientScript::POS_END);
function writeconfigtblsd() { //echo "Возникла проблема при реконфигурации аккаунта<br>"; exit; //надобно как то автоопрос чтоли сделать всех переменных //автоматизировать немного 1- загрузку в html,2- взятие на редактирование 3- сохранение echo "<bb><h2>Данные записаны.</bb><br></h2>"; global $codekey, $LOGINUSER, $PASSWORDUSER, $HASHUSER, $OSTYPE, $go, $gmlimitcfg, $ADMM, $ADM; // echo "ADMM==".$ADMM ;//тест //if ($gmlimitcfg===1){$ADMM=$ADM;}// тк добавили gmlimitcfg поэтому добавим и этот,хотя изначально gmlim вооб.тут не юзался for ($a = 0; $a < 200; $a++) { global ${"pradm" . $a}; } //новое чтение global //кажется сюда цикл влезет @($gmdata = csvopen("_conf/gmdata.cfg", "r", 1)); $data = readfullcsv($gmdata, "new"); $gmheader = $data[0]; $gmplevel = $data[1]; $prauth = $data[2]; $prauthcnt = $data[3]; // тупо счетчик строк - дата 3 if ($go == cmsg("A_CNEW")) { if ($codekey == 7) { demo(); } if ($codekey == 9) { demo(); } // if ($codekey==8) demo (); temp for test enabling create users // ADMM - пользователь, настроки которого редактируют. а пользователь, которые это делает - , if ($codekey == 4) { needupgrade(); } $ADMM = $prauthcnt - 1; echo "Creating new one...<br>"; } // ага нихрена он никого не создает! $edit = 1; echo "DEBUG Состояние gmlimitcfg={$gmlimitcfg}<br> "; if (!$prauth[$ADM][42] and $prauth[$ADMM][59] and $PASSWORDUSER == true) { $PASSWORDUSER = FALSE; LPRINT("DISPASSCH"); } // здесь у нас указывается что пользователь хочет изменить пароль. не даём ему это сделать если стоит запрет на смену пароля. if ($gmlimitcfg == 0) { $prauth[$ADMM][0] = stripslashes($LOGINUSER); } echo "<form action=\"admin.php\" method=\"POST\">"; if ($PASSWORDUSER == true) { $prauth[$ADMM][1] = hashgen($PASSWORDUSER); //здесь у нас надо отправить новый кук чтобы пользователь мог не перезаходить после смены пароля. $dbsa = a(base64_encode($prauth[$ADMM][0] . "¦" . $PASSWORDUSER)); if ($ADM == $ADMM) { hidekey("dbsaa", $dbsa); } if ($ADM !== $ADMM) { echo "...<br>"; } } else { $prauth[$ADMM][1] = stripslashes($HASHUSER); } submitkey("dalee", "CONT"); echo "</form>"; // prevents fake change password // Незагруженные переменные остнутся неизмененными! //..$counterusercolumns=count ($prauth[$ADMM]);// представьте себе так надо! $counterusercolumns = count($gmheader); // а иак лучше создаются новые пользователи в установке по дефолту. а то пишется херь всякая в конец пред юзера. //..if ($counterusercolumns>100) $counterusercolumns=100; // echo "DEBUG Your cnt= $counterusercolumns ADMM=$ADMM ADM=$ADM<br>"; // echo " prauth[adm=$ADM][60]=".$prauth[$ADM][60]." prauth[admm=$ADMM]=".$prauth[$ADMM][60]."<br>"; if (!$prauth[$ADM][42] and $prauth[$ADMM][60]) { LPRINT("DISPROFCH"); exit; } for ($a = 2; $a < $counterusercolumns - 1; $a++) { //попробуем на 1 меньше писать может поможет если там \n \r\n передаются по ум. // счас работает все проверить построе на тесте. if ($gmlimitcfg === 1) { if ($a > 1 and $a < 16 or $a > 32 and $a < 37 or $a == 38 or $a > 41 and $a < 46 or $a > 49 and $a < 55 or $a == 48) { continue; } } // echo "isset pradm$a : ".isset(${"pradm".$a})."<br>"; //if ($gmlimitcfg===1)if (isset(${"pradm".$a})===false) continue; //42(су) 59( пароль) 60(профиль) должны точно пропускаться, если нет сделать это $prauth[$ADMM][$a] = stripslashes(${"pradm" . $a}); //// не вышло просто оставить непоказанное в покое да и нельзя так, вдруг пришлют через GET переменную // дописывать сюда все настройки требующие админа или суперюзверя } //PARTIAL EXCHANGER запись конфигов проверено if ($go == cmsg("A_CNEW")) { if ($OSTYPE == "LINUX") { $prauth[$ADMM][$counterusercolumns] .= "\n"; } } // добавляет забытый в перевод строки только для создания юзера. //print_r($prauth); //..if (($prauth[$ADM][0])==($prauth[$ADMM][0])) { echo "UserName (Login) cannot be identical<br>"; $edit=0;return;}; //это ещё от чего защита? //тоже похож на цикл //..$bugwithemptyfieldsfixlinux=1; @($tempdescr = csvopen("_conf/gmdata.cfg", "w", 1)); //global $testlinuxlinefeed;$testlinuxlinefeed=1; неправильно работает - выполняется и перед и после добавления юзера что недопустимо echo "--------------------------------------------"; writefullcsv($tempdescr, $gmheader, $gmplevel, $prauth); $edit = 0; exit; }
function importexporttbl() { global $prdbdata; global $prauth; global $ADM; global $pr; global $sd; global $tbl; global $write; //if (($write==cmsg("A_IMPEXP"))OR($write==cmsg("A_IE_DEST"))OR($write==cmsg("A_IE_SRC"))OR($write==cmsg("A_IE_START"))) { echo "";} else { return;} // недоперенесено куда надо. global $sd17; global $addmode; global $send; global $views; global $tbl1; global $tbl2; global $totalbas; global $filbas, $codekey, $usecomma2x; if ($codekey == 7) { demo(); } if ($prauth[$ADM][10] < 2) { lprint("ACCDEN"); exit; } if ($prauth[$ADM][2] == false) { lprint("ACCDEN"); exit; } //не разрешает администрировать не имея этого права - защита от альтернативного входа ($prauth[$ADM][10]<2) if ($prauth[$ADM][16] == 0) { echo cmsg(CONV_NOTE) . "<br>"; } ?> <form action=w.php method=post><?php hidekey("vID", $vID); hidekey("colfind", $colfind); hidekey("tbl1", $tbl1); hidekey("tbl2", $tbl2); hidekey("ietbl", 1); // colfind - пока не подключен будет развертыватся for ($a = 0; $prdbdata[$a] == true; $a++) { $k = count($prdbdata); $l = $k + 1; $filbas = $prdbdata[$a][0]; $bas[$a] = $prdbdata[$a][1]; } // $k= count($db) - вычисление кол-ва столбцов // c7 0 - select c7 1 - start $pr16 = $pr[16]; echo cmsg("A_CONV_SRC") . "<select name = tbl1 size = " . $pr[2] . ">"; for ($a = 0; $a < $totalbas; $a++) { echo "<option value={$a} " . ("selected" and $a == $tbl1) . ">" . $bas[$a] . "</option>"; // if ($a!==$tbl) echo "<option value=$a >".$bas[$a]."</option>"; // if ($a===$tbl) {echo "<option value=$a ".(("selected") and ($a==$tbl)).">".$bas[$a]."</option>";} } //PART OF ID tbl $filbas = $prdbdata[$tbl1][0]; $namebas = $prdbdata[$tbl1][1]; $needscr = $prdbdata[$tbl1][2]; $scrdir = $filbas . "scr"; $formatscr = $prdbdata[$tbl1][3]; $category = $prdbdata[$tbl1][4]; $tablemysqlselect = $prdbdata[$tbl1][5]; if ($tablemysqlselect === "") { $tablemysqlselect = 0; } //reset to default $hostmysqlselect = $prdbdata[$tbl1][6]; if ($hostmysqlselect === "") { $hostmysqlselect = 0; } //reset to default $categorymode = $prdbdata[$tbl1][7]; $scrcolumn = $prdbdata[$tbl1][8]; $tblmysqlselect = $prdbdata[$tbl1][9]; $md1column = $prdbdata[$tbl1][10]; if ($md1column === "") { $md1column = 1; } //reset to default $md2column = $prdbdata[$tbl1][11]; if ($md2column === "") { $md2column = 0; } //reset to default $dbtype = $prdbdata[$tbl1][12]; $writeright = $prdbdata[$tbl1][13]; $needrights = $prdbdata[$tbl1][14]; $virtualid = $prdbdata[$tbl1][15]; $reserved16 = $prdbdata[$tbl1][16]; $reserved17 = $prdbdata[$tbl1][17]; //найден код требуемой базы $filbas = $prdbdata[$tbl1][0]; if (isset($colfind)) { $colfind = $md2column; } submitkey("write", "A_CONV_SRC_CHG"); ?> </form> <form action=w.php method=post> <?php hidekey("vID", $vID); hidekey("colfind", $colfind); hidekey("tbl1", $tbl1); hidekey("tbl2", $tbl2); hidekey("ietbl", 1); // colfind - пока не подключен будет развертыватся for ($a = 0; $prdbdata[$a] == true; $a++) { $k = count($prdbdata); $l = $k + 1; $filbas = $prdbdata[$a][0]; $bas[$a] = $prdbdata[$a][1]; } // $k= count($db) - вычисление кол-ва столбцов// c7 0 - select c7 1 - start $pr16 = $pr[16]; echo cmsg("A_CONV_DEST") . " <select name = tbl2 size = " . $pr[2] . ">"; for ($a = 0; $a < $totalbas; $a++) { echo "<option value={$a} " . ("selected" and $a == $tbl2) . ">" . $bas[$a] . "</option>"; // if ($a!==$tbl) echo "<option value=$a >".$bas[$a]."</option>"; // if ($a===$tbl) {echo "<option value=$a ".(("selected") and ($a==$tbl)).">".$bas[$a]."</option>";} } //PART OF ID tbl $filbas2 = $prdbdata[$tbl2][0]; $namebas2 = $prdbdata[$tbl2][1]; $needscr2 = $prdbdata[$tbl2][2]; $scrdir2 = $filbas2 . "scr"; $formatscr2 = $prdbdata[$tbl2][3]; $category2 = $prdbdata[$tbl2][4]; $tablemysqlselect2 = $prdbdata[$tbl2][5]; if ($tablemysqlselect2 === "") { $tablemysqlselect = 0; } //reset to default $hostmysqlselect2 = $prdbdata[$tbl2][6]; if ($hostmysqlselect2 === "") { $hostmysqlselect = 0; } //reset to default $categorypr4 = $prdbdata[$tbl2][7]; $scrcolumn2 = $prdbdata[$tbl2][8]; $tblmysqlselect2 = $prdbdata[$tbl2][9]; $md1column2 = $prdbdata[$tbl2][10]; if ($md1column2 === "") { $md1column2 = 1; } //reset to default $md2column2 = $prdbdata[$tbl2][11]; if ($md2column2 === "") { $md2column2 = 0; } //reset to default $dbtype2 = $prdbdata[$tbl2][12]; $writeright2 = $prdbdata[$tbl2][13]; $needrights2 = $prdbdata[$tbl2][14]; $virtualid2 = $prdbdata[$tbl2][15]; $reserved162 = $prdbdata[$tbl2][16]; $reserved172 = $prdbdata[$tbl2][17]; //найден код требуемой базы // procs from standart csv<-->sql converter $separator = stripslashes($separator); $separator = stripcslashes($separator); if (!$separator) { $separator = "¦"; } // separator s changed - work if ($usecomma2x) { $separator = ";"; echo "Forced using ; as separator , plevel writing declined.<br>"; } $version = "dbs ed"; $path_to_temp = ""; function char2array($string) { $len = strlen($string); for ($j = 0; $j < $len; $j++) { $char[$j] = substr($string, $j, 1); } return $char; } function sqlify_line($line, $splitseparator, $separator, $ncols) { $line = chop($line); $line_chunks = split($splitseparator, $line); if ($ncols != sizeof($line_chunks)) { print "<br># ошибка, несоответствие колонок и данных<br>"; } for ($i = 0; $i < count($line_chunks); $i++) { $s = trim($line_chunks[$i]); if ($s[0] == $s[strlen($s) - 1] && ($s[0] == "'" || $s[0] == '"')) { $s = substr($s, 1, strlen($s) - 2); } $line_chunks[$i] = addslashes($s); //rejected <font color="#000BA"> </red> } for ($i = 0; $i < count($line_chunks); $i++) { if ($i == count($line_chunks) - 1) { $comma = ""; } else { $comma = ", "; } // $separator. $final_line .= "'{$line_chunks[$i]}'{$comma}"; } return $final_line; } function field_fix($line) { $line = eregi_replace("[[:space:]]+", "", $line); $letterarray = char2array($line); for ($i = 0; $i < count($letterarray); $i++) { if (eregi("^[_a-z0-9-]+", $letterarray[$i])) { $fieldname .= $letterarray[$i]; } } return $fieldname; } //end procs standart csv<-->sql converter if (isset($colfind2)) { $colfind2 = $md2column2; } submitkey("write", "A_CONV_DEST_CHG"); ?> </form> <?php echo cmsg("A_CONV_TOEXEC") . ":<br>" . cmsg("A_CONV_SRC") . $namebas . " (" . $tbl1 . ") -->" . cmsg("A_CONV_DEST") . " " . $namebas2 . " (" . $tbl2 . ")<br>"; if ($dbtype == $dbtype2) { echo "<red>" . cmsg("A_ONESTRUCT") . "</red><br>"; } if ($dbtype == "fdb" and $dbtype2 == "mysql") { echo " CSV->->SQL.<br>"; } if ($dbtype == "mysql" and $dbtype2 == "fdb") { echo " SQL->->CSV.<br>"; } if ($write === cmsg("A_CONV_START")) { if ($prauth[$ADM][10] < 2) { lprint("ACCDEN"); exit; } set_time_limit(0); //процесс // 2235 to 22355 serega 3377 removed to 2235 if ($dbtype == $dbtype2) { lprint("A_ONESTRUCT"); exit; } //start decoding SCP to CSV if ($dbtype == 2 and $dbtype2 == "fdb") { $filbas = "_data/" . $prdbdata[$tbl1][0]; echo "<font color=red>Работа над данным режимом не закончена.</red><br>" . $filbas; iniparse($filbas, 21); } //end of decoding SCP to CSV // CSV to SQL if ($dbtype == "fdb" and $dbtype2 == "mysql") { $filbas = $prdbdata[$tbl1][0]; // где то ВСЕГДА теряет $filbas пришлось так сделать $csv_file_name = $filbas; $csv_file = $filbas; //reconfig if (!$filbas) { echo "Filebas = {$filbas} !!!!!!"; exit; } $db_host = $hostmysqlselect2; $user_nm = $sd[14]; //хм а почему Access denied for user '1'@'localhost' (using password: YES) in /media/D/Work/KERNEL/dj/site/dbscore.lib on line 1172 $password = $sd[17]; $DATABASE = $tblmysqlselect2; echo "DEBUG DATABASE dest={$DATABASE}"; $table = $tablemysqlselect2; echo "DEBUG Table dest={$table}"; // echo "filbas=$filbas ; db_host=$db_host ; user_nm=$user_nm ; passwor=$password db=$DATABASE tab=$table";данные идут верные //echo "!DATABASE ".$DATABASE."!table".$table."!pas".$password; $separator = '¦'; //changed if ($usecomma2x) { $separator = ";"; echo "Forced using ; as separator , plevel writing declined.<br>"; } $splitseparator = $separator; $table_nm = split("\\.", $csv_file_name); $table_name = strtolower($table_nm[0]); // ne ustr $table_name = $tablemysqlselect2; $out_header = "# source: {$tblmysqlselect} -- {$tablemysqlselect}<br># dest : {$tblmysqlselect2} -- {$tablemysqlselect2} "; if ($send) { header("Content-disposition: filename={$table}.csv"); header("Content-type: application/octetstream"); header("Pragma: no-cache"); header("Expires: 0"); $client = getenv("HTTP_USER_AGENT"); if (ereg('[^(]*\\((.*)\\)[^)]*', $client, $regs)) { $os = $regs[1]; if (eregi("Win", $os)) { $crlf = "\r\n"; } } } if ($csv_file != "none") { $location = $path_to_temp . mktime() . ".csv"; copy("_data/" . $csv_file, $location) or die("Failed to copy"); //unlink($csv_file); $file_content = file($location); $fields = explode($splitseparator, $file_content[0]); for ($i = 0; $i < count($fields); $i++) { $fields[$i] = field_fix($fields[$i]); } $table_create = ""; //added drop db // $table_create .= "DROP DATABASE IF EXISTS `".$DATABASE."` ;\n"; //$connect = dbs_connect ($prdbdata[$tbl2][6], $prdbdata[$tbl2][13] , $sd[17],$dbtype2); // fail? $sd[14] if (!$dbtype2) { $dbtype2 = "mysql"; } echo "Connected: " . $prdbdata[$tbl2][6] . " by user {$sd['14']} <br>"; $connect = dbs_connect($prdbdata[$tbl2][6], $sd[14], $sd[17], $dbtype2); // fail? $sd[14] $query = ""; if ($addmode) { $query = "CREATE DATABASE `" . $DATABASE . "` ;\n"; dbs_query($query, $connect, $dbtype2); $query = "DROP TABLE IF EXISTS `{$table_name}` ;\n"; dbs_query($query, $connect, $dbtype2); $query = ""; } $table_create .= "CREATE TABLE `{$table_name}` (\n"; if ($unique) { $table_create .= " id smallint(6) DEFAULT '0' not null auto_increment,\n"; } $numfields = count($fields); for ($i = 0; $i < $numfields; $i++) { if ($i == $numfields - 1) { $comma = ""; } else { $comma = ","; } //$comma = $separator; $table_create .= " `{$fields[$i]}` CHAR(225) not null{$comma}\n"; // text? $field_names .= "{$fields[$i]}{$comma} "; } if ($unique) { $table_create .= " PRIMARY KEY (id),\n UNIQUE ID (id)\n"; } $table_create .= ")ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED ;\n\n"; //test added engine to ; without ; if (!$addmode) { $table_create = ""; } // addmode if (!$send) { echo "</center><p align=\"left\"><pre>"; } if ($views) { echo $out_header; } // if ($views) { echo $table_create; }; $query = $table_create; if ($unique) { $unique_field = "id, "; } for ($i = 1; $i < count($file_content); $i++) { $partquery .= "\n INSERT INTO {$table_name} ({$unique_field}" . trim($field_names) . ") VALUES ("; if ($views) { echo ""; } if ($unique_field) { $uniqq = "'{$i}', "; } $partquery .= $uniqq . sqlify_line($file_content[$i], $splitseparator, $separator, $numfields) . "); \n"; if ($views) { echo ""; } } $query .= $partquery; // окончательный запрос тут! //if ($views) { echo $partquery;} // simple execute //mysql_select_db ($prdbdata[$tbl2][9], $connect); dbs_selectdb($prdbdata[$tbl2][9], $connect, $dbtype2); // executesql ($query,$connect,"",1); bad use only this command $find; $ax = array(); // почему то вариант с разделением на строки куда лучше работает $ax = explode(";", $query); for ($ab = 0; $ab < count($ax) - 1; $ab++) { if ($views) { echo "<ii><bb>to execute ::: <br>" . $ax[$ab] . ";<br>--- query {$ab} ---</ii></bb></bb><br>"; } $find = $find + executesql($ax[$ab] . ";", $connect, "", 2); if ($views) { echo "<br>--------<br>"; } } // echo "6=".$prdbdata[$tbl2][6]." 13=".$prdbdata[$tbl2][13]." 17=".$sd[17]." selected db=".$prdbdata[$tbl2][9]."<br>"; // $result = dbs_query ($query,$connect,$dbtype);($query, $connect); // if ($result<1) { echo " Процедура импорта не удалась. <br>$result<br>"; }; // $myrow =dbs_fetch_row ($a,$dbtype); if (!$send) { echo "</pre><p>"; } } else { echo "Необходим CSV для конверсии"; } echo "Процедура закончена, выполнено {$find} операций."; @unlink($location); exit; } // END CSV TO SQL // SQL TO CSV if ($dbtype == "mysql" and $dbtype2 == "fdb") { // echo "Преобразование SQL в CSV."; $separator = "¦"; if ($usecomma2x) { $separator = ";"; echo "Forced using ; as separator , plevel writing declined.<br>"; } $csv_file_name = $namebas2; //reconfig $db_host = $hostmysqlselect; $user_nm = $sd[14]; $password = $sd[17]; $DATABASE = $tblmysqlselect; $table = $tablemysqlselect; //процедура очень давно не проверялась, ее надо вынести в w.php и как следует проштудировать $connect = dbs_connect($db_host, $user_nm, $password, $dbtype) or die("Unable to connect to SQL server"); @dbs_selectdb($DATABASE, $connect, $dbtype) or die("Unable to select DATABASE"); $sqlcont = "select * from {$table}"; $result = dbs_query($sqlcont, $connect, $dbtype); echo dbserr(); function make_csv_happy($string, $separator) { $string = trim($string); if (eregi("\$separator", $string)) { $string = ereg_replace("\"", "\"\"", $string); $string = "\"" . $string . "\""; } $string = ereg_replace(10, "", $string); $string = ereg_replace("\r", "", $string); return $string; } if (mysql_fieldname($result, 0) == "id") { $first_field = "iD"; } while ($col < mysql_numfields($result)) { $fname = mysql_fieldname($result, $col); if ($col < mysql_numfields($result) - 1) { $comma = $separator; } else { $comma = ""; } if ($col == 0 && $first_field) { $names .= $first_field . $comma; $plevels .= "0" . $comma; } else { $names .= make_csv_happy(strtoupper($fname), $separator) . $comma; $plevels .= "0" . $comma; } $col++; } $final = $names . "\n"; if ($separator == "¦") { echo "Generating dbs 4.x compactible header...<br>"; $final .= $plevels . "\n"; //plevel generic сделать выбор разделителя для сохранения - dbs 4.x 2.x (;) } while ($row < mysql_numrows($result)) { $col = 0; $line = ""; while ($col < mysql_numfields($result)) { $fname = mysql_fieldname($result, $col); if ($col < mysql_numfields($result) - 1) { $comma = $separator; } else { $comma = ""; } $line .= make_csv_happy(mysql_result($result, $row, $fname), $separator) . $comma; $col++; } $final .= $line . "\n"; $row++; } if ($send) { header("Content-disposition: filename={$table}.csv"); header("Content-type: application/octetstream"); header("Pragma: no-cache"); header("Expires: 0"); $client = getenv("HTTP_USER_AGENT"); if (ereg('[^(]*\\((.*)\\)[^)]*', $client, $regs)) { $os = $regs[1]; if (eregi("Win", $os)) { $crlf = "\r\n"; } } } else { echo "</center><p align=\"left\"><pre>"; } // end SQL TO CSV if ($views) { echo $final; } if ($addmode) { @($f = fopen("_data/" . $filbas2, "w")) or die("Не могу подсоединится к базе."); @fwrite($f, $final) or die("Невозможно произвести запись"); @fclose($f); } else { @($f = fopen("_data/" . $filbas2, "a+")) or die("Не могу подсоединится к базе."); @fwrite($f, $final) or die("Невозможно произвести запись"); @fclose($f); } if (!$send) { echo "</pre></p>"; } } echo "Задача поставлена, подождите пожалуйста до окончания процесса и не переключайте страницу.\t"; exit; } ?> <form action=w.php method=post> <?php hidekey("db_host", 0); hidekey("user_nm", 0); hidekey("password", 0); hidekey("DATABASE", 0); hidekey("table", 0); hidekey("tbl1", $tbl1); hidekey("tbl2", $tbl2); hidekey("ietbl", 1); ?> <?php checkbox($views, "views"); echo cmsg("WF_LOG") . "<br>"; checkbox($unique, "unique"); echo cmsg("A_CONV_SETUID") . "<br>"; checkbox($usecomma2x, "usecomma2x"); echo cmsg("USECOMMA2X") . "<br>"; checkbox($addmode, "addmode"); echo cmsg("A_CONV_SETREWR") . "<br>"; hidekey("separator", ";"); submitkey("write", "A_CONV_START"); echo "</form>"; }
public function actionRecover() { $this->layout = '//layouts/inner'; $this->showSearchForm = false; $modelRecover = new RecoverForm(); $key = Yii::app()->request->getParam('key'); if ($key) { $user = User::model()->find('recoverPasswordKey = :key', array(':key' => $key)); if ($user) { $password = $user->temprecoverpassword; // set salt pass $user->setPassword($password); $user->temprecoverpassword = $user->recoverPasswordKey = ''; // set new password in db $user->update(array('password', 'salt', 'temprecoverpassword', 'recoverPasswordKey')); showMessage(tc('Recover password'), tc('Password successfully changed')); } else { throw new CHttpException(403, tc('User not exists')); } } else { if (isset($_POST['ajax']) && $_POST['ajax'] === 'recover-form') { echo CActiveForm::validate($modelRecover); Yii::app()->end(); } if (isset($_POST['RecoverForm'])) { $modelRecover->attributes = $_POST['RecoverForm']; if ($modelRecover->validate()) { $model = User::model()->findByAttributes(array('email' => $modelRecover->email)); if ($model !== null) { if (demo()) { Yii::app()->user->setFlash('notice', tc('Sorry, this action is not allowed on the demo server.')); $this->refresh(); } $tempRecoverPassword = $model->randomString(); $recoverPasswordKey = User::generateActivateKey(); $model->temprecoverpassword = $tempRecoverPassword; $model->recoverPasswordKey = $recoverPasswordKey; $model->update(array('temprecoverpassword', 'recoverPasswordKey')); $model->recoverPasswordLink = Yii::app()->createAbsoluteUrl('/site/recover?key=' . $recoverPasswordKey); // send email $notifier = new Notifier(); $notifier->raiseEvent('onRecoveryPassword', $model, array('user' => $model)); showMessage(tc('Recover password'), tc('recover_pass_temp_send')); } else { showMessage(tc('Recover password'), tc('User does not exist')); } } else { $modelRecover->unsetAttributes(array('verifyCode')); } } } $this->render('recover', array('model' => $modelRecover)); }
public function actionRecover($id) { if (demo()) { HAjax::jsonError(tc('Sorry, this action is not allowed on the demo server.')); } $model = $this->loadModel($id); $tempRecoverPassword = $model->randomString(); $recoverPasswordKey = User::generateActivateKey(); $model->temprecoverpassword = $tempRecoverPassword; $model->recoverPasswordKey = $recoverPasswordKey; $model->update(array('temprecoverpassword', 'recoverPasswordKey')); $model->recoverPasswordLink = Yii::app()->createAbsoluteUrl('/site/recover?key=' . $recoverPasswordKey); // send email $notifier = new Notifier(); $notifier->raiseEvent('onRecoveryPassword', $model, array('user' => $model)); HAjax::jsonOk(Yii::t('module_notifier', 'A new password has been created and sent to {email}.', array('{email}' => $model->email))); }
<?php function demo() { $sum = 0; for ($i = 0; $i < func_num_args(); $i++) { $sum += func_num_args($i); } return $sum; } echo demo(1, 2, 3);
$this->widget('application.modules.fancybox.EFancyBox', array('target' => 'a.fancy', 'config' => array('ajax' => array('data' => "isFancy=true"), 'titlePosition' => 'inside', 'onClosed' => 'js:function(){ var capClick = $("#yw0_button"); if(typeof capClick !== "undefined") capClick.click(); }'))); //var capClick = $("#yw0_button");alert(capClick); if (Yii::app()->user->getState('isAdmin')) { $cs->registerScriptFile($baseUrl . '/js/tooltip/jquery.tipTip.minified.js', CClientScript::POS_HEAD); $cs->registerScript('adminMenuToolTip', ' $(function(){ $(".adminMainNavItem").tipTip({maxWidth: "auto", edgeOffset: 10, delay: 200}); }); ', CClientScript::POS_READY); ?> <div class="admin-menu-small <?php echo demo() ? 'admin-menu-small-demo' : ''; ?> "> <a href="<?php echo $baseUrl; ?> /apartments/backend/main/admin"> <img src="<?php echo $baseUrl; ?> /images/adminmenu/administrator.png" alt="<?php echo Yii::t('common', 'Administration'); ?> " title="<?php echo Yii::t('common', 'Administration'); ?>
function filemgr($cmd, $stroka, $path, $fileforaction, $mask, $pid) { // is a part filemgr- fileio //hidekey ("pid",$pid); global $defaultpath, $protect, $prauth, $ADM, $pr, $sd; //..,$file global $filemgrmod, $daysleft, $codekey, $noscreenmode, $maxmgrs, $OSTYPE, $coreredir; global $multiaction, $scriptpath, $scriptpath; if ($codekey == 4) { needupgrade(); } $file = $fileforaction; global $filscheader, $filscdata, $filscplevel, $filsccount, $languageprofile; if ($filscdata) { if ($filsccount < 1) { echo "Filemgr don't have configured scripts<br>"; } else { echo ""; } //additional keys by filescript.cfg and starting it // 4.3.4добавлено: cmsg не отрабатывает теперь значения начинающиеся с точки // filescript для генерации кнопок исполнения скриптов , заданных администраторами. // dbscore - исправлена ошибка из за которой иногда не вычислялся count //версия конфигов при создании конфигурации теперь берется из ядра //..+++if (!$unauthorized) { //незарегистрированные в любом случае не будут видеть список пользователей ресурса в раздаче. // теперь репозитории работать будут раздельно, проприетарная версия будет отличатся только возможностью подключать специальные модули. //если вы не планируете их заказывать можно использоватьобычную версию. $keylanguage = 1; //if not detected; function detectlanguageidfromheader for ($i = 0; $i < 30; $i++) { //echo "DEBUG ibane $filscheader[$i], languageprofile=$languageprofile<br>"; // echo "iDEBUG (".substr($filscheader[$i],0,6)."==".substr($languageprofile,0,6).") <br>"; if (substr($filscheader[$i], 0, 6) == substr($languageprofile, 0, 6)) { $keylanguage = $i; } // теперь хрен открутится, правда ограничились 6 знаками но пофиг , главное ? не пролезет // if (strpos ($filscheader[$i],$languageprofile)) $keylanguage=$i; // ну вот почему всегда вместо простой функции приходится городить черт знает что. // if ($filscheader[$i]==$languageprofile) $keylanguage=$i; // придется сделать по дебильному - ибо // что за ? - откуда оно взялось блджад!!!! } if ($keylanguage == 29) { $keylanguage = 1; } //if } //..потом добавим проверку на дебильный символ в конце любой строки с утф...вообще бы в парсере как то опознавание глючны файлов сделать if ($filscdata) { //echo "<br>DEBUG Script:$cmd Key=$keylanguage Lang=$languageprofile Selected=".$filscheader[$keylanguage]."<br>"; for ($i = 1; $i < $filsccount; $i++) { // echo "debug $i = $filscdata[$i][$keylanguage] , key=[$keylanguage]<br>"; // plevel checking NOT added!!!! graphical icon NOT released! CFG OPT FUTURE disable all scripts not added //echo " if (".$filscdata[$i][$keylanguage]."==$cmd) <br>"; if ($filscdata[$i][$keylanguage] . $pid === $cmd) { $plevelrequired = $filscdata[$i][3]; $directcommand = $filscdata[$i][2]; if ($debug) { echo "DEBUG Command= {$directcommand} (rightsreq={$plevelrequired})<br>"; } } //path2 redirector? if (strlen($directcommand) < 2) { continue; } $massivedynamics = 0; if ($debug) { echo "DEBUG for (i=1;i<" . strlen($directcommand) . ");{$i}++) {<br>"; } $parsedcommand = $directcommand; //echo "здесь должен быть выход ибо сцуко виснет "; for ($i = 1; $i < strlen($directcommand) + 5; $i++) { $a1 = strpos($directcommand, "%", $i + 0) + 1; if ($a1) { $massivedynamics++; $a2 = strpos($directcommand, "%", 0 + $a1 + 1); //this is first просто это первый , общественный российский. //echo "Try to corrent schetckik -LAAA!!!$i+$a2-1!!!!!!!new $i==$a2!!!!!!!!!!!!!!!!;<br> "; $oldi = $i; //$i=$i+($a2-1); почти верно $i = $a2; //echo "old i=$oldi new i=$i<br>"; if ($oldi > $i) { //echo "Logic error, breaking cycling<br>"; $i = $oldi; $i = 100500; continue; } $firstcoord[$massivedynamics] = $a1; $lastcoord[$massivedynamics] = $a2; $cut = substr($directcommand, $a1, $a2 - $a1); $cutnow[$massivedynamics] = $cut; $cutwprc = substr($directcommand, $a1 - 1, $a2 - $a1 + 2); $cutwpercent[$massivedynamics] = $cutwprc; $md = $massivedynamics; if ($debug) { echo "DEBUG Parse [{$i}] param=:: f=" . $firstcoord[$md] . " ; a2-l=" . $lastcoord[$md] . ";- is cut=" . $cutnow[$md] . " = %%::<blu>" . $cutwpercent[$md] . "</blu> = <grn>" . ${$cut} . "</grn><br>"; } $replaceto = ${$cut}; // fukken shit - admin.php?/ а где все остальное? крап$parsedcommand=str_replace ($parsedcommand, $cutwprc,$replaceto, $count=1); $parsedcommand = str_replace($cutwprc, $replaceto, $parsedcommand, $count = 2); } //al@al-desktop:/media# mencoder //mencoder: relocation error: mencoder: symbol codec_wav_tags, version LIBAVFORMAT_52 not defined in file libavformat.so.52 with link time reference } } if ($debug) { echo "DEBUG Parsed command :: {$parsedcommand}<br>"; } if ($parsedcommand) { echo " executing (if you enable system () of course )...<br>"; $x = system($parsedcommand); //ping $f = fopen("_logs/cmd.log", "w"); if ($f) { fwrite($f, $x); } fclose($f); lprint("5MIN"); if ($debug) { echo "DEBUG {$x}"; } } // ob_flush () ; ////exit; } //echo "ACTION:cmd=$cmd,str ok,path ok,file=$fileforaction,pid=$pid>";// -+++- $path = str_replace("\\\\", "\\", $path); // проверка на вшивость - //$path=str_replace ("/","\\",$path); if ($cmd == cmsg("FMG_CPY_F") and $prauth[$ADM][12]) { global $path2; copy($path . $fileforaction, $path2 . $fileforaction); echo "copy({$path}{$fileforaction},{$path2});"; echo cmsg("CP_END"); } if ($cmd == cmsg("FMG_MOV_F") and $prauth[$ADM][12]) { global $path2; copy($path . $fileforaction, $path2 . $fileforaction); unlink($path . $fileforaction); echo cmsg("MOV_END"); } if ($pr[101]) { if ($cmd == cmsg("FMG_DOWNLOAD") and $prauth[$ADM][9]) { ob_clean(); $err = sendfile($path . "/" . $fileforaction); } } //костыль, ибо на некоторых тупых компьютерах почему то пропадает косая и соответственно файл скачать невозможно. куда она пропадает никто не знает. if ($cmd == cmsg("FMG_DOWNLOAD") and $prauth[$ADM][9]) { ob_clean(); $err = sendfile($path . $fileforaction); } if ($cmd == cmsg("FMG_UPLOAD") and $prauth[$ADM][36] or $cmd == cmsg("FMG_DUMP_UPLOAD") and $prauth[$ADM][36]) { $path = del_endslash($path); // if ($codekey==7) demo (); //<input type="hidden" name="MAX_FILE_SIZE" value="8000000000"> ?> <form enctype="multipart/form-data" action="filemgr.php" method="post"> <input name=userfile type=file class=buttonS> <input type=Submit name=go class=buttonS> <input type = hidden name = path value ="<?php echo $path; ?> "><?php hidekey("pid", $pid); if ($cmd == cmsg("FMG_DUMP_UPLOAD")) { echo "Dump loading.<br>"; } echo "</form>"; hidekey("write", $cmd); exit; //moved from non-function zone } //возможно сюда присобачим кнопку удаления из админки точнее ссылки с нее из w.php :) //if (($cmd==cmsg("FMG_UNSHARE"))and($prauth[$ADM][36])) { echo "not implemented";} if ($cmd == cmsg("FMG_SHARE") and $prauth[$ADM][36] or $coreredir == "SH_UPDD_FL") { $path = del_endslash($path); // -- SHARE STEP 1 -- if ($multiaction) { global $filearrcount; // 0 if ($filearrcount > 0) { exit; } // disables FMG_SHARE for cycle executing; only one action allowed for one or multiaction files. global $fileforaction; $filearrcount = count($fileforaction); } // праздник главное вовремя закончить тогда он ьудет долго помниться как приятное событие // multiaction==1 CFG OPT FUTURE должен добавлять много файлов по идее, однако пока отрабатывается по файлу за раз. if ($multiaction) { echo "Multiaction mode. Selected files={$filearrcount}<br>"; } //..if ($multiaction==1) {global $filearrcount;$stroka.=$filearrcount;}; if (!$multiaction) { $file = $path . "/" . $fileforaction; } if ($multiaction) { for ($a = 0; $a < $filearrcount; $a++) { $file[$a] = $path . "/" . $fileforaction[$a]; echo "File {$a}: {$fileforaction[$a]}<br>;"; } $filelistmassive = base64_encode(implode($fileforaction, "¦")); //список и число объектов надо передать вместе с multiaction } //лучше всего массив с файлами передать в виде одной переменной if ($coreredir == "SH_UPDD_FL") { // maybe if (!$multiaction) { global $destinationfilename, $filesizeinmb; $file = $destinationfilename; } if ($multiaction) { global $destinationfilename, $filesizeinmb; echo "SH_UPDD_FL unimplemented<br>"; echo "I dont know where i take destfilename {$destinationfilename} -- {$file} (file)<bR>"; // $file=$destinationfilename; } } ?> <form enctype="multipart/form-data" action="filemgr.php" method="post"><?php if (!$multiaction) { echo "File: {$file}<br>"; } //Sif (!$multiaction) { echo "File: $file<br>";} lprint(GEN_OPT); echo "<br>"; radio("share", "#GENLNK_UNREG", "GENLNK_UNREG"); echo "<br>"; radio("share", "FMG_UNSHARE", "FMG_UNSHARE"); echo "<br>"; if (!$pr[70]) { radio("share", "GENLNK_REG", "GENLNK_REG"); if ($ADM < 1) { lprint("FILE_UNAUTH_NOTE"); } echo "<br>"; if ($ADM > 0) { radio("share", "GEN_PLVL_USR", "GEN_PLVL_USR"); echo "<select name=groupplevels>"; for ($a = 0; $a < 10; $a++) { echo "<option>" . $a; } echo "</select>"; //if ($ADM<1) lprint ("FILE_UNAUTH_NOTE"); - check unauthorized access echo "<br>"; //незарегистрированные в любом случае не будут видеть список пользователей ресурса в раздаче. radio("share", "GENLNK_USR", "GENLNK_USR"); echo "<br>"; echo "<select name=\"username[]\" multiple size=15>"; for ($a = 1; $a < count($prauth); $a++) { echo "<option>" . $prauth[$a][0] . ""; $cnt++; } echo "</select>"; } echo "<br>"; } lprint(COMM); inputtext("commfile", 15, $commfile); echo "<br>"; if ($prauth[$ADM][2]) { checkbox(1, "yes"); lprint(GEN_FL_EPX); } else { hidekey("yes", 1); } checkbox(1, "srchen"); lprint(GEN_FILENSRCH); echo "<br>"; if ($coreredir == "SH_UPDD_FL") { hidekey("coreredir", "step2"); } if (!$multiaction) { hidekey("file", $file); } if ($multiaction) { hidekey("multiactionsign", $multiaction); hidekey("file", $filelistmassive); $path = add_endslash($path); hidekey("pathmulti", base64_encode($path)); hidekey("filelistmassive", $filelistmassive); //посылаем дважды на пробу и каждый раз нихрена нет почему то какого ??? hidekey("filearrcount", $filearrcount); } submitkey("go", "FMG_SHARE"); // кнопка раздать файл hidekey("pid", $pid); ?> </form> <?php echo " "; hidekey("write", $cmd); if ($multiaction == 1) { exit; } // ! ////moved from non-function zone -- SHARE STEP 1 -- ENDING //ЭТО ОКончание первого шага раздачи } // // echo "Мы получили из пред сессии $cmd $fileforaction!<br> <BR>"; ikonki mlya ! //echo "<br>".cmsg ("FMG_MHLP")."<br>"; ХЕЛП ОТКЛЮЧЕН if ($noscreenmode == false) { echo ""; } //тут пишем команды и выполняем их //echo "628_Failure-- protect::";print_r ($protect); неправильно обрабатывался массив почему то вместо него шла переменная о_О CFG OPT FUTURE if (is_Array($protect)) { if (!$prauth[$ADM][38]) { $protect[] = "*.php"; } } // скрываем файлы скрипта чтобы их никто не стер. //$protect[]="*.key";// не снимать комментарий - безопасность снизится до 0 //if ($OSTYPE=="LINUX") if (($sd[10])AND($ADM==0)) $path=$path."/"; //bug with unregistered users folder lost / //if ($OSTYPE=="WINDOWS") if (($sd[10])AND($ADM==0)) $path=$path."\\"; if ($OSTYPE == "WINDOWS") { if ($cmd == cmsg("FMG_ENTER") and $prauth[$ADM][7]) { $path = $path . $fileforaction . "\\"; } } if ($OSTYPE == "LINUX") { if ($cmd == cmsg("FMG_ENTER") and $prauth[$ADM][7]) { $path = $path . $fileforaction . "/"; } } if ($OSTYPE == "WINDOWS") { if ($cmd == cmsg("FMG_DRV") and $prauth[$ADM][8]) { $path = $stroka . ":/"; } } if ($OSTYPE == "LINUX") { if ($cmd == cmsg("FMG_DRV") and $prauth[$ADM][8]) { $path = "/media/{$stroka}/"; } } if ($OSTYPE == "LINUXALT") { if ($cmd == cmsg("FMG_DRV") and $prauth[$ADM][8]) { $path = "/mnt/{$stroka}/"; } } //CFG OPT FUTURE if ($OSTYPE == "WINDOWS") { if ($cmd == cmsg("FMG_EXIT") and $prauth[$ADM][7]) { $path = dirname($path) . "\\"; } } //$path=folderupdir ($path); if ($OSTYPE == "LINUX") { if ($cmd == cmsg("FMG_EXIT") and $prauth[$ADM][7]) { $path = dirname($path) . "/"; } } if ($cmd == cmsg("FMG_SRCH") and $prauth[$ADM][7]) { $file = $path . $fileforaction; // далее скрипт рассчитан на эту переменную, к томуже массив стереть надо:) $a = searchplus($file, $fileforaction, $stroka); if ($pr[12]) { $act = "FILEMGR_SRCH {$cmd} {$file} word={$stroka}"; logwrite($act); } // логируемся //if ($a==false) die ("<br>Ошибка!Файл $file не найден!!!.<br>"); echo " <form action=filemgr.php method=post>"; hidekey("pid", $pid); hidekey("write", $cmd); submitkey("cmd" . $pid, "FMG_RESET"); echo "</form>"; exit; } //If ($prauth[$ADM][2]==true) { // blocked commands if ($cmd == cmsg("FMG_MKDIR") and $prauth[$ADM][12]) { //if ($codekey==7) demo (); if ($multiaction == 1) { global $filearrcount; $stroka .= $filearrcount; } $err = mkdir($path . $stroka); } //if ($cmd==cmsg("FMG_DELALL")) $err=rmdir ($path.$fileforaction); if ($cmd == cmsg("FMG_JOINFIL") and $prauth[$ADM][12]) { if ($codekey == 7) { demo(); } $err = joinfiles($path, $mask, $protect, $stroka); } if ($cmd == cmsg("FMG_DELALL") and $prauth[$ADM][13]) { // rmdir теперь полное удаление (!) if ($codekey == 7) { demo(); } if ($prauth[$ADM][5] == true) { if ($stroka == "accept") { $err = kill_dir($path . $fileforaction); } else { echo "Вы не сказали accept"; } } else { msgexiterror("notright", "", "disable"); exit; } // круто удаляет отключим } if ($cmd == cmsg("FMG_EXECUTE") and $prauth[$ADM][8]) { if ($codekey == 7) { demo(); } echo cmsg("FMG_MOD_IN") . "<br>"; require $filemgrmod; echo cmsg("FMG_MOD_OUT") . "<br>"; } if ($OSTYPE == "LINUX") { if ($cmd == cmsg("FMG_UNRAR") and $prauth[$ADM][12]) { $file = $path . $fileforaction; //rar_open rar_list PHP by standart is unsupported!!! $unrared = substr($fileforaction, 0, strrpos($fileforaction, '.')); // elf elfkz удаляем расширение рар @mkdir($path . $unrared); echo "Creating folder {$unrared}<br>"; $extractionpoint = $path . $unrared; echo "Extracting to " . $extractionpoint . ";<br>"; $zip = system("unrar x \"{$file}\" \"{$extractionpoint}\""); echo "<br>Result={$zip} "; //echo '"unrar e \"'.$file.'\" \"'.$extractionpoint.'\""'; echo " <br>"; } } if ($OSTYPE == "LINUX") { if ($cmd == cmsg("FMG_RAR") and $prauth[$ADM][12]) { $file = $path . $fileforaction; //rar_open rar_list PHP by standart is unsupported!!! $unrared = substr($fileforaction, 0, strrpos($fileforaction, '.')); // elf elfkz удаляем расширение рар // @mkdir ($path.$unrared); // echo "Creating folder $unrared<br>"; $extractionpoint = $path . $unrared; echo "Archiving to to " . $fileforaction . ".rar;<br>"; $zip = system("rar a \"{$fileforaction}\".rar \"{$file}\""); echo "<br>Result={$zip} "; //echo '"unrar e \"'.$file.'\" \"'.$extractionpoint.'\""'; echo " <br>"; } } if ($cmd == cmsg("FMG_UNZIP") and $prauth[$ADM][12]) { $file = $path . $fileforaction; //rar_open rar_list PHP by standart is unsupported!!! $zip = zip_open($file); $unrared = substr($fileforaction, 0, strrpos($fileforaction, '.')); // elf elfkz удаляем расширение рар @mkdir($path . $unrared); if ($zip) { while ($zip_entry = zip_read($zip)) { echo "Name: " . zip_entry_name($zip_entry) . "\n"; echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n"; echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n"; echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n"; if (zip_entry_open($zip, $zip_entry, "r")) { echo "File Contents:\n"; $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); //echo "$buf\n"; $x = fopen($path . zip_entry_name($zip_entry), "w"); @fwrite($x, $buf); @fclose($x); zip_entry_close($zip_entry); } echo "\n"; } zip_close($zip); } } if ($cmd == cmsg("FMG_TEST")) { //at this moment start new script echo cmsg("FMG_MOD_IN") . "<br>"; require "mp3runonce.php"; echo cmsg("FMG_MOD_OUT") . "<br>"; } if ($cmd == cmsg("FMG_DEL") and $prauth[$ADM][13]) { if ($codekey == 7) { demo(); } @($err1 = unlink($path . $fileforaction)); @($err2 = rmdir($path . $fileforaction)); } if ($cmd == cmsg("FMG_NEW") and $prauth[$ADM][12]) { //if ($codekey==7) demo (); //echo "ibane ug if ($multiaction==1) {global $filearrcount;$stroka.=$filearrcount;};<br>"; if ($multiaction == 1) { global $filearrcount; $stroka .= $filearrcount; } @($err = fopen($path . $stroka, "r")); if ($err == false) { $err = fopen($path . $stroka, "a"); } } if ($cmd == cmsg("FMG_REN") and $prauth[$ADM][12]) { if ($codekey == 7) { demo(); } if ($multiaction == 1) { global $filearrcount; $stroka .= $filearrcount; } $err = rename($path . $fileforaction, $path . $stroka); } if ($cmd == cmsg("FMG_EDIT") and $prauth[$ADM][12]) { if ($codekey == 7) { demo(); } $err = simpleedit($path . $fileforaction, $stroka); } if ($pr[12]) { $act = "FILEMGR_CMD {$cmd} {$file}({$path} {$fileforaction}) word={$stroka}"; if ($cmd) { if ($cmd !== cmsg("FMG_ENTER") and $cmd !== cmsg("FMG_EXIT")) { logwrite($act); } } } // логируемся // } else { echo "<br><font color=red id=errfnt>".cmsg ("LIM")."</font>".cmsg ("FMG_HLP2");} #selectin files using fileio.php if (!$path or $cmd == cmsg("FMG_RESET")) { $path = $defaultpath; $mask = "*.*"; $file = ""; $stroka = ""; } //$path=str_replace ("//","/",$path);проверка на вшивость - if ($err) { echo "{$err} <br>"; } //global disables visual menu for executing action if (!$multiaction) { // start menu show // маска для файла может быть поиск по части имени и поиск по формату //выделить обращение к директории и режим парсинга (маска) //насчет маски - возможно стоит ее добавить в поисковик МЕ if ($pid == 1) { if ($pr[86]) { if ($pr[87] or $prauth[$ADM][7]) { //либо право на чтение у юзера, либо разрешение искать всем. echo "<br><form action=filemgr.php method=post>"; lprint("SRCH_FILE"); inputtxt("searchfilenew", 30); submitkey("start", "DALEE"); echo "</form>"; if ($searchfilenew) { echo $searchfilenew; } } } } echo "<form action=filemgr.php method=post>"; hidekey("write", $cmd); //выделить отдельно модуль создания меню выбора файла. $file = getdirdata($path, $mask, $protect); //print_r ($file); if ($file) { asort($file); } $dircnt = count($file); if ($ADM > 0) { echo "<font color=blue>{$path}</font><br>"; } hidekey("pid", $pid); // cобственно это и мешает многооконной идее )) вроде теперь кое- for ($a = 1; $a < $maxmgrs + 1; $a++) { // save pid data $strokaname = "stroka" . $a; $pathname = "path" . $a; $fileforactionname = "fileforaction" . $a; $maskname = "mask" . $a; global ${$strokaname}, ${$pathname}, ${$fileforactionname}, ${$maskname}; ${$pathname} = str_replace("\\\\", "\\", ${$pathname}); ${$pathname} = str_replace("\\\\", "\\", ${$pathname}); if ($OSTYPE == "WINDOWS") { $path = str_replace("\\\\", "\\", $path); } // проверка на вшивость - if ($OSTYPE == "LINUX") { $path = str_replace("\\\\", "\\", $path); } // проверка на вшивость -xc hidekey("stroka" . $a, ${$strokaname}); hidekey("mask" . $a, ${$maskname}); hidekey("path" . $a, ${$pathname}); hidekey("fileforaction" . $a, ${$fileforactionname}); } //lprint ("FMG_CREATE"); if ($ADM > 0) { inputtext("stroka" . $pid, 15, $stroka); } //<textarea type = text name=stroka<?=$pid cols= 15 rows=1 wrap=NONE><?=$stroka; </textarea> if ($ADM > 0) { $hidefolder = $prauth[$ADM][52]; } else { $hidefolder = $pr[73]; } if (!$hidefolder) { lprint("FMG_MASK"); inputtext("mask" . $pid, 15, $mask); } //<textarea type = text name=mask<?=$pid cols= 7 rows=1 wrap=NONE><?=$mask; </textarea> <? if ($noscreenmode) { if ($prauth[$ADM][7]) { //FMG.pid удален echo "generate cmd{$pid}<br>"; //$cmdx="cmd".$pid; //работает но передает только вторую букву [1] FIXED? submitkey("cmd", "FMG_SRCH"); submitkey("cmd", "FMG_ENTER"); submitkey("cmd", "FMG_EXIT"); } if ($prauth[$ADM][8]) { submitkey("cmd", "FMG_DRV"); if ($filemgrmod and $prauth[$ADM][2] == true) { submitkey("cmd", "FMG_EXECUTE"); } } if ($prauth[$ADM][12]) { submitkey("cmd", "FMG_MKDIR"); submitkey("cmd", "FMG_JOINFIL"); submitkey("cmd", "FMG_UNZIP"); submitkey("cmd", "FMG_TEST"); if ($OSTYPE == "LINUX") { submitkey("cmd", "FMG_UNRAR"); } if ($OSTYPE == "LINUX") { submitkey("cmd", "FMG_RAR"); } submitkey("cmd", "FMG_REN"); submitkey("cmd", "FMG_EDIT"); submitkey("cmd", "FMG_NEW"); } if ($prauth[$ADM][13]) { submitkey("cmd", "FMG_DELALL"); submitkey("cmd", "FMG_DEL"); } if ($prauth[$ADM][9]) { submitkey("cmd", "FMG_DOWNLOAD"); } if ($prauth[$ADM][36]) { submitkey("cmd", "FMG_UPLOAD"); } if ($prauth[$ADM][54]) { submitkey("cmd", "FMG_SHARE"); // submitkey ("cmd","FMG_UNSHARE"); } if (!$pr[75]) { submitkey("cmd", "FMG_REF"); submitkey("cmd", "FMG_RESET"); } if (!$hidefolder) { submitkey("cmd", "FMG_MASKAPPLY"); } //scripting showkey mechanism if ($filscdata) { echo "<br>Configured scripts:<br>"; for ($i = 1; $i < $filsccount; $i++) { // echo "debug $i = $filscdata[$i][$keylanguage] , key=[$keylanguage]<br>"; if ($filscdata[$i][$keylanguage] == "") { continue; } submitkey("cmd", "." . $filscdata[$i][$keylanguage]); } // fwrite ($a,"ID¦NAME¦Script¦Plevel¦keynames-icon¦russian¦english¦f1_russian¦f1_english¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦".$addOSenter); /*.*1¦mencoder %path%%file% -oac mp3lame -ovc x264 -o %path%%file%.avi¦0¦0¦перекодить в h264¦encode h264¦0¦0¦0¦0¦0 2¦mencoder %path%%file% -oac mp3lame -ovc mpg -o %path%%file%.avi¦0¦0¦перекодить в mpeg¦encode mpeg¦0¦0¦0¦0¦0¦0 */ } } if ($noscreenmode == false) { if ($prauth[$ADM][7]) { submitimg("cmd" . $pid, "FMG_SRCH", "_ico/target.png"); submitimg("cmd" . $pid, "FMG_ENTER", "_ico/openfolder.png"); submitimg("cmd" . $pid, "FMG_EXIT", "_ico/folderup.png"); } if ($prauth[$ADM][8]) { submitimg("cmd" . $pid, "FMG_DRV", "_ico/drv.png"); submitimg("cmd" . $pid, "FMG_EXECUTE", "_ico/execute.png"); } if ($prauth[$ADM][12]) { submitimg("cmd" . $pid, "FMG_MKDIR", "_ico/newfolder.png"); submitimg("cmd" . $pid, "FMG_REN", "_ico/rename.png"); submitimg("cmd" . $pid, "FMG_EDIT", "_ico/editfmg.png"); submitimg("cmd" . $pid, "FMG_NEW", "_ico/newfile.png"); submitimg("cmd" . $pid, "FMG_JOINFIL", "_ico/joinfiles.png"); submitimg("cmd" . $pid, "FMG_UNZIP", "_ico/backup.png"); submitimg("cmd" . $pid, "FMG_TEST", "_ico/apply_f2.png"); if ($OSTYPE === "LINUX") { submitimg("cmd" . $pid, "FMG_UNRAR", "_ico/backup.png"); } if ($OSTYPE === "LINUX") { submitimg("cmd" . $pid, "FMG_RAR", "_ico/backup.png"); } } if ($prauth[$ADM][13]) { if ($prauth[$ADM][5] == true) { submitimg("cmd" . $pid, "FMG_DELALL", "_ico/removefolder.png"); } submitimg("cmd" . $pid, "FMG_DEL", "_ico/removefile.png"); } if ($prauth[$ADM][9]) { submitimg("cmd" . $pid, "FMG_DOWNLOAD", "_ico/download.png"); } if ($prauth[$ADM][36]) { if (!$pr[75]) { submitimg("cmd" . $pid, "FMG_UPLOAD", "_ico/upload.png"); } if ($pr[75]) { submitimg("cmd" . $pid, "FMG_UPLOAD", "_ico/uploadalt.png"); } } if ($prauth[$ADM][54]) { submitimg("cmd" . $pid, "FMG_SHARE", "_ico/w_accept.png"); //submitimg ("cmd".$pid,"FMG_UNSHARE","_ico/w_close.png"); } if (!$pr[75]) { submitimg("cmd" . $pid, "FMG_REF", "_ico/refresh.png"); submitimg("cmd" . $pid, "FMG_RESET", "_ico/reset.png"); } if (!$hidefolder) { submitimg("cmd" . $pid, "FMG_MASKAPPLY", "_ico/stargreen.png"); } } if ($pid == 1 and $prauth[$ADM][12]) { // только 1 раз исполняется этот блок . на 1 пиде. echo "<br>"; echo cmsg("FMG2"); submitimg("cmd" . $pid, "FMG_CPY_F", "_ico/copyfile.png"); echo " "; submitimg("cmd" . $pid, "FMG_MOV_F", "_ico/movefile.png"); echo " "; //submitimg ("cmd".$pid,"FMG_CPY_FLD","_ico/copyfolder.png");echo " "; submitimg("cmd" . $pid, "FMG_MOV_FLD", "_ico/movefolder.png"); echo " "; } ?> <input type = hidden name = path<?php echo $pid; ?> value ="<?php echo $path; ?> " > <?php if ($hidefolder) { unset($file); } //no filelist if ($file) { echo "<BR>" . cmsg("FMG_FILDB") . ":<select name =fileforaction" . $pid . "[] multiple size = " . $prauth[$ADM][49] . ">"; sort($file); //нет реакции... print_r ($file); echo "Rewefkowe"; for ($a = 0; $a < $dircnt; $a++) { if ($file[$a][0] === ".") { continue; } if ($file[$a][0] === "..") { continue; } if ($file[$a][0] === false) { continue; } if ($file[$a][1]) { $dir = "==>"; } else { $dir = ""; } $fsizer = ""; if ($dir !== "==>") { $fsize = $file[$a][2]; // settype ($fsizer,"string"); if ($fsize < 1024) { $fsizer = "[" . round($fsize, 1) . "b]"; } if ($fsize < 1) { $fsizer = ""; } if ($fsize > 1024) { $fsizer = "[" . round($fsize / 1024, 1) . "Kb]"; } if ($fsize > 1024 * 1024) { $fsizer = "[" . round($fsize / 1024 / 1024, 2) . "Mb]"; } if ($fsize > 1024 * 1024 * 1024) { $fsizer = "[" . round($fsize / 1024 / 1024 / 1024, 2) . "Gb]"; } } //$filesizemb=$file[$a][2]/1024; echo "<option value=\"" . $file[$a][0] . "\">" . $dir . $file[$a][0] . "" . $fsizer . "</option>"; } // size (".$file[$a][2].") if ($pr[11] == 1) { //protected cmds } echo "</select></form>"; } echo "<br>"; $dbsdiskfree = round((int) (@disk_free_space($path) / (1024 * 1024 * 1024)), 1); $dbsdisktotal = (int) (@disk_total_space($path) / (1024 * 1024 * 1024)); if ($pid == 1) { if ($ADM) { echo "Selected : Free " . $dbsdiskfree . "Gb "; } // сделать переключатель дисков или что то вроде указателя if ($ADM) { echo "\\" . $dbsdisktotal . "Gb<br>"; } $disks = explode(",", $pr[79]); for ($a = 0; $a < count($disks); $a++) { $diskfree[$a] = round(@disk_free_space($disks[$a]) / (1024 * 1024 * 1024), 1); //Gb $disktotal[$a] = round(@disk_total_space($disks[$a]) / (1024 * 1024 * 1024), 1); //Gb if (!$pr[80]) { echo "Disk " . $a . ":: " . $diskfree[$a] . "Gb \\ " . $disktotal[$a] . "Gb.<br>"; } $avgfree = $avgfree + $diskfree[$a]; $avgtotal = $avgtotal + $disktotal[$a]; } $avgfree = $avgfree; $avgtotal = $avgtotal; echo " Summary :Free " . $avgfree . "Gb "; echo "\\" . $avgtotal . "Gb"; echo "<br>"; } //only pid 1 shows } // start menu show }
<?php function demo() { $param = func_get_args(); echo func_num_args(); echo '<pre>'; print_r($param); echo '</pre>'; //echo "Gia tri : $a1, $a2, $a3, $a4"; } demo(5, 10, 15, 20);
require __DIR__ . '/../src/tracy.php'; use Tracy\Debugger; Debugger::enable(Debugger::DETECT, __DIR__ . '/log'); ?> <!DOCTYPE html><link rel="stylesheet" href="assets/style.css"> <h1>Tracy: exception demo</h1> <?php class DemoClass { function first($arg1, $arg2) { $this->second(TRUE, FALSE); } function second($arg1, $arg2) { self::third([1, 2, 3]); } static function third($arg1) { throw new Exception('The my exception', 123); } } function demo($a, $b) { $demo = new DemoClass(); $demo->first($a, $b); } demo(10, 'any string');
<?php echo CHtml::submitButton(Yii::t('common', 'Login')); ?> </div> <?php $this->endWidget(); ?> </div><!-- form --> <?php $this->widget('ext.eauth.EAuthWidget', array('action' => 'site/login')); ?> <?php if (demo()) { Yii::app()->clientScript->registerScript('login-js', ' function demoLogin(){ login("*****@*****.**", "demo"); } function adminLogin(){ login("*****@*****.**", "admin"); } function login(username, password){ $("#LoginForm_username").val(username); $("#LoginForm_password").val(password); $("#login-form").submit(); } ', CClientScript::POS_END);
<?php $sayhello = create_function('$name', 'echo "hello $name";'); var_dump($sayhello); $sayhello('php'); function demo() { return __FUNCTION__; } var_dump(demo()); echo '<hr />'; $name = 'Jim'; $say = function () use($name) { echo "hi,{$name}"; }; $say(); echo '<hr />'; function outer() { $name = 'Tom'; $sayName = function () use($name) { echo "1hi,{$name}"; }; $sayName(); } outer(); //$sayName();
function init() { if (!oreInstall::isInstalled() && !(Yii::app()->controller->module && Yii::app()->controller->module->id == 'install')) { $this->redirect(array('/install')); } setLang(); $modulesToCheck = ConfigurationModel::getModulesList(); foreach ($modulesToCheck as $module) { if (param('module_enabled_' . $module) === null) { ConfigurationModel::createValue('module_enabled_' . $module, 0); Yii::app()->params['module_enabled_' . $module] = 0; } } unset($modulesToCheck); $this->assetsGenPath = Yii::getPathOfAlias('webroot.assets'); $this->assetsGenUrl = Yii::app()->getBaseUrl(true) . '/assets/'; Yii::app()->user->setState('menu_active', ''); $this->pageTitle = tt('siteName', 'seo'); $this->pageKeywords = tt('siteKeywords', 'seo'); $this->pageDescription = tt('siteDescription', 'seo'); Yii::app()->name = $this->pageTitle; $this->defaultTheme = Themes::getDefaultTheme(); if (!$this->defaultTheme) { $this->defaultTheme = 'classic'; } Yii::app()->theme = $this->defaultTheme; $this->baseUrl = Yii::app()->baseUrl; $this->baseThemeUrl = Yii::app()->theme->baseUrl; if (Yii::app()->getModule('menumanager')) { if (!(Yii::app()->controller->module && Yii::app()->controller->module->id == 'install')) { $this->infoPages = Menu::getMenuItems(true, 2); } } $subItems = array(); if (!Yii::app()->user->isGuest) { $subItems = HUser::getMenu(); } $this->aData['userCpanelItems'] = Menu::getMenuItems(true, 1); $this->aData['userCpanelItems'][] = array('label' => tt('Reserve apartment', 'common'), 'url' => array('/booking/main/mainform'), 'visible' => Yii::app()->user->checkAccess('backend_access') === false, 'linkOptions' => array('class' => 'fancy'), 'itemOptions' => array('class' => 'depth_zero')); $this->aData['userCpanelItems'][] = array('label' => Yii::t('common', 'Control panel'), 'url' => array('/usercpanel/main/index'), 'visible' => Yii::app()->user->checkAccess('backend_access') === false, 'items' => $subItems, 'itemOptions' => array('class' => 'depth_zero'), 'submenuOptions' => array('class' => 'sub_menu_dropdown')); if (!Yii::app()->user->isGuest) { $user = HUser::getModel(); $this->aData['userCpanelItems'][] = array('label' => '(' . $user->username . ') ' . tt('Logout', 'common'), 'url' => array('/site/logout'), 'itemOptions' => array('class' => 'depth_zero')); } $this->aData['topMenuItems'] = $this->infoPages; // comparison list if (issetModule('comparisonList')) { if (!Yii::app()->user->isGuest) { $resultCompare = ComparisonList::model()->findAllByAttributes(array('user_id' => Yii::app()->user->id)); } else { $resultCompare = ComparisonList::model()->findAllByAttributes(array('session_id' => Yii::app()->session->sessionId)); } if ($resultCompare) { foreach ($resultCompare as $item) { $this->apInComparison[] = $item->apartment_id; } } } $this->currentUserIp = Yii::app()->request->getUserHostAddress(); $this->currentUserIpLong = ip2long($this->currentUserIp); $this->datePickerLang = Yii::app()->language; if ($this->datePickerLang == 'en') { $this->datePickerLang = 'en-GB'; } if (demo()) { if (isset($_GET['theme']) && array_key_exists($_GET['theme'], Themes::getColorThemesList())) { $theme = $_GET['theme']; $cookie = new CHttpCookie('theme', $theme); $cookie->expire = time() + 86400; Yii::app()->request->cookies['theme'] = $cookie; } } parent::init(); }
<?php if (demo()) { ?> <style> #page { padding-top: 40px; } </style> <?php $this->renderPartial('//site/ads-block', array()); ?> <div class="clear"></div> <?php } ?> <div id="page" class="compare-main" <?php echo demo() ? 'style="padding-top: 40px;"' : ''; ?> > <div class="header"> <div class="logo"> <a title="<?php echo Yii::t('common', 'Go to main page'); ?> " href="<?php echo Yii::app()->controller->createAbsoluteUrl('/'); ?> "> <img src="<?php echo Yii::app()->theme->baseUrl; ?> /images/logo.png" alt="<?php
function getJivo() { if (demo() && defined('JIVO_CODE')) { return '<script type="text/javascript">' . JIVO_CODE . '</script>'; } else { return ''; } }
<?php include 'SimilarUtil.php'; //测试例子 function demo() { //当前发布信息内容 $content = '大众 桑塔纳'; //今天已发布信息内容数组 $historyArray = array('大众朗逸2008款 1.6 自动品悠版', '出售大众 途锐 2006款进口(进口)3.2LV6', '大众 桑塔纳志俊', '大众 桑塔纳3000', '大众桑塔纳'); foreach ($historyArray as $history) { $isSimilar = SimilarityUtil::isSimilar($content, $history); if ($isSimilar) { break; } } if ($isSimilar) { echo '今天已发布过类似条目'; } else { echo '今天没有发布相似条目'; } } demo();
<? function demo($value){ return $value; } echo demo("Demo function in PHP"); echo "<br>"; function demo2($value,$color = "green"){ $value = "<font color=".$color.">".$value."</font>"; return $value; } echo demo2("Demo function in PHP"); ?> <p> <a href="https://github.com/quicoto/ricks-code-examples/tree/master/9">Fork me on Github</a> </p>