Esempio n. 1
0
 public function UpdateField($fieldAlias, $newValue, &$pkVal = NULL)
 {
     if ($fieldAlias == 'cms_id' && !$newValue) {
         return;
     }
     if ($pkVal == NULL && $fieldAlias == 'title') {
         $this->UpdateField('cms_id', UrlReadable($newValue), $pkVal);
     }
     if ($fieldAlias == 'revert') {
         $rec = $this->LookupRecord($pkVal);
         $this->UpdateField('content', $rec['content_published'], $pkVal);
         $this->UpdateFieldRaw('content_published_time', '`content_time`', $pkVal);
         AjaxEcho('window.location.reload();');
         return;
     }
     if ($fieldAlias == 'publish') {
         $rec = $this->LookupRecord($pkVal);
         $this->UpdateField('content_published', $rec['content'], $pkVal);
         return;
     }
     if ($fieldAlias == 'unpublish') {
         $this->UpdateField('is_published', 0, $pkVal);
         $this->UpdateField('content_published_time', null, $pkVal);
         return;
     }
     if ($fieldAlias == 'cms_id') {
         $newValue = UrlReadable($newValue);
         // also update children's "parent" to this value
         if ($pkVal !== NULL) {
             $dataset = $this->GetDataset(array('parent' => $pkVal), true);
             while ($child = $dataset->fetch()) {
                 $this->UpdateField('parent', $newValue, $child['cms_id']);
             }
         }
     }
     if (substr($fieldAlias, 0, 8) == 'content:') {
         $rec = $this->LookupRecord($pkVal);
         $contentarr = utopia::jsonTryDecode($rec['content']);
         if (!is_array($contentarr)) {
             $contentarr = array('' => $contentarr);
         }
         $id = substr($fieldAlias, 8);
         if (!$id) {
             $id = '';
         }
         $contentarr[$id] = (string) $newValue;
         $fieldAlias = 'content';
         $newValue = $contentarr;
         $this->SetFieldType('content_time', ftRAW);
         $this->UpdateField('content_time', 'NOW()', $pkVal);
     }
     if ($fieldAlias == 'content_published') {
         $this->SetFieldType('content_published_time', ftRAW);
         $this->UpdateFieldRaw('content_published_time', '`content_time`', $pkVal);
         $this->UpdateField('is_published', 1, $pkVal);
     }
     $oPk = $pkVal;
     $ret = parent::UpdateField($fieldAlias, $newValue, $pkVal);
     if ($pkVal !== $oPk) {
         $o = utopia::GetInstance('uCMS_View');
         $url = $o->GetURL(array('cms_id' => $pkVal, 'edit' => 1));
         AjaxEcho("window.location.replace('{$url}');");
     }
     // update cms list to reflect published status
     uCMS_List::RefreshList();
     return $ret;
 }