Exemplo n.º 1
0
 public function change_doc_part_name_desc()
 {
     $project_id = $this->post('projectID');
     $domain_handle = $this->post('itemDomain');
     $volume_handle = $this->post('itemVolume');
     $part_handle = $this->post('itemPart');
     $item_type = $this->post('itemType');
     $item_value = $this->post('itemValue');
     $json = Loader::helper('json');
     $pas = new PageActionStatus();
     $pas->action = t('Change Volume/Part Name/Desc');
     $pas->status = t('Unkown error');
     $pas->time = time();
     if (!fse_try_to_login()) {
         $pas->message = t('You do not sign in or session expired.');
         echo $json->encode($pas);
         exit(0);
     }
     if (!in_array($domain_handle, $this->mDomainList)) {
         $pas->status = "error";
         $pas->message = "Invalid doc domain: {$domain_handle}!";
         echo $json->encode($pas);
         exit(0);
     }
     if (!preg_match("/^[a-z0-9_\\-]{4,64}\$/", $project_id)) {
         $pas->status = "error";
         $pas->message = "Invalid given project ID: {$project_id}!";
         echo $json->encode($pas);
         exit(0);
     }
     $project_home_page = ProjectInfo::getProjectPage($project_id, 'home');
     if ($project_home_page == false) {
         $pas->status = "error";
         $pas->message = "No such project: {$project_id}!";
         echo $json->encode($pas);
         exit(0);
     }
     if ($item_type == 'name') {
         if (!preg_match("/^.{1,64}\$/", $item_value)) {
             $pas->status = "error";
             $pas->message = "Bad volume/part name: {$item_value}!";
             echo $json->encode($pas);
             exit(0);
         }
         $page_property = 'cName';
     } else {
         if ($item_type == 'desc') {
             if (!preg_match("/^.{2,255}\$/", $item_value)) {
                 $pas->status = "error";
                 $pas->message = "Bad volume/part desc: {$item_value}!";
                 echo $json->encode($pas);
                 exit(0);
             }
             $page_property = 'cDescription';
         } else {
             $pas->status = "error";
             $pas->message = "Bad item type: {$item_type}!";
             echo $json->encode($pas);
             exit(0);
         }
     }
     $project_info = ProjectInfo::getBasicInfo($project_id);
     if ($project_info['fse_id'] != $_SESSION['FSEInfo']['fse_id']) {
         $pas->status = "error";
         $pas->message = "You are not the owner of {$project_id}!";
         echo $json->encode($pas);
         exit(0);
     }
     $db = Loader::db();
     if (preg_match("/^[a-z0-9\\-]{3,16}\$/", $part_handle)) {
         $res = $db->Execute("UPDATE fsen_project_doc_volume_parts SET part_{$item_type}=?\n\tWHERE project_id=? AND domain_handle=? AND volume_handle=? AND part_handle=?", array($item_value, $project_id, $domain_handle, $volume_handle, $part_handle));
         ProjectInfo::onUpdateProjectPartInfo($project_id, $domain_handle, $volume_handle, $part_handle);
     } else {
         $res = $db->Execute("UPDATE fsen_project_doc_volumes SET volume_{$item_type}=?\n\tWHERE project_id=? AND domain_handle=? AND volume_handle=?", array($item_value, $project_id, $domain_handle, $volume_handle));
         ProjectInfo::onUpdateProjectVolumeInfo($project_id, $domain_handle, $volume_handle);
     }
     if ($db->Affected_Rows() == 0) {
         $pas->status = "error";
         $pas->message = "Nothing changed!";
         echo $json->encode($pas);
         exit(0);
     }
     $cache = PageCache::getLibrary();
     /* update page attributes and refresh block caches */
     if (preg_match("/^[a-z0-9\\-]{3,16}\$/", $part_handle)) {
         $page = ProjectInfo::getProjectPage($project_id, $domain_handle, $volume_handle, $part_handle);
         if ($page != false) {
             $page->update(array($page_property => $item_value));
             $cache->purge($page);
         }
     } else {
         $page = ProjectInfo::getProjectPage($project_id, $domain_handle, $volume_handle);
         if ($page != false) {
             $page->update(array($page_property => $item_value));
             $cache->purge($page);
         }
         $cache->purge($project_home_page);
     }
     $pas->status = "success";
     $pas->message = "Item changed!";
     echo $json->encode($pas);
     exit(0);
 }
Exemplo n.º 2
0
$fses = $db->getAll("SELECT * FROM fse_basic_profiles ORDER BY create_time");
$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));
}