private function add_blog_zone_page($db, $user_name, $nick_name, $doc_lang) { $all_blogs_page = Page::getByPath("/{$doc_lang}/blog"); if ($all_blogs_page->getCollectionID() == false) { $this->set('error', t('System error: no blog homepage!')); return false; } $page_desc = t('Blogs of %s', $nick_name); $sys_project_id = SYSTEM_PROJECT_SHORTNAME . '-' . $doc_lang; $db->Execute("INSERT IGNORE fsen_project_doc_volume_parts\n (project_id, domain_handle, volume_handle, part_handle, part_name, part_desc, required, display_order)\nVALUES (?, 'document', 'blog', ?, ?, ?, 1, ?)", array($sys_project_id, $user_name, $nick_name, $page_desc, time())); $page = Page::getByPath("/{$doc_lang}/blog/{$user_name}"); if ($page->getCollectionID() > 0) { return true; } return ProjectInfo::addPartPage($sys_project_id, 'document', $all_blogs_page, $user_name, $nick_name, $page_desc); }
public function add_new_doc_part() { if (!fse_try_to_login()) { header("location:/fse_login"); return; } $project_id = $this->post('projectID'); $domain_handle = $this->post('domainHandle'); $volume_handle = $this->post('volumeHandle'); $new_volume_name = $this->post('newVolumeName'); $new_volume_handle = $this->post('newVolumeHandle'); $new_volume_desc = $this->post('newVolumeDesc'); $new_part_name = $this->post('newPartName'); $new_part_handle = $this->post('newPartHandle'); $new_part_desc = $this->post('newPartDesc'); if (!in_array($domain_handle, $this->mDomainList)) { $this->set('error', t('Bad domain handle!')); return; } if (!preg_match("/^[a-z0-9_\\-]{4,64}\$/", $project_id)) { $this->set('error', t('Invalid project identifier!')); return; } $project_home_page = ProjectInfo::getProjectPage($project_id, 'home'); if (project_home_page == false) { $this->set('error', t('No such project!')); return; } $project_info = ProjectInfo::getBasicInfo($project_id); if ($project_info['fse_id'] != $_SESSION['FSEInfo']['fse_id']) { $this->set('error', t('You are not the owner of the project!')); return; } $txt = Loader::helper('text'); $db = Loader::db(); if ($volume_handle == 'new') { if (!preg_match("/^[a-z0-9\\-]{3,16}\$/", $new_volume_handle)) { $this->set('error', t('Bad volume handle!')); return; } if (!preg_match("/^.{1,64}\$/", $new_volume_name)) { $this->set('error', t('Bad volume name!')); return; } $new_volume_handle = $txt->urlify($new_volume_handle); $res = $db->Execute('INSERT IGNORE fsen_project_doc_volumes (project_id, domain_handle, volume_handle, volume_name, volume_desc, required, display_order) VALUES (?, ?, ?, ?, ?, ?, ?)', array($project_id, $domain_handle, $new_volume_handle, $new_volume_name, $new_volume_desc, 0, time())); if ($db->Affected_Rows() == 0) { $this->set('error', t('Failed to add new volume!')); return; } $volume_handle = $new_volume_handle; } if ($domain_handle != 'home') { $domain_home = ProjectInfo::getProjectPage($project_id, $domain_handle); } else { $domain_home = $project_home_page; } if ($domain_home == false) { $this->set('error', t('No domain page for this project!')); return; } $volume_page = ProjectInfo::addVolumePage($project_id, $domain_home, $domain_handle, $volume_handle, $new_volume_name, $new_volume_desc); if (!$volume_page instanceof Page) { $this->set('error', t('Failed to find/create volume page!')); return; } if (!preg_match("/^[a-z0-9\\-]{3,16}\$/", $new_part_handle)) { $this->set('error', t('Bad part handle!')); return; } if (!preg_match("/^.{1,64}\$/", $new_part_name)) { $this->set('error', t('Bad part name!')); return; } $new_part_handle = $txt->urlify($new_part_handle); $res = $db->Execute('INSERT IGNORE fsen_project_doc_volume_parts (project_id, domain_handle, volume_handle, part_handle, part_name, part_desc, required, display_order) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', array($project_id, $domain_handle, $volume_handle, $new_part_handle, $new_part_name, $new_part_desc, 0, time())); if ($db->Affected_Rows() == 0) { $this->set('error', t('Failed to add new part!')); return; } $part_page = ProjectInfo::addPartPage($project_id, $domain_handle, $volume_page, $new_part_handle, $new_part_name, $new_part_desc); if (!$part_page instanceof Page) { $this->set('error', t('Failed to create part page!')); return; } ProjectInfo::onUpdateProjectVolumeInfo($project_id, $domain_handle, $volume_handle); $this->set('success', t('Success to add new part!')); }
$display_order = 100; foreach ($fses as $fse) { echo '=> Adding blog home page for ' . $fse['user_name'] . '...'; if ($fse['def_locale'] == 'zh_CN') { $doc_lang = 'zh'; $all_blogs_page = $zh_blogs_page; $page_desc = $fse['nick_name'] . '的博客'; } else { $doc_lang = 'en'; $all_blogs_page = $en_blogs_page; $page_desc = 'Blogs of ' . $fse['nick_name']; } $sys_project_id = SYSTEM_PROJECT_SHORTNAME . '-' . $doc_lang; $db->Execute("INSERT IGNORE fsen_project_doc_volume_parts\n (project_id, domain_handle, volume_handle, part_handle, part_name, part_desc, required, display_order)\nVALUES (?, 'document', 'blog', ?, ?, ?, 1, ?)", array($sys_project_id, $fse['user_name'], $fse['nick_name'], $page_desc, $display_order)); $page = ProjectInfo::getProjectPage($sys_project_id, 'document', 'blog', $fse['user_name']); if ($page == false) { $page = ProjectInfo::addPartPage($sys_project_id, 'document', $all_blogs_page, $fse['user_name'], $fse['nick_name'], $page_desc); echo 'Created.<br/>'; } else { echo 'Existed.<br/>'; } flush(); ob_flush(); $display_order += 1; // use system default for blog page $page->update(array('cCacheFullPageContent' => -1, 'cCacheFullPageContentOverrideLifetime' => '0', 'cCacheFullPageContentLifetimeCustom' => 0)); $page = Page::getByPath("/{$doc_lang}/engineer/" . $fse['user_name']); // short cache for the personal page. $page->update(array('cCacheFullPageContent' => 1, 'cCacheFullPageContentOverrideLifetime' => 'custom', 'cCacheFullPageContentLifetimeCustom' => 10)); } Cache::flush();
} $volumes = $db->getAll("SELECT * FROM fsen_project_doc_volumes\n\tWHERE project_id=? AND domain_handle=? ORDER BY display_order", array($project_id, $d['domain_handle'])); foreach ($volumes as $v) { $volume_path = ProjectInfo::assemblePath($project_id, $d['domain_handle'], $v['volume_handle']); $volume_page = Page::getByPath($volume_path); if ($volume_page->getCollectionID() == false) { $volume_page = ProjectInfo::addVolumePage($project_id, $domain_page, $d['domain_handle'], $v['volume_handle'], $v['volume_name'], $v['volume_desc']); echo ' Added volume page for '; echo $v['volume_handle']; echo '<br/>'; flush(); ob_flush(); } $parts = $db->getAll("SELECT * FROM fsen_project_doc_volume_parts\nWHERE project_id=? AND domain_handle=? AND volume_handle=? ORDER BY display_order", array($project_id, $d['domain_handle'], $v['volume_handle'])); foreach ($parts as $p) { $part_path = ProjectInfo::assemblePath($project_id, $d['domain_handle'], $v['volume_handle'], $p['part_handle']); $part_page = Page::getByPath($volume_path); if ($part_page->getCollectionID() == false) { $part_page = ProjectInfo::addPartPage($project_id, $d['domain_handle'], $volume_page, $p['part_handle'], $p['part_name'], $p['part_desc']); echo ' Add part page for '; echo $p['part_handle']; echo '<br/>'; flush(); ob_flush(); } } } } } Cache::flush(); exit(0);