public function newAction() { /** * Check permission */ if (false == $this->checkPermission('new_scontent', null, '?')) { $this->_forwardToNoPermissionPage(); return; } $data = $this->_getParam('data', false); /** * Get all categories */ $objCat = new Models_ScontentCategory(); $allCats = $objCat->getAll(array('sorting ASC'))->toArray(); /** * Get all display languages */ $objLang = new Models_Lang(); $allLangs = $objLang->getAll(array('sorting ASC'))->toArray(); /** * Check permisison for each language */ foreach ($allLangs as $index => $lang) { if (false == $this->checkPermission('new_scontent', null, $lang['lang_id'])) { /** * Disappaer this language */ unset($allLangs[$index]); } } $errors = array(); if (false !== $data) { /** * Insert new content */ $objScontent = new Models_Scontent(); $objScontentLang = new Models_ScontentLang(); if (true == $this->checkPermission('new_scontent', null, '*')) { $newScontent = array('scontent_category_id' => $data['scontent_category_id'], 'enabled' => $data['enabled'], 'publish_up_date' => $data['publish_up_date'], 'publish_down_date' => $data['publish_down_date'], 'sorting' => $data['sorting'], 'created_date' => time()); } else { $defaultCat = current($allCats); $newScontent = array('scontent_category_id' => $defaultCat['scontent_category_id'], 'enabled' => 0, 'publish_up_date' => null, 'publish_down_date' => null, 'sorting' => 1, 'created_date' => time()); } /** * Change format date */ if (null == $newScontent['publish_up_date']) { unset($newScontent['publish_up_date']); } else { $tmp = explode('/', $newScontent['publish_up_date']); $newScontent['publish_up_date'] = mktime(0, 0, 0, $tmp[0], $tmp[1], $tmp[2]); } if (null == $newScontent['publish_down_date']) { unset($newScontent['publish_down_date']); } else { $tmp = explode('/', $newScontent['publish_down_date']); $newScontent['publish_down_date'] = mktime(0, 0, 0, $tmp[0], $tmp[1], $tmp[2]); } /** * Sorting */ if (null == $newScontent['sorting']) { unset($newScontent['sorting']); } /** * Check URL for all language contents */ $errors = true; $isDefaultLang = true; foreach ($allLangs as $lang) { if (true == $isDefaultLang) { $isDefaultLang = false; if (null == @$data[$lang['lang_id']]['title']) { $errors[] = "You don't enter any content"; } } /** * Check to ensure no same URL exists */ $existUrl = $objScontentLang->getByColumnName(array('lang_id' => $lang['lang_id'], 'category_alias' => @$data[$lang['lang_id']]['category_alias'], 'alias' => @$data[$lang['lang_id']]['alias'])); if (count($existUrl) > 0) { /** * Alias exist */ $errors[] = "URL you enter exist"; } } if (true === $errors) { try { /** * Increase all current sortings */ if (1 > $newScontent['sorting']) { $newScontent['sorting'] = 1; } $objScontent->increaseSorting($newScontent['sorting'], 1); $id = $objScontent->insert($newScontent); foreach ($allLangs as $lang) { if (null == @$data[$lang['lang_id']]['title']) { continue; } $newScontentLang = array('scontent_id' => $id, 'lang_id' => $lang['lang_id'], 'enabled' => @$data[$lang['lang_id']]['enabled'], 'title' => @$data[$lang['lang_id']]['title'], 'category_alias' => @$data[$lang['lang_id']]['category_alias'], 'alias' => @$data[$lang['lang_id']]['alias'], 'url' => trim(@$data[$lang['lang_id']]['category_alias'] . '/' . @$data[$lang['lang_id']]['alias'], '/'), 'intro_text' => @$data[$lang['lang_id']]['intro_text'], 'full_text' => @$data[$lang['lang_id']]['full_text'], 'param' => @$data[$lang['lang_id']]['param'], 'meta_data' => @$data[$lang['lang_id']]['meta_data']); $objScontentLang->insert($newScontentLang); } $this->_redirect('scontent/admin/manager'); } catch (Exception $e) { $errors = array('main' => Vi_Language::translate('Can not insert into database now')); } } } else { $data = array('sorting' => 1); } /** * Prepare for template */ $this->view->allCats = $allCats; $this->view->allLangs = $allLangs; $this->view->errors = $errors; $this->view->data = $data; $this->view->headTitle(Vi_Language::translate('New article')); $this->view->menu = array('scontent', 'new'); $this->view->fullPermisison = $this->checkPermission('new_scontent', null, '*'); }