📄 savepage.php
字号:
if($numc < 1){ message('UNABLE_TO_SAVE','4'); return false; } // all links $query = 'UPDATE '.$wbTables['all_links']; $query .= ' SET `to_id` = "'.$saveObj->file_id.'" '; $query .= ' WHERE `to_link` = "'.wbDB::escape($saveObj->uniqStorage).'" '; wbDB::runQuery($query); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // IV) After save organisation // message('SAVED_FILE'); if( $_SESSION['userlevel'] < 2 ){ $_SESSION['lastSave'] = array($pageKey=>time()); } //// allSearch allSearch::update($saveObj); //// fileUsage $pageOwner += array('fileUsage'=>0); if( !is_array($pageOwner['fileUsage']) ){ unset($pageOwner['fileUsage']); } $newSize = objectSave::getSize($saveObj); $table = $saveObj->dbInfo['dbTable']; if( empty($pageOwner['fileUsage'][$table]) ){ $pageOwner['fileUsage'][$table] = $newSize; }else{ $pageOwner['fileUsage'][$table] += ($newSize-$oldSize); } if( $pageOwner['fileUsage'][$table] < 0){ unset($pageOwner['fileUsage'][$table]); } //// Hidden? if( strpos($saveObj->flags,'hidden') === false){ if( $oldKeywords != $saveObj->keywords ){ includeFile('tool/Tags.php'); updateTags($oldKeywords,$saveObj->keywords); } }elseif( !empty($saveObj->keywords) ){ message('HIDDEN_FILE3'); } //// Blog This if( isOwner(false,false) && isset($pageOwner['isBlog']) && ($pageOwner['isBlog'] =='On') && isset($pageOwner['sBlog']) && ($pageOwner['sBlog'] == 'On') && ($saveObj->objectType == $pageOwner['blogT']) && (strtolower($saveObj->title) != 'home') && (strpos($saveObj->flags,'unchecked') === false) && (strpos($saveObj->flags,'hidden') === false)){ message(wbLinks::local($saveObj->uniqLink.'?cmd=blogthis',$lang['blog_this'])); } //// all_links objectSave::links($saveObj); $saveObj->modified= $wbNow; return true;}class objectSave{ // // Working on for version 1.4 function links(&$saveObj){ global $wbTables,$dbInfo,$wbLinkPrefixStor; $linkCheck = array(); $query = 'SELECT LOWER(`to_link`) as `to_link` FROM '.$wbTables['all_links'].' where `file_id` = "'.$saveObj->file_id.'" '; $result = wbDB::runQuery($query); $oldLinks = array(); while($row = mysql_fetch_assoc($result) ){ if( isset($saveObj->inLinks[$row['to_link']]) ){ unset($saveObj->inLinks[$row['to_link']]); }else{ $oldLinks[] = ' (`to_link` = "'.wbDB::escape($row['to_link']).'") '; } } //Delete Removed Links if( count($oldLinks) > 0 ){ $query = 'DELETE FROM '.$wbTables['all_links']; $query .= ' WHERE '; $query .= ' `file_id` = "'.$saveObj->file_id.'" '; $query .= ' AND ( '; $query .= implode(' OR ',$oldLinks); $query .= ' )'; wbDB::runQuery($query); } if( count($saveObj->inLinks) < 1){ return; } //this will only be new links foreach($saveObj->inLinks as $rev => $link){ if( $hash = strpos($link,'#') ){ $link = substr($link,0,$hash); $rev = substr($rev,0,$hash); } if($rev == $saveObj->uniqStorage ){ //don't save link to self continue; } $link = toStorage($link); $pathArray = interpretPath($link); if( !isset($dbInfo[$pathArray['type']]['dbTable']) ){ continue; } if( count($pathArray['path']) < 1){ $link = str_replace('//','/',$link.'/Home'); } $space =& $pathArray['type']; //get to_id $query = 'SELECT '.$dbInfo[$space]['dbTable'].'.`file_id` '; $query .= ' FROM '.$dbInfo[$space]['dbTable']; $query .= ' INNER JOIN '.$wbTables['all_files']; $query .= ' USING(`file_id`) '; //might be able to use keys instead of uniqLink $query .= ' WHERE '.wbData::dbInfo($space,'uniqLink').' = "'.wbDB::escape($link).'" '; $query .= ' LIMIT 1 '; $result = wbDB::runQuery($query); $to_id = false; if( $row = mysql_fetch_assoc($result) ){ $to_id = $row['file_id']; } $query = 'INSERT IGNORE INTO '.$wbTables['all_links'].' SET '; $query .= ' `file_id` = "'.$saveObj->file_id.'" '; $query .= ', `to_link` = "'.wbDB::escape($link).'" '; $query .= ', `to_owner` = "'.$pathArray['owner'].'" '; if( $to_id ){ $query .= ', `to_id` ="'.$to_id.'" '; } wbDB::runQuery($query); } } function getSize(&$saveObj){ //Starting size should include dateTime values // = (4 bytes)* 3 = 12 insignificant compared to the following //-this does not account for history tables //-flags are stored in a SET which does not have the same storage requirements as VARCHAR, BLOB, etc //-summary is more of a history concern $size = 12; $size += strlen($saveObj->ip); $size += strlen($saveObj->username); $values = array_merge($saveObj->userValues,$saveObj->dbValues); foreach($values as $key => $nothing){ $size += strlen($saveObj->$key)+1; //+1 is nit-picky but true, +2 for blobs but we'll let it go } // Round off so the $pageOwner['fileUsage'] // isn't updated with every single small change if( $size < 1000 ){ $n = 2; //better for small files }else{ $n = 5; //sufficient for larger files } //$n = 5; //round to every 500 bytes //$n = 2; //round to every 100 bytes //$n = 10/3; //round to every 333 bytes //$n = 2.5; //round to every 250 $size = round($size/$n,-2)*$n; return $size; }}//// SAVING//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// COPY////!! should probably just be part of toolEditPage.php//function copyPage(){ global $dbObject; global $page; global $pageOwner; // 2) Signed in? if( !isset($_SESSION['username']) ){ message('LOGIN_REQUIRED'); return false; } // 1) Check Path //$toPage = $_GET['to']; $toPage = $_POST['to']; if( wbStrpos($toPage,'../') !== false){ message('INVALID_PATH',$toPage); return false; } $page->displayTitle = 'Copy to '.$toPage; //Change the owner $fromUrl = $dbObject->uniqLink; $dbObject->owner = $_SESSION['username']; $dbObject->setUniqLink(); // 3) Change Edit Link $pos = strrpos($dbObject->uniqLink,'/'); if( $pos == false){ message('INVALID_PATH',$toPage); return false; } // Add $toPage to end of $stripped $stripped = wbSubstr($dbObject->uniqLink,0,$pos+1); $newPath = $stripped.toStorage($toPage); message('COPY_TO',$fromUrl,$newPath); //Reset Object Keys from $newPath $tmp = interpretPath($newPath); $dbObject->setKeys($tmp); // do this to set the title, or subject $dbObject values //Reset the key information $dbObject->links = array();//need to reset it, should probably be in the $dbObject setLinks function $dbObject->setUniqLink(); $dbObject->checkKeys(); $dbObject->setLinks(); $dbObject->modified = ''; includeFile('tool/EditPage.php'); return;}//!! instead of create a path, parsing it, calling setKeys() and setLinks() ...// we could just set one of the keys and uniqLink to the new value then call setLinks()//// COPY//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// FLOW//global $dbObject,$lang, $wbParser;if( !cookies() ){ message('COOKIES_REQUIRED'); return;}switch( $page->userCmd ){ case 'save'://maps don't use $lang['save'] case wbStrtolower($lang['save']): $edit = true; //try to save the object if( fileToDisk($dbObject) ){ $field = $dbObject->outputObj(); $dbObject->addFooter($field); $edit = false; }elseif( isset($_GET['wb']) ){ $edit = false; } // need to send the the edit form again if it's not an xmlHttp request if( $edit ){ includeFile('tool/EditPage.php'); } break; case 'copy': copyPage(); break;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -