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!')); }
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/>';