예제 #1
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!'));
    }
예제 #2
0
파일: install.php 프로젝트: rratcliffe/fsen
 if ($d['domain_handle'] == 'document') {
     $domain_page = $localized_home_page;
 } else {
     $domain_page = ProjectInfo::addDomainPage($project_id, $localized_home_page, $d['domain_handle'], $d['domain_name'], $d['domain_desc']);
     echo '	Added domain page for ';
     echo $d['domain_handle'];
     echo '<br/>';
     flush();
     ob_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/>';