00001 <?php
00002 if(!defined('__PRAGYAN_CMS'))
00003 {
00004 header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
00005 echo "<h1>403 Forbidden<h1><h4>You are not authorized to access the page.</h4>";
00006 echo '<hr/>'.$_SERVER['SERVER_SIGNATURE'];
00007 exit(1);
00008 }
00026 function getCreatablePageTypes($userid, $pageid) {
00027 $moduleQuery = "SELECT `page_module` FROM `" . MYSQL_DATABASE_PREFIX . "permissionlist` WHERE `perm_action` = 'create'";
00028 $moduleResult = mysql_query($moduleQuery);
00029 $creatableModules = array();
00030
00031 while ($moduleResultRow = mysql_fetch_row($moduleResult))
00032 if (getPermissions($userid, $pageid, "create", $moduleResultRow[0]))
00033 $creatableModules[] = $moduleResultRow[0];
00034 return $creatableModules;
00035 }
00036
00043 function getSettingsForm($pageId, $userId) {
00044 $pageId=escape($pageId);
00045 $page_query = "SELECT `page_name`, `page_title`, `page_displaymenu`, `page_displayinmenu`, `page_displaysiblingmenu` , `page_module`, `page_displaypageheading`,`page_template`,`page_modulecomponentid`, `page_menutype`, `page_menudepth` , `page_displayinsitemap` ,`page_displayicon`" .
00046 "FROM `" . MYSQL_DATABASE_PREFIX . "pages` WHERE `page_id`=" . $pageId;
00047 $page_result = mysql_query($page_query);
00048 $page_values = mysql_fetch_assoc($page_result);
00049
00050
00051
00052 $chkquery="SELECT `value` FROM `".MYSQL_DATABASE_PREFIX."global` WHERE `attribute`='allow_pagespecific_template'";
00053 $row=mysql_fetch_row(mysql_query($chkquery));
00054 $allow_pagespecific_templates=$row[0];
00055
00056 if (!$page_values) {
00057 return '';
00058 }
00059 global $ICONS;
00060 $modifiers = '';
00061 $showInMenuBox = '';
00062 $showInSiteMap = '';
00063 if ($pageId == 0) {
00064 $modifiers = 'disabled="disabled" ';
00065 $showInMenuBox = '<tr><td ><label for="showinmenu">Show page in menu bar</td></label><td><input type="checkbox" name="showinmenu" id="showinmenu" ' . ($page_values['page_displayinmenu'] == 1 ? 'checked="checked" ' : '') . '/></td></tr>';
00066 $showInSiteMap = '<tr><td ><label for="showinsitemap">Show page in site map</td></label><td><input type="checkbox" name="showinsitemap" id="showinsitemap" ' . ($page_values['page_displayinsitemap'] == 1 ? 'checked="checked" ' : '') . '/></td></tr>';
00067 }
00068
00069 $showmenubar = ($page_values['page_displaymenu'] == 1 ? 'checked="checked" ' : '');
00070 $showsiblingmenu = $page_values['page_displaysiblingmenu'] == 1 ? 'checked="checked" ' : '';
00071 $showheading = ($page_values['page_displaypageheading'] == 1 ? 'checked="checked"' : '');
00072 $dbPageTemplate = $page_values['page_template'];
00073 $modulecomponentid=$page_values['page_modulecomponentid'];
00074 $displayicon = ($page_values['page_displayicon'] == 1 ? 'checked="checked" ' : '');
00075 $templates = getAvailableTemplates();
00076 $page_query = "SELECT * FROM `" . MYSQL_DATABASE_PREFIX . "pages` WHERE `page_parentid` = $pageId AND `page_parentid` != `page_id` ORDER BY `page_menurank` ASC ";
00077 $page_result = mysql_query($page_query) or die(mysql_error());
00078 $childList ="";
00079 $isLeaf = false;
00080 if(mysql_num_rows($page_result)==0){
00081 $isLeaf = true;
00082 $childList = "There are no child pages associated with this page.";
00083 }
00084 else
00085 $childList = "<table border=\"1\" width=\"100%\"><tr><th>Child Pages</th><th>Display in menu bar</th><th>Display in Sitemap</th><th>Display Icon in menu</th><th>Move page up</th><th>Move page down</th><th>Delete</th></tr>";
00086 while ($page_result_row = mysql_fetch_assoc($page_result)) {
00087 $childList .= '<tr><td><a href="./'.$page_result_row['page_name'].'+settings">' . $page_result_row['page_title'] . '</a></td>' .
00088 '<td><input type="checkbox" name="menubarshowchildren[]" id="'.$page_result_row['page_name'].'" value="' . $page_result_row['page_name'] . '" ' . ($page_result_row['page_displayinmenu'] == 1 ? 'checked="yes" ' : '') . '/></td>'.
00089 '<td><input type="checkbox" name="sitemapshowchildren[]" id="'.$page_result_row['page_name'].'" value="' . $page_result_row['page_name'] . '" ' . ($page_result_row['page_displayinsitemap'] == 1 ? 'checked="yes" ' : '') . '/></td>'.
00090 '<td><input type="checkbox" name="childrenshowicon[]" id="'.$page_result_row['page_name'].'" value="' . $page_result_row['page_name'] . '" ' . ($page_result_row['page_displayicon'] == 1 ? 'checked="yes" ' : '') . '/></td>'.
00091 '<td align="center"><input type="submit" name="moveUp" onclick="this.form.action+=\''.$page_result_row['page_name'].'\'" value="Move Up" /></td>' .
00092 '<td align="center"><input type="submit" name="moveDn" onclick="this.form.action+=\''.$page_result_row['page_name'].'\'" value="Move Down" /></td>' .
00093 '<td align="center"><input type="submit" name="deletePage" onclick="return checkDelete(this,\''.$page_result_row['page_name'].'\')" value="Delete" /></td></tr>';
00094 }
00095 if(!mysql_num_rows($page_result)==0)
00096 $childList .= "</table>";
00097
00098 /* PAGE INHERITED INFO */
00099 $inheritedInfo = $inheritedPagePath = $inheritedInfoEncoded = '';
00100 $inheritedPageId = getPageInheritedInfo($pageId, $inheritedInfo);
00101 if($inheritedPageId == $pageId)
00102 $inheritedInfoEncoded = htmlentities($inheritedInfo);
00103 if($inheritedPageId >= 0) {
00104 $inheritedPagePath = getPagePath($inheritedPageId);
00105 global $urlRequestRoot;
00106 $inheritedPagePath = "<a href=\"$urlRequestRoot$inheritedPagePath+settings\">$inheritedPagePath</a>";
00107 if($inheritedPageId != $pageId)
00108 $inheritedPagePath .= ' (Browse to this page to edit the inherited information.)';
00109 }
00110 $inheritedInfoText = <<<INHERITEDINFO
00111 <a name="inheritinfoform"></a>
00112 <fieldset style="padding: 8px">
00113 <legend>{$ICONS['Page Inherited Info']['small']}Inherited Information</legend>
00114
00115 <form name="pagesettings" action="./+settings&subaction=editinheritedinfo" method="POST">
00116 <table>
00117 <tr>
00118 <td>Inherited Information:</td>
00119 <td>
00120 <div>
00121 $inheritedInfo
00122 </div>
00123 </td>
00124 </tr>
00125 <tr>
00126 <td>Inherited From:</td>
00127 <td>$inheritedPagePath</td>
00128 </tr>
00129 <tr>
00130 <td>Add/Edit inherited information for this page:</td>
00131 <td>
00132 <textarea name="txtInheritedInfo" style="width:98%;" rows="8" cols="80" wrap="virtual">$inheritedInfoEncoded</textarea>
00133 </td>
00134 </tr>
00135 </table>
00136 <input type="submit" name="btnSubmit" value="Submit" />
00137 </form>
00138 </fieldset>
00139 INHERITEDINFO;
00140
00141
00142
00143 $createdPageSettingsText = "";
00144 $dbPageTemplateDisabled="";
00145 $dbPageDefTemplate="";
00146 if($dbPageTemplate==DEF_TEMPLATE)
00147 {
00148 $dbPageDefTemplate="checked";
00149 $dbPageTemplateDisabled="disabled=true";
00150 }
00151
00152 if(getPageModule($pageId)=="link") {
00153 $dereferencePagePathIds = array();
00154 parseUrlDereferenced($pageId, $dereferencePagePathIds);
00155 $dereferencePagePath = "";
00156 foreach ($dereferencePagePathIds as $page) {
00157 $info = getPageInfo($page);
00158 $dereferencePagePath .= $info['page_name']."/";
00159 }
00160 global $urlRequestRoot;
00161 $createdPageSettingsText = "Please use the <a href='".$urlRequestRoot."/".$dereferencePagePath."+settings'>linked page settings</a> to create a child page.";
00162 }
00163 else if(getPageModule($pageId)=="external") {
00164 $createdPageSettingsText = "You cannot create a child page of a page of type \"external link\".";
00165 }
00166 else {
00167 $generatedTree = generateDirectoryTree($userId, "page", "settings", 0)->toHtml('childPageTreeContainer', 'childPageTree', 'childpagelink');
00168 $creatableTypesText = '<option value=""> </option><option value="menu">Menu</option><option value="link">Link</option><option value="external">External Link</option>';
00169 $createblePageTypes = getCreatablePageTypes($userId, $pageId);
00170 foreach ( $createblePageTypes as $creatableType) {
00171 $creatableTypesText .= "<option value=\"$creatableType\">".ucfirst($creatableType)."</option>";
00172 }
00173
00174 $createdPageSettingsText =<<<CREATE
00175 <form name="pagesettings" action="./+settings&subaction=create" onsubmit="return childOnSubmit();" method="POST">
00176 <script type="text/javascript" language="javascript">
00177 <!--
00178 function childOnSubmit(){
00179 if(document.getElementById("childpagetype").selectedIndex==0) { alert("Please select a page type."); return false;}
00180 if(document.getElementById("childpagename").value=="") {alert("Please fill the page name"); return false;}
00181 if(document.getElementById("childpagelink").value=="" && document.getElementById("childpagetype").selectedIndex==2) {alert("Please select the linked page path"); return false;}
00182 if(document.getElementById("externallink").value=="" && document.getElementById("childpagetype").selectedIndex==3) {alert("Please enter the external page path"); return false;}
00183 }
00184 function childShowTree(obj) {
00185
00186 if(obj.selectedIndex==2) {
00187 document.getElementById("childlinktree").style.display="";
00188 document.getElementById("childlinkentry").style.display="";
00189 document.getElementById("childlinkentry1").style.display="";
00190 }
00191 else {
00192 document.getElementById("childlinktree").style.display="none";
00193 document.getElementById("childlinkentry").style.display="none";
00194 document.getElementById("childlinkentry1").style.display="none";
00195 }
00196 if(obj.selectedIndex==3) {
00197 document.getElementById("externallinktr").style.display="";
00198 document.getElementById("externallinktr1").style.display="";
00199 }
00200 else {
00201 document.getElementById("externallinktr").style.display="none";
00202 document.getElementById("externallinktr1").style.display="none";
00203 }
00204
00205 if(obj.selectedIndex==2 || obj.selectedIndex==3)
00206 {
00207 document.getElementById("fieldsetTemplate").style.display="none";
00208 }
00209 else document.getElementById("fieldsetTemplate").style.display="";
00210 }
00211 function toggleSelTemplate1()
00212 {
00213 var obj=document.getElementsByName('page_template')[1];
00214 obj.disabled=(obj.disabled==true?false:true);
00215
00216 }
00217 -->
00218 </script>
00219 <a name="childpageform"></a>
00220 <fieldset>
00221 <legend>{$ICONS['Create New Page']['small']}Create Child Page</legend>
00222
00223 <table>
00224 <tr>
00225 <td valign="top">
00226 <table border="1">
00227 <tr><td>Page type:</td><td><select name="childpagetype" id="childpagetype" onchange="childShowTree(this);">$creatableTypesText</select></td></tr>
00228 <tr><td>Page name:</td><td><input type="text" name="childpagename" id="childpagename" /></td></tr>
00229 <tr id="childlinkentry" style="display:none"><td>Page link:</td><td><input type="text" name="childpagelink" id="childpagelink" /></td></tr>
00230 <tr id="childlinkentry1" style="display:none"><td>Open the child page in:</td><td><select name="linkselect" id="linktype"><Option>Same Tab</option><option>New Tab</option></select></td></tr>
00231 <tr id="externallinktr" style="display:none"><td>External link:</td><td><input type="text" name="externallink" id="externallink" /></td></tr>
00232 <tr id="externallinktr1" style="display:none"><td>Open the child page in:</td><td><select name="linkselectex" id="linktypeex"><Option>Same Tab</option><option>New Tab</option></select></td></tr>
00233 </table>
00234 </td>
00235 <td id="childlinktree" style="display:none">Click to select link path :
00236 $generatedTree
00237 </td>
00238 </tr>
00239 </table>
00240 CREATE;
00241
00242
00243 $createdPageSettingsText.=<<<CREATE
00244 <fieldset id="fieldsetTemplate">
00245 <legend>Template</legend>
00246 CREATE;
00247 if($allow_pagespecific_templates==1)
00248 {
00249 $createdPageSettingsText.=<<<CREATE
00250 <table>
00251 <tr>
00252 <td>Use Default Template ?</td>
00253 <td><input type='checkbox' name='default_template' value='yes' onchange="toggleSelTemplate1()" $dbPageDefTemplate /></td>
00254 </tr>
00255 <tr>
00256 <td>Select Template</td>
00257 <td><select name='page_template' $dbPageTemplateDisabled>
00258 CREATE;
00259 for($i=0; $i<count($templates); $i++)
00260 {
00261 if($templates[$i]==$dbPageTemplate)
00262 $createdPageSettingsText.="<option value='".$templates[$i]."' selected >".ucwords($templates[$i])."</option>";
00263 else
00264 $createdPageSettingsText.="<option value='".$templates[$i]."' >".ucwords($templates[$i])."</option>";
00265 }
00266 $createdPageSettingsText.="
00267 </select>
00268
00269 </tr>
00270
00271 </table>";
00272 }
00273 else
00274 $createdPageSettingsText.="Page-specific templates are disabled. Please enable it from Global Settings in Admin or click <a href='./+admin&subaction=global'>here</a>";
00275
00276
00277
00278
00279 $createdPageSettingsText.=<<<CREATE
00280 </fieldset><br/>
00281 <input type="submit" name="btnSubmit2" value="Submit" /> <input type="reset" name="btnReset" value="Reset" />
00282 </fieldset>
00283 </form>
00284 CREATE;
00285 }
00286
00287
00288
00289
00290 $generatedTree = generateDirectoryTree($userId, "page", "settings", 0)->toHtml('fileCopyTreeContainer', 'fileCopyTree', "parentpagepath");
00291 $movecopyPageSettingsText =<<<MOVECOPY
00292 <script type="text/javascript" language="javascript">
00293 function moveOnSubmit(){
00294 if(document.getElementById("parentpagepath").value=="") {alert("Please fill the page path"); return false;}
00295 if(document.getElementById("destinationpagetitle").value=="") { alert("Please select a page title."); return false;}
00296 if(document.getElementById("destinationpagename").value=="") {alert("Please fill the page name"); return false;}
00297 }
00298 function movecopyChange(obj){
00299 if(obj.checked==true)
00300 document.getElementById("recursivelycopypage").disabled=true;
00301 else
00302 document.getElementById("recursivelycopypage").disabled=false;
00303 }
00304 -->
00305 </script>
00306 <form name="pagesettings" action="./+settings&subaction=move" onsubmit="return moveOnSubmit()" method="POST">
00307 <a name="copymovepageform"></a>
00308 <fieldset>
00309 <legend>{$ICONS['Copy or Move Page']['small']}Copy or Move Page</legend>
00310
00311 <table border="1">
00312 <tr>
00313 <td valign="top">
00314 <table border="1" cellpadding="2px" cellspacing="2px">
00315 <tr><td colspan="2">Click on the generated page tree to select the parent page path : </td></tr>
00316 <tr><td>Path of the distination parent page :</td><td><input type="text" id="parentpagepath" name="parentpagepath"/></td></tr>
00317 <tr><td>Destination page title:</td><td><input type="text" name="destinationpagetitle" id="destinationpagetitle" value="{$page_values['page_title']}"/></td></tr>
00318 <tr><td>Destination page name:</td><td><input type="text" name="destinationpagename" id="destinationpagename" value="{$page_values['page_name']}"/></td></tr>
00319 <tr><td><label for="deleteoriginalpage">Delete original entry (Move instead of Copy)</label></td><td><input type="checkbox" name="deleteoriginalpage" id="deleteoriginalpage" checked="true" onclick="movecopyChange(this);"/></td></tr>
00320 <tr><td><label for="recusivelycopypage">Copy recursively? (in case of Copy)</label></td><td><input type="checkbox" name="recursivelycopypage" id="recursivelycopypage" disabled="true" /></td></tr>
00321 </table>
00322 Legend:
00323 <table cellpadding="2px" cellspacing="2px">
00324 <tr><td style="border: 1px solid black; width: 18px; background-color: #E8FFE8"></td><td>Accessible Items</td></tr>
00325 <tr><td style="border: 1px solid black; width: 18px; background-color: #FFE8E8"></td><td>Inaccessible Items</td></tr>
00326 </table>
00327 </td>
00328 <td valign="top">
00329 <div id="pathtree">Click to select destination path : $generatedTree</div>
00330 </td>
00331 </tr>
00332 </table>
00333
00334 <input type="submit" name="btnSubmit2" value="Submit" /> <input type="reset" name="btnReset" value="Reset" />
00335 </fieldset>
00336 </form>
00337
00338 MOVECOPY;
00339
00340
00341 global $pageFullPath;
00342 global $STARTSCRIPTS;
00343 $STARTSCRIPTS.="toggleMenuType();";
00344 $parentPath = ($pageId==0?'':'<a href="../+settings">Parent page link.</a>');
00345 $pageType=ucfirst($page_values['page_module']);
00346 $menuType=$page_values['page_menutype'];
00347 $menudepth=$page_values['page_menudepth'];
00348 $classictype="";
00349 $multidepthtype="";
00350 $completetype="";
00351 if($menuType=="classic") $classictype="selected";
00352 else if($menuType=="multidepth") $multidepthtype="selected";
00353 else $completetype="selected";
00354
00355 $row = mysql_fetch_array(mysql_query("SELECT `allowComments` FROM `article_content` WHERE `page_modulecomponentid` = '{$modulecomponentid}'"));
00356 $allowComments = $row['allowComments'] == 1 ? 'checked="checked" ' : '';
00357
00358 $formDisplay =<<<FORMDISPLAY
00359
00360 <div id="page_settings">
00361 <form name="pagesettings" action="./+settings&subaction=pagesettings&pageName=" method="POST" onsubmit="return settingsOnSubmit();">
00362 <script type="text/javascript" language="javascript">
00363 function settingsOnSubmit(){
00364 if(!document.getElementById("pagename").disabled) {
00365 if(document.getElementById("pagename").value=="") {alert("Please fill the page name."); return false;}
00366 }
00367 if(document.getElementById("pagetitle").value=="") { alert("Please fill the page title."); return false;}
00368 }
00369 function checkDelete(butt,fileName)
00370 {
00371 if(confirm('Are you sure you want to delete '+fileName+'?'))
00372 {
00373 butt.form.action+=fileName;
00374 butt.form.submit();
00375 }
00376 else return false;
00377 }
00378 function toggleSelTemplate2()
00379 {
00380 var obj=document.getElementsByName('page_template')[0];
00381 obj.disabled=(obj.disabled==true?false:true);
00382
00383 }
00384 function toggleMenuType()
00385 {
00386 var obj=document.getElementById('menutype');
00387 if(obj.value=="classic")
00388 {
00389 document.getElementById('showsiblingmenu').disabled=false;
00390 document.getElementById('menudepth').disabled=true;
00391 }
00392 else
00393 {
00394 document.getElementById('showsiblingmenu').disabled=true;
00395 document.getElementById('menudepth').disabled=false;
00396 }
00397 }
00398 </script>
00399
00400
00401 <br />
00402 <a name="topquicklinks"></a>
00403 <fieldset>
00404 <legend>{$ICONS['Page Settings']['small']}Page Settings</legend>
00405 <table class='iconspanel'>
00406 <tr>
00407 <td><a href='#pageinfoform'><div>{$ICONS['Page Information']['large']}<br/>Page Information</div></a></td>
00408 <td><a href='#childpageform'><div>{$ICONS['Create New Page']['large']}<br/>Create New Page</div></a></td>
00409 <td><a href='#copymovepageform'><div>{$ICONS['Copy or Move Page']['large']}<br/>Copy or Move Page</div></a></td>
00410 <td><a href='#inheritinfoform'><div>{$ICONS['Page Inherited Info']['large']}<br/>Page Inherited Information</div></a></td>
00411 </tr>
00412 </table>
00413 </fieldset>
00414
00415 <a name="pageinfoform"></a>
00416 <fieldset>
00417 <legend>{$ICONS['Page Information']['small']}Page Information</legend>
00418
00419 <table border="1" cellpadding="2px" cellspacing="2px">
00420 <tr><td>Page path:</td><td>$pageFullPath</td></tr>
00421 <tr><td>Page name:</td><td><input type="text" id="pagename" name="pagename" value="{$page_values['page_name']}" $modifiers/></td></tr>
00422 <tr><td>Page title:</td><td><input type="text" id="pagetitle" name="pagetitle" value="{$page_values['page_title']}" $modifiers/></td></tr>
00423 <tr><td >Page type: </td><td>$pageType</td></tr>
00424 <tr><td>Allow comments: </td><td><input type='checkbox' id='allowComments' name='allowComments' $allowComments></td></tr>
00425 $showInMenuBox
00426 <tr><td><label for="showheading">Show page heading</label></td><td><input type="checkbox" id="showheading" name="showheading" $showheading /></td></tr>
00427
00428 $showInSiteMap
00429
00430 </table>
00431 <fieldset><legend>Menu Settings</legend>
00432 <table border="1" cellpadding="2px" cellspacing="2px">
00433
00434
00435 <tr>
00436 <td><label for='menutype'>Menu type</label></td>
00437 <td>
00438 <select name="menutype" id="menutype" onchange="toggleMenuType();">
00439 <option value='classic' $classictype>Classic</option>
00440 <option value='complete' $completetype>Complete</option>
00441 <option value='multidepth' $multidepthtype>Multi-Depth</option>
00442 </select>
00443 </td>
00444 <td rowspan="4"><input type="checkbox" name='menustyle_propogate' value='yes' checked="checked" />Propogate Menu settings to all child pages <br /><br /> Menu Depth = -1 : Generate Complete Menu till the last child page.</td>
00445 <tr>
00446 <td><label for='showmenubar'>Show menu bar in page</label></td>
00447 <td><input type='checkbox' id='showmenubar' name='showmenubar' $showmenubar/></td>
00448 </tr><tr>
00449 <td><label for='showsiblingmenu'> Show sibling menu in page</label></td>
00450 <td><input type='checkbox' name='showsiblingmenu' id='showsiblingmenu' $showsiblingmenu /></td>
00451 </tr>
00452 <tr>
00453 <td><label for='menudepth'>Menu Depth</label></td>
00454 <td><input type='text' name='menudepth' id='menudepth' value='$menudepth'/> </td>
00455 </tr><tr>
00456 <td><label for='displayicon'> Show icon in menu </label></td>
00457 <td><input type='checkbox' name='displayicon' id='displayicon' $displayicon /></td>
00458 <td rowspan="4"><input type="checkbox" name='icon_propogate' value='yes' />Propogate Icon settings to all child pages </td>
00459 </tr>
00460
00461 </table>
00462 </fieldset>
00463 <fieldset><legend>Template</legend>
00464 FORMDISPLAY;
00465 if($allow_pagespecific_templates==1)
00466 {
00467 $formDisplay.=<<<FORMDISPLAY
00468 <table border="1" cellpadding="2px" cellspacing="2px">
00469
00470 <tr>
00471 <td>Use Default Template ?</td>
00472 <td><input type='checkbox' name='default_template' value='yes' onchange="toggleSelTemplate2()" $dbPageDefTemplate /></td>
00473 <td rowspan=2><input type="checkbox" name='template_propogate' value='yes' />Propogate Template setting to all child pages
00474 </td>
00475 </tr>
00476 <tr>
00477 <td>Select Template</td>
00478 <td><select name='page_template' $dbPageTemplateDisabled>
00479 FORMDISPLAY;
00480 for($i=0; $i<count($templates); $i++)
00481 {
00482 if($templates[$i]==$dbPageTemplate)
00483 $formDisplay.="<option value='".$templates[$i]."' selected >".ucwords($templates[$i])."</option>";
00484 else
00485 $formDisplay.="<option value='".$templates[$i]."' >".ucwords($templates[$i])."</option>";
00486 }
00487 $formDisplay.="
00488 </select>
00489
00490 </tr>
00491 </table>";
00492 }
00493 else $formDisplay.="Page-specific templates are disabled. Please enable it from Global Settings in Admin or click <a href='./+admin&subaction=global'>here</a>";
00494
00495 $formDisplay.=<<<FORMDISPLAY
00496 </fieldset>
00497
00498 <fieldset><legend>Child Pages</legend>
00499 Child pages: (Click on links for children's settings.) $parentPath <br />
00500 $childList
00501 </fieldset>
00502
00503
00504 <input type="submit" name="btnSubmit" value="Submit"/> <input type="reset" name="btnReset" value="Reset" />
00505 </fieldset>
00506 <a href="#topquicklinks">Top</a>
00507 </form>
00508 <br/><br/>
00509 $createdPageSettingsText
00510 <a href="#topquicklinks">Top</a>
00511 <br/><br/>
00512 $movecopyPageSettingsText
00513 <a href="#topquicklinks">Top</a>
00514 <br/><br/>
00515 $inheritedInfoText
00516 <a href="#topquicklinks">Top</a>
00517 </div>
00518 FORMDISPLAY;
00519 return $formDisplay;
00520 }
00521
00532 function updateSettings($pageId, $userId, $pageName, $pageTitle, $showInMenu, $showHeading, $showMenuBar, $showSiblingMenu, $visibleChildList,$visiblesChildList, $visibleiChildList, $page_template, $template_propogate, $menu_type, $menu_depth, $menu_propogate, $showInSiteMap, $displayicon,$icon_propogate) {
00533
00534 $updateQuery = '';
00535 $updates = array ();
00536 $errors = '';
00537 $pageId=escape($pageId);
00538 $userId=escape($userId);
00539 $pageName=escape($pageName);
00540 $pageTitle=escape($pageTitle);
00541 $page_template=escape($page_template);
00542
00543 if ($pageId == 0) {
00544 if (is_bool($showInMenu)) {if($template_propogate==true)
00545 {
00546 setChildTemplateFromParentID($pageId,$page_template);
00547 }
00548 $updates[] = '`page_displayinmenu` = ' . ($showInMenu == true ? 1 : 0);
00549 }
00550 }
00551
00552 if (is_bool($showMenuBar)) {
00553 $updates[] = '`page_displaymenu` = ' . ($showMenuBar == true ? 1 : 0);
00554 }
00555
00556 if (is_bool($showInSiteMap)) {
00557 $updates[] = '`page_displayinsitemap` = ' . ($showInSiteMap == true ? 1 : 0);
00558 }
00559
00560 if (is_bool($showHeading)) {
00561 $updates[] = '`page_displaypageheading` = ' . ($showHeading == true ? 1 : 0);
00562 }
00563 if (is_bool($displayicon)) {
00564 $updates[] = '`page_displayicon` = ' . ($displayicon == true ? 1 : 0);
00565 }
00566
00567 if ($pageId != 0 && isset ($pageName) && $pageName!="" && isset ($pageTitle) && $pageTitle!="") {
00568 if(preg_match('/^[a-zA-Z][\_a-zA-Z0-9]*$/', $pageName)) {
00569 $query = "SELECT `page_id` FROM `" . MYSQL_DATABASE_PREFIX . "pages` WHERE `page_name` = '$pageName' AND `page_id` != $pageId AND `page_parentid` = " .
00570 "(SELECT `page_parentid` FROM `" . MYSQL_DATABASE_PREFIX . "pages` WHERE `page_id` = $pageId)";
00571 $result = mysql_query($query);
00572 if (mysql_num_rows($result) > 0) {
00573 $errors = 'A page with the same name already exists in the folder.<br />';
00574 } else {
00575 $updates[] = "`page_name` = '$pageName'";
00576 }
00577 }
00578 else {
00579 $errors = 'Page name can contain only alphabets (a-z, and A-Z), digits (0-9) and underscores.';
00580 }
00581 $updates[] = "`page_title` = '$pageTitle'";
00582 }
00583
00584 if($page_template!=NULL)
00585 {
00586 $updates[] = "`page_template` = '$page_template'";
00587 }
00588 if($template_propogate==true)
00589 {
00590 setChildTemplateFromParentID($pageId,$page_template);
00591 }
00592 if($menu_propogate==true)
00593 {
00594 setChildMenuStyleFromParentID($pageId,$menu_type,$showMenuBar,$showSiblingMenu,$menu_depth);
00595 }
00596 if($icon_propogate==true)
00597 {
00598 setChildIconFromParentID($pageId,$displayicon);
00599 }
00600 if($menu_type!=NULL)
00601 {
00602 $updates[] = "`page_menutype` = '$menu_type'";
00603
00604 if(($menu_type=="multidepth" || $menu_type=="complete")&& $menu_depth!=NULL)
00605 {
00606 $updates[] = "`page_menudepth` = $menu_depth";
00607 }
00608 else if($menu_type=="classic" && is_bool($showSiblingMenu))
00609 {
00610 $updates[] = '`page_displaysiblingmenu` = ' . ($showSiblingMenu == true ? 1 : 0);
00611 }
00612 }
00613 if (count($updates) > 0) {
00614 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET ' . join($updates, ', ') . " WHERE `page_id` = $pageId;";
00615 mysql_query($updateQuery);
00616 }
00617
00618 if (is_array($visibleChildList) && count($visibleChildList) > 0) {
00619 $visibleChildList = "'" . join($visibleChildList, "', '") . "'";
00620 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayinmenu` = 1 WHERE ' .
00621 "`page_name` IN ($visibleChildList) AND `page_parentid` = $pageId AND `page_parentid` != `page_id`";
00622 mysql_query($updateQuery);
00623 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayinmenu` = 0 WHERE ' .
00624 "`page_name` NOT IN ($visibleChildList) AND `page_parentid` = $pageId AND `page_parentid` != `page_id`";
00625 } else {
00626 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayinmenu` = 0 WHERE ' .
00627 "`page_parentid` = $pageId AND `page_parentid` != `page_id`";
00628 }
00629 mysql_query($updateQuery);
00630 if (is_array($visiblesChildList) && count($visiblesChildList) > 0) {
00631 $visiblesChildList = "'" . join($visiblesChildList, "', '") . "'";
00632 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayinsitemap` = 1 WHERE ' .
00633 "`page_name` IN ($visiblesChildList) AND `page_parentid` = $pageId AND `page_parentid` != `page_id`";
00634 mysql_query($updateQuery);
00635 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayinsitemap` = 0 WHERE ' .
00636 "`page_name` NOT IN ($visiblesChildList) AND `page_parentid` = $pageId AND `page_parentid` != `page_id`";
00637 } else {
00638 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayinsitemap` = 0 WHERE ' .
00639 "`page_parentid` = $pageId AND `page_parentid` != `page_id`";
00640 }
00641 if(!$icon_propogate)
00642 {
00643 if (is_array($visibleiChildList) && count($visibleiChildList) > 0) {
00644 $visibleiChildList = "'" . join($visibleiChildList, "', '") . "'";
00645 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayicon` = 1 WHERE ' .
00646 "`page_name` IN ($visibleiChildList) AND `page_parentid` = $pageId AND `page_parentid` != `page_id`";
00647 mysql_query($updateQuery);
00648 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayicon` = 0 WHERE ' .
00649 "`page_name` NOT IN ($visibleiChildList) AND `page_parentid` = $pageId AND `page_parentid` != `page_id`";
00650 } else {
00651 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_displayicon` = 0 WHERE ' .
00652 "`page_parentid` = $pageId AND `page_parentid` != `page_id`";
00653 }
00654 }
00655 mysql_query($updateQuery);
00656
00657 return $errors;
00658 }
00659 function setChildTemplateFromParentID($parentId,$page_template)
00660 {
00661 $parentId=escape($parentId);
00662 $query= "SELECT `page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=".$parentId." AND NOT `page_id`=0";
00663 $result=mysql_query($query);
00664 while($row=mysql_fetch_row($result))
00665 {
00666 $childPageId=$row[0];
00667 $query="UPDATE `".MYSQL_DATABASE_PREFIX."pages` SET `page_template`='$page_template' WHERE `page_id`=$childPageId";
00668 mysql_query($query);
00669 setChildTemplateFromParentID($childPageId,$page_template);
00670 }
00671 }
00672 function setChildMenuStyleFromParentID($parentId,$menu_type,$showMenuBar,$showSiblingMenu,$menu_depth)
00673 {
00674 $parentId=escape($parentId);
00675 $menu_type=escape($menu_type);
00676 $menu_depth=escape($menu_depth);
00677 $bshowMenuBar=($showMenuBar==true)?1:0;
00678 $bshowSiblingMenu=($showSiblingMenu==true)?1:0;
00679 $query= "SELECT `page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=".$parentId." AND NOT `page_id`=0";
00680 $result=mysql_query($query);
00681 $menu="";
00682 $sibling="";
00683 if($menu_depth!=NULL)
00684 $menu=", `page_menudepth`=$menu_depth ";
00685
00686 if(is_bool($showSiblingMenu))
00687 $sibling=", `page_displaysiblingmenu`=$bshowSiblingMenu ";
00688
00689 while($row=mysql_fetch_row($result))
00690 {
00691 $childPageId=$row[0];
00692 $query="UPDATE `".MYSQL_DATABASE_PREFIX."pages` SET `page_displaymenu`=$bshowMenuBar, `page_menutype`='$menu_type' $sibling $menu WHERE `page_id`=$childPageId";
00693 mysql_query($query);
00694
00695 setChildMenuStyleFromParentID($childPageId,$menu_type,$showMenuBar,$showSiblingMenu,$menu_depth);
00696 }
00697 }
00698 function setChildIconFromParentID($parentId,$displayicon)
00699 {if($displayicon=='')$displayicon=0;
00700 $parentId=escape($parentId);
00701 $query= "SELECT `page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=".$parentId." AND NOT `page_id`=0";
00702 $result=mysql_query($query);
00703 while($row=mysql_fetch_row($result))
00704 {
00705 $childPageId=$row[0];
00706 $query="UPDATE `".MYSQL_DATABASE_PREFIX."pages` SET `page_displayicon`=$displayicon WHERE `page_id`=$childPageId";
00707 mysql_query($query);
00708 setChildIconFromParentID($childPageId,$displayicon);
00709 }
00710 }
00711
00712
00719 function pagesettings($pageId, $userId) {
00720
00721 $pageId=escape($pageId);
00722 $userId=escape($userId);
00723 global $sourceFolder;
00724 $chkquery="SELECT `value` FROM `".MYSQL_DATABASE_PREFIX."global` WHERE `attribute`='allow_pagespecific_template'";
00725 $row=mysql_fetch_row(mysql_query($chkquery));
00726 $allow_pagespecific_templates=$row[0]; // 0 if disabled, 1 if enabled
00727
00728 require_once($sourceFolder."/tree.lib.php");
00729
00730 if(isset($_GET['displayinfo'])) {
00731 displayinfo(safe_html($_GET['displayinfo']));
00732 }
00733 if(isset($_GET['displayerror'])) {
00734 displayerror(safe_html($_GET['displayerror']));
00735 }
00736 if (isset ($_GET['subaction'])) {
00737 if($_GET['subaction']=="pagesettings") {
00738
00739 $childPageName=escape($_GET['pageName']);
00740 if(isset($_POST['btnSubmit'])) {
00741 $visibleChildList = array();
00742 $visibleiChildList = array();
00743 $visiblesChildList = array();
00744 if(isset($_POST['menubarshowchildren']) && is_array($_POST['menubarshowchildren'])) {
00745 for($i = 0; $i < count($_POST['menubarshowchildren']); $i++) {
00746 $visibleChildList[] = escape($_POST['menubarshowchildren'][$i]);
00747 }
00748 }
00749 if(isset($_POST['sitemapshowchildren']) && is_array($_POST['sitemapshowchildren'])) {
00750 for($i = 0; $i < count($_POST['sitemapshowchildren']); $i++) {
00751 $visiblesChildList[] = escape($_POST['sitemapshowchildren'][$i]);
00752 }
00753 }
00754 if(isset($_POST['childrenshowicon']) && is_array($_POST['childrenshowicon'])) {
00755 for($i = 0; $i < count($_POST['childrenshowicon']); $i++) {
00756 $visibleiChildList[] = escape($_POST['childrenshowicon'][$i]);
00757 }
00758 }
00759
00760 $pageInfoRow = getPageInfo($pageId);
00761 if(isset($_POST['default_template']) || $allow_pagespecific_templates==0)
00762 $page_template=DEF_TEMPLATE;
00763 else $page_template=escape($_POST['page_template']);
00764
00765 $template_propogate=isset($_POST['template_propogate'])?true:false;
00766 $menu_propogate=isset($_POST['menustyle_propogate'])?true:false;
00767 $icon_propogate=isset($_POST['icon_propogate'])?true:false;
00768 $_POST['pagename']=isset($_POST['pagename'])?$_POST['pagename']:"";
00769 $_POST['pagetitle']=isset($_POST['pagetitle'])?$_POST['pagetitle']:"";
00770 $var = (isset($_POST['allowComments'])?1:0);
00771 $modulecomponentid = mysql_fetch_array(mysql_query("SELECT `page_modulecomponentid` FROM `" . MYSQL_DATABASE_PREFIX . "pages` WHERE `page_id` = '{$pageId}'"));
00772 $modulecomponentid = $modulecomponentid['page_modulecomponentid'];
00773 mysql_query("UPDATE `article_content` SET `allowComments` = $var WHERE `page_modulecomponentid` = '{$modulecomponentid}'");
00774 $updateErrors = updateSettings($pageId, $userId, escape($_POST['pagename']), escape($_POST['pagetitle']), isset($_POST['showinmenu']), isset($_POST['showheading']), isset($_POST['showmenubar']), isset($_POST['showsiblingmenu']), $visibleChildList,$visiblesChildList,$visibleiChildList, $page_template, $template_propogate, escape($_POST['menutype']),isset($_POST['menudepth'])?escape($_POST['menudepth']):NULL,$menu_propogate,isset($_POST['showinsitemap']),isset($_POST['displayicon']),$icon_propogate);
00775
00776
00777
00778 $pageInfoRow = getPageInfo($pageId);
00779 if($updateErrors == '') {
00780 //disconnect();
00781 //header("Location: ../{$pageInfoRow['page_name']}+settings&displayinfo=".rawurlencode('Page settings updated successfully!'));
00782 displayinfo("Page settings updated successfully!");
00783 }
00784 else {
00785 //disconnect();
00786 //header("Location: ../{$pageInfoRow['page_name']}+settings&displayerror=".rawurlencode($updateErrors));
00787 displayerror("Could not update page settings : ".$updateErrors);
00788 }
00789 }
00790 if(isset($_POST['moveUp'])||isset($_POST['moveDn'])) {
00791 if(isset($_POST['moveUp']))
00792 {
00793 $comparison="<=";
00794 $sortOrder="DESC";
00795 }
00796 else
00797 {
00798 $comparison=">=";
00799 $sortOrder="ASC";
00800 }
00801 $childPageName=escape($_GET['pageName']);
00802 $query="SELECT `page_menurank`,`page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=$pageId AND `page_name`='$childPageName' AND `page_id` != $pageId ORDER BY `page_menurank` $sortOrder LIMIT 0,1 ";
00803 $result=mysql_query($query);
00804 $temp=mysql_fetch_assoc($result);
00805 $childPageId=$temp['page_id'];
00806 $query="SELECT `page_menurank`,`page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=$pageId AND `page_menurank` $comparison(SELECT `page_menurank` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=$pageId AND `page_name`='$childPageName') AND `page_id` != $childPageId AND `page_parentid` != `page_id` ORDER BY `page_menurank` $sortOrder LIMIT 0,1 ";
00807 $result=mysql_query($query) or displayinfo(mysql_error());
00808 if(mysql_num_rows($result)==0){
00809 displayerror("You cannot move up/down the first/last page in menu");
00810
00811 }
00812 $tempTarg=mysql_fetch_assoc($result);
00813 $query="SELECT `page_menurank`,`page_parentid` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_id`=$childPageId";
00814 $result=mysql_query($query);
00815 $tempSrc=mysql_fetch_assoc($result);
00816 if(($tempTarg['page_menurank'])==($tempSrc['page_menurank']))
00817 {
00818 $query="UPDATE `".MYSQL_DATABASE_PREFIX."pages` SET `page_menurank` = `page_id` WHERE `page_parentid`=$tempSrc[page_parentid]";
00819 mysql_query($query);
00820 displayinfo("Error in menu rank corrected. Please reorder the pages");
00821 }
00822 else{
00823 $query="UPDATE `".MYSQL_DATABASE_PREFIX."pages` SET `page_menurank` =$tempSrc[page_menurank] WHERE `page_id` = $tempTarg[page_id] ";
00824 mysql_query($query);
00825 $query="UPDATE `".MYSQL_DATABASE_PREFIX."pages` SET `page_menurank` =$tempTarg[page_menurank] WHERE `page_id` = $childPageId ";
00826 mysql_query($query);
00827 }
00828 }
00829 if(isset($_POST['deletePage']))
00830 {
00831 if(isset($_GET['pageName']) || $_GET['pageName']=="") {
00832 $childPageName=escape($_GET['pageName']);
00833 $query="SELECT `page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=$pageId AND `page_name`='$childPageName'";
00834 $result=mysql_query($query);
00835 $temp=mysql_fetch_assoc($result);
00836 $childPageId=$temp['page_id'];
00837 if(deletePage($childPageId,$userId))
00838 displayinfo("Page deleted successfully.");
00839 }
00840 else
00841 displayerror("Not enough information available");
00842 }
00843 }
00844 elseif($_GET['subaction']=="move") {
00845
00846 if ($_POST['parentpagepath'] == '')
00847 $updateErrors = "Null page id";
00848 else {
00849 global $sourceFolder;
00850 require_once($sourceFolder."/parseurl.lib.php");
00851 $pageIdArray = array();
00852 $parentId = parseUrlReal(escape($_POST['parentpagepath']), $pageIdArray);
00853 $updateErrors = move_page($userId,$pageId, $parentId, escape($_POST['destinationpagetitle']), escape($_POST['destinationpagename']),isset( $_POST['deleteoriginalpage']));
00854 }
00855
00856 if ($updateErrors != '') {
00857 displayerror($updateErrors);
00858 }
00859 }
00860 elseif($_GET['subaction']=="create") {
00870 if(isset($_POST['childpagetype'])&&isset($_POST['childpagename'])) {
00871
00872 if(isset($_POST['default_template']) || $allow_pagespecific_templates==0)
00873 $page_template=DEF_TEMPLATE;
00874 else $page_template=escape($_POST['page_template']);
00875
00876 $maxquery="SELECT MAX( page_id ) AS MAX FROM ".MYSQL_DATABASE_PREFIX."pages";
00877 $maxqueryresult = mysql_query($maxquery);
00878 $maxqueryrow = mysql_fetch_array($maxqueryresult);
00879 $maxpageid = $maxqueryrow[0]+1;
00880
00881 $alreadyexistquery="SELECT page_name FROM ".MYSQL_DATABASE_PREFIX."pages WHERE page_parentid='$pageId' AND page_name='".escape($_POST['childpagename'])."'";
00882 $alreadyexistqueryresult = mysql_query($alreadyexistquery);
00883 $alreadyexistquerynumrows = mysql_num_rows($alreadyexistqueryresult);
00884 $childPageName = str_replace(' ', '_', escape(strtolower($_POST['childpagename'])));
00885 $childPageTitle = escape($_POST['childpagename']);
00886 if(!preg_match('/^[a-z][\_a-z0-9]*$/', $childPageName))
00887 displayerror("Invalid page name.");
00888 elseif($alreadyexistquerynumrows>=1)
00889 displayerror("A page with the given name already exists at this location.");
00890 elseif($_POST['childpagetype']=="menu") {
00891 $menuquery = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id` ,`page_name` ,`page_parentid` ,`page_title` ,`page_module` ,`page_modulecomponentid` , `page_template`, `page_menurank`) " .
00892 "VALUES ('$maxpageid', '".$childPageName."', '$pageId', '".$childPageTitle."', '".escape($_POST['childpagetype'])."', '0', '$page_template', '$maxpageid')";
00893 mysql_query($menuquery);
00894 if (mysql_affected_rows() != 1)
00895 displayerror( 'Unable to create a new page');
00896 else displayinfo("Menu successfully created! <a href='./$childPageName+settings'>Click here</a> to go to its page-settings and start creating links in the menu.");
00897 }
00898 elseif($_POST['childpagetype']=="link") {
00899 global $sourceFolder;
00900 require_once($sourceFolder."/parseurl.lib.php");
00901 $pageIdArray = array();
00902 $parentId = parseUrlReal(escape($_POST['childpagelink']), $pageIdArray);
00903 if(getPermissions($userId, $parentId, "settings")) {
00904 if($_POST['linkselect']=="Same Tab"){
00905 $parentId = parseUrlReal(escape($_POST['childpagelink']), $pageIdArray);
00906 $linkquery = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id` ,`page_name` ,`page_parentid` ,`page_title` ,`page_module` ,`page_modulecomponentid` , `page_template`, `page_menurank`, `page_openinnewtab`) " .
00907 "VALUES ('$maxpageid', '$childPageName', '$pageId', '$childPageTitle', '".escape($_POST['childpagetype'])."', '$parentId', '$page_template', '$maxpageid', '0')";
00908 mysql_query($linkquery);
00909 if (mysql_affected_rows() != 1)
00910 displayerror( 'Unable to create a new page');
00911 }
00912 if ($_POST['linkselect']=="New Tab"){
00913 $parentId = parseUrlReal(escape($_POST['childpagelink']), $pageIdArray);
00914 $linkquery = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id` ,`page_name` ,`page_parentid` ,`page_title` ,`page_module` ,`page_modulecomponentid` , `page_template`, `page_menurank`, `page_openinnewtab`) " .
00915 "VALUES ('$maxpageid', '$childPageName', '$pageId', '$childPageTitle', '".escape($_POST['childpagetype'])."', '$parentId', '$page_template', '$maxpageid', '1')";
00916 mysql_query($linkquery);
00917 if (mysql_affected_rows() != 1)
00918 displayerror( 'Unable to create a new page');
00919 }
00920 }
00921 else
00922 displayerror("Not enough permission to create a link for that location.");
00923 }
00924 elseif($_POST['childpagetype']=="external") {
00925 $extquery="SELECT MAX( page_modulecomponentid ) AS MAX FROM ".MYSQL_DATABASE_PREFIX."external";
00926 $extqueryresult = mysql_query($extquery);
00927 $extqueryrow = mysql_fetch_array($extqueryresult);
00928 $extpageid = $extqueryrow[0]+1;
00929 $query="INSERT INTO `".MYSQL_DATABASE_PREFIX."external` (`page_modulecomponentid`,`page_extlink`) " .
00930 "VALUES('$extpageid','".escape($_POST['externallink'])."')";
00931 if(!($result = mysql_query($query))) {
00932 displayerror("Unable to create an external link.");
00933 return false;
00934 }
00935
00936 if($_POST['linkselectex']=="New Tab")
00937 {
00938 $linkquery = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id` ,`page_name` ,`page_parentid` ,`page_title` ,`page_module` ,`page_modulecomponentid` , `page_template`, `page_menurank`,`page_openinnewtab`) " .
00939 "VALUES ('$maxpageid', '".escape($_POST['childpagename'])."', '$pageId', '".escape(ucfirst(escape($_POST['childpagename'])))."', '".escape($_POST['childpagetype'])."', '$extpageid', '$page_template' ,'$maxpageid','1')";
00940
00941 mysql_query($linkquery);
00942 if (mysql_affected_rows() != 1)
00943 {
00944 displayerror( 'Unable to create a new page');
00945 return false;
00946 }
00947 }
00948 else {
00949
00950 $linkquery = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id` ,`page_name` ,`page_parentid` ,`page_title` ,`page_module` ,`page_modulecomponentid` , `page_template`, `page_menurank`,`page_openinnewtab`) " .
00951 "VALUES ('$maxpageid', '".escape($_POST['childpagename'])."', '$pageId', '".escape(ucfirst(escape($_POST['childpagename'])))."', '".escape($_POST['childpagetype'])."', '$extpageid', '$page_template' ,'$maxpageid','0')";
00952 mysql_query($linkquery);
00953 if (mysql_affected_rows() != 1)
00954 {
00955 displayerror( 'Unable to create a new page');
00956 return false;
00957 }
00958 }
00959 displayinfo("External link has been created!");
00960 }
00961 else {
00962 $moduleType = escape($_POST['childpagetype']);
00963 global $sourceFolder;
00964 global $moduleFolder;
00965 require_once($sourceFolder."/".$moduleFolder."/".$moduleType.".lib.php");
00966 $page = new $moduleType();
00967 $newModuleComponentId=-1;
00968 $page->createModule($newModuleComponentId);
00969 if($newModuleComponentId==-1)
00970 displayerror("Unable to create a new page of type $moduleType");
00971 else {
00972 $createquery = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id` ,`page_name` ,`page_parentid` ,`page_title` ,`page_module` ,`page_modulecomponentid` , `page_template`, `page_menurank`) " .
00973 "VALUES ('$maxpageid', '$childPageName', '$pageId', '$childPageTitle', '".escape($_POST['childpagetype'])."', '$newModuleComponentId', '$page_template', '$maxpageid')";
00974 mysql_query($createquery);
00975 if (mysql_affected_rows() != 1)
00976 displayerror( 'Unable to create a new page.');
00977 }
00978 }
00979 }
00980 else
00981 displayerror("One or more parameters not set.");
00982 }
00983 else if($_GET['subaction'] == 'editinheritedinfo') {
00984 updatePageInheritedInfo($pageId, escape($_POST['txtInheritedInfo']));
00985 }
00986 }
00987 if ($settingsForm = getSettingsForm($pageId, $userId))
00988 return $settingsForm;
00989 else {
00990 displayerror('Could not find page settings for the requested page.');
00991 return '';
00992 }
00993 }
00994
00995
00996
01007 function deletePage($pageId,$userId){
01008 $query="SELECT `page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=$pageId AND `page_id`!=`page_parentid` ";
01009 $result=mysql_query($query);
01010 $deleteAll = true;
01011 while($temp=mysql_fetch_assoc($result))
01012 {
01013
01014 if(getPermissions($userId,$pageId,"settings"))
01015 $deleteAll = deletePage($temp['page_id'],$userId);
01016 else
01017 $deleteAll = false;
01018 }
01019
01020 if($deleteAll == true) {
01021 $pageInfo = getPageInfo($pageId);
01022 $moduleType = $pageInfo['page_module'];
01023 $deleted = true;
01024 if($moduleType!="menu" && $moduleType != "link") {
01025 if($moduleType!="external") {
01026 global $sourceFolder;
01027 global $moduleFolder;
01028 require_once($sourceFolder."/".$moduleFolder."/".$moduleType.".lib.php");
01029 $page = new $moduleType();
01030 $deleted = $page->deleteModule($pageInfo['page_modulecomponentid']);
01031 if(!$deleted)
01032 displayerror("There was an error in deleting the page at module level.");
01033 }
01034 else {
01035 $query="DELETE FROM `".MYSQL_DATABASE_PREFIX."external` WHERE `page_modulecomponentid`=".$pageInfo['page_modulecomponentid'];
01036 mysql_query($query);
01037 if (mysql_affected_rows()>0) $deleted=true;
01038 else {
01039 $deleted=false;
01040 displayerror("There was an error in deleting the external link");
01041 }
01042
01043 }
01044 }
01045 //query to delete page row itself
01046 if($deleted) {
01047 $query="DELETE FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_id`=$pageId";
01048 mysql_query($query);
01049 if (mysql_affected_rows()>0) return true;
01050 else return false;
01051 }
01052 else return false;
01053 }
01054 else {
01055 displayerror("You don't have permission to delete one or more of the children pages.");
01056 return false;
01057 }
01058
01059
01060
01061 }
01062
01063 function generateDirectoryTree($userId, $module, $action, $pageId = 0) {
01064 global $sourceFolder;
01065 require_once("$sourceFolder/tree.lib.php");
01066 $dirTree = new DirectoryTree($pageId, $userId, $action, $module);
01067
01068 return $dirTree;
01069 }
01070
01071
01072
01073 function move_page($userId,$pageId, $parentId, $pagetitle,$pagename,$deleteoriginalentry) {
01080 //var_dump($str);
01081 $query = "SELECT `page_id` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid` = $parentId AND `page_name` = '$pagename'";
01082 $result = mysql_query($query);
01083 if(mysql_num_rows($result) > 0)
01084 return "Error: There exists a page with the same name in the destination path.";
01085 $parentInfo = getPageInfo($parentId);
01086 if(!getPermissions($userId, $parentId, "settings"))
01087 return "Error: You do not have permission to copy or move to the destination page.";
01088 if($parentInfo['page_module']=="link")
01089 return "Error: Cannot move or copy a page to a page of the type link.";
01090 $str = array();
01091 parseUrlDereferenced($parentId,$str);
01092 $arrlen = count($str);
01093 for($i = 0; $i<count($str);$i++){
01094 if($pageId==$str[$i])
01095 return 'Error : You are trying to copy a parent to a child page. This will create a loop';
01096 }
01097 //if the deleteoriginal entry is set then the page is MOVED from the original location to the new location.
01098 if ($deleteoriginalentry == true) {
01099 if ($pageId != 0) {
01100 $query = "UPDATE `" . MYSQL_DATABASE_PREFIX . "pages` SET `page_parentid` = '" . $parentId . "' , `page_title` = '" . $pagetitle . "' , `page_name` = '" . $pagename . "' WHERE `page_id` =$pageId ;";
01101 $result = mysql_query($query);
01102 if (mysql_affected_rows() != 1)
01103 return 'Unable to perform the required action';
01104 global $urlRequestRoot;
01105 header("location:".$urlRequestRoot.getPagePath($pageId)."+settings&displayinfo=".rawurlencode("The page has been successfully moved."));
01106 } else
01107 return 'Error : You do not have permission to move the root page.';
01108 }
01109 //if the deleteoriginal entry is not set then the page is COPIED from the original location to the new location.
01110 else {
01111 $recursive= false;
01112 if(isset($_POST['recursivelycopypage'])) $recursive = true;
01113 if(copyPage($userId,$pageId,$parentId,$pagetitle,$pagename,$recursive))
01114 displayinfo("Page copied successfully!");
01115 }
01116 }
01117
01118 function copyPage($userId,$pageId,$parentId, $pagetitle,$pagename,$recursive) {
01119 if(!getPermissions($userId, $parentId, "settings"))
01120 return false;
01121 $parentInfo = getPageInfo($parentId);
01122 $parentmoduleType =$parentInfo['page_module'];
01123 if($parentmoduleType=="link")
01124 return false;
01125 $pageInfo = getPageInfo($pageId);
01126 $moduleType =$pageInfo['page_module'];
01127 if($moduleType=="link")
01128 return false;
01129 $newmodulecomponentid = 0;
01130 if($moduleType!="menu" && $moduleType!="external") {
01131 global $sourceFolder;
01132 global $moduleFolder;
01133 require_once($sourceFolder."/".$moduleFolder."/".$moduleType.".lib.php");
01134 $page = new $moduleType();
01135 $newmodulecomponentid=$page->copyModule($pageInfo['page_modulecomponentid']);
01136 if($newmodulecomponentid===false) {
01137 displayerror("Unable to copy the page ".$pageId);
01138 return false;
01139 }
01140 }
01141 if($moduleType=="external"){
01142 $extquery="SELECT MAX( page_modulecomponentid ) AS MAX FROM ".MYSQL_DATABASE_PREFIX."external";
01143 $extqueryresult = mysql_query($extquery);
01144 $extqueryrow = mysql_fetch_array($extqueryresult);
01145 $extpageid = $extqueryrow[0]+1;
01146 $linkquery="SELECT page_extlink FROM ".MYSQL_DATABASE_PREFIX."external WHERE page_modulecomponentid=".$pageInfo['page_modulecomponentid'];
01147 $linkqueryresult = mysql_query($linkquery);
01148 $linkqueryrow = mysql_fetch_array($linkqueryresult);
01149 $link = $linkqueryrow[0];
01150
01151 $query="INSERT INTO `".MYSQL_DATABASE_PREFIX."external` (`page_modulecomponentid`,`page_extlink`) " .
01152 "VALUES('$extpageid','$link')";
01153 if(!($result = mysql_query($query))) {
01154 displayerror("Unable to copy the page.");
01155 return false;
01156 }
01157 }
01158
01159 $maxquery="SELECT MAX( page_id ) AS MAX FROM ".MYSQL_DATABASE_PREFIX."pages";
01160 $maxqueryresult = mysql_query($maxquery);
01161 $maxqueryrow = mysql_fetch_array($maxqueryresult);
01162 $maxpageid = $maxqueryrow[0]+1;
01163
01164 $query = "INSERT INTO `".MYSQL_DATABASE_PREFIX."pages` (`page_id`,`page_name`,`page_title`,`page_parentid`,`page_module`,`page_modulecomponentid`,`page_displayinmenu`, `page_displaymenu`, `page_displaysiblingmenu`,`page_menurank`) " .
01165 "VALUES('$maxpageid','$pagename','$pagetitle','$parentId','{$pageInfo['page_module']}','$newmodulecomponentid','{$pageInfo['page_displayinmenu']}','{$pageInfo['page_displaymenu']}','{$pageInfo['page_displaysiblingmenu']}','$maxpageid')";
01166 if(!($result = mysql_query($query))) {
01167 displayerror("Unable to copy the page.");
01168 return false;
01169 }
01170 if($recursive) {
01171 $childrenquery="SELECT `page_id`,`page_name`,`page_title` FROM `".MYSQL_DATABASE_PREFIX."pages` WHERE `page_parentid`=$pageId ";
01172 $childrenresult=mysql_query($childrenquery);
01173 while($temp=mysql_fetch_assoc($childrenresult))
01174 {
01175 copyPage($userId,$temp['page_id'],$maxpageid, $temp['page_title'],$temp['page_name'],$recursive);
01176 }
01177 }
01178 return true;
01179 }
01180
01181 function updatePageInheritedInfo($pageId, $inheritedInfo) {
01182 $prevInheritedInfo = '';
01183 $inheritedPageId = getPageInheritedInfo($pageId, $prevInheritedInfo);
01184
01185 if($inheritedPageId == $pageId) {
01186 if($inheritedInfo == '') {
01187 $deleteQuery = 'DELETE FROM `' . MYSQL_DATABASE_PREFIX . 'inheritedinfo` WHERE `page_inheritedinfoid` = (SELECT `page_inheritedinfoid` FROM `' . MYSQL_DATABASE_PREFIX . 'pages` WHERE `page_id` = ' . $pageId . ')';
01188 mysql_query($deleteQuery);
01189 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_inheritedinfoid` = -1 WHERE `page_id` = ' . $pageId;
01190 if(!mysql_query($updateQuery))
01191 displayerror('Could not remove the current page\'s inherited information. Database error.');
01192 }
01193 else {
01194 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'inheritedinfo` SET `page_inheritedinfocontent` = \'' . $inheritedInfo . '\' WHERE `page_inheritedinfoid` = (SELECT `page_inheritedinfoid` FROM `' . MYSQL_DATABASE_PREFIX . 'pages` WHERE `page_id` = ' . $pageId . ')';
01195 if(!mysql_query($updateQuery))
01196 displayerror('Could not update the current page\'s inherited information. Database error.');
01197 }
01198 }
01199 else if($inheritedInfo != '' && $inheritedInfo != $prevInheritedInfo) {
01201 $newIdQuery = 'SELECT MAX(`page_inheritedinfoid`) FROM `' . MYSQL_DATABASE_PREFIX . 'inheritedinfo`';
01202 $newIdResult = mysql_query($newIdQuery);
01203 $newIdRow = mysql_fetch_row($newIdResult);
01204 $newId = 1;
01205 if(!is_null($newIdRow[0]))
01206 $newId = $newIdRow[0] + 1;
01207
01208 $insertQuery = 'INSERT INTO `' . MYSQL_DATABASE_PREFIX . 'inheritedinfo`(`page_inheritedinfoid`, `page_inheritedinfocontent`) VALUES (' . $newId . ', \'' . $inheritedInfo . '\')';
01209 if(!mysql_query($insertQuery))
01210 displayerror('Could not add inherited information to the current page. Database error.');
01211 $updateQuery = 'UPDATE `' . MYSQL_DATABASE_PREFIX . 'pages` SET `page_inheritedinfoid` = ' . $newId . ' WHERE `page_id` = ' . $pageId;
01212 if(!mysql_query($updateQuery))
01213 displayerror('Could not add inherited information to the current page. Database error.');
01214 }
01215 }
01216
01217 function getPageInheritedInfo($pageId, &$inheritedInfoBuf) {
01218 if($pageId < 0) return $pageId;
01219
01220 $curPageId = $pageId;
01221 $inheritedInfoBuf = '';
01222
01223 do {
01224 $inheritedInfoIdQuery = 'SELECT `page_inheritedinfoid`, `page_parentid` FROM `' . MYSQL_DATABASE_PREFIX . 'pages` WHERE `page_id` = ' . $curPageId;
01225 $inheritedInfoIdResult = mysql_query($inheritedInfoIdQuery);
01226 if(!$inheritedInfoIdResult) echo mysql_error() . '<br />' . $inheritedInfoIdQuery . '<br />';
01227 $inheritedInfoIdRow = mysql_fetch_row($inheritedInfoIdResult);
01228 if(!is_null($inheritedInfoIdRow[0]) && $inheritedInfoIdRow[0] >= 0) {
01229 $inheritedInfoQuery = 'SELECT `page_inheritedinfocontent` FROM `' . MYSQL_DATABASE_PREFIX . 'inheritedinfo` WHERE `page_inheritedinfoid` = ' . $inheritedInfoIdRow[0];
01230 $inheritedInfoResult = mysql_query($inheritedInfoQuery);
01231 $inheritedInfoBuf = mysql_fetch_row($inheritedInfoResult);
01232 $inheritedInfoBuf = $inheritedInfoBuf[0];
01233 return $curPageId;
01234 }
01235 if($curPageId == 0) $curPageId = -1;
01236 else $curPageId = $inheritedInfoIdRow[1];
01237 } while($curPageId >= 0);
01238
01239 return -1;
01240 }
01241