예제 #1
0
 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);
 }
예제 #2
0
    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!'));
    }
예제 #3
0
$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();
예제 #4
0
파일: install.php 프로젝트: rratcliffe/fsen
        }
        $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);