>> Vizov dejstvij s elementami
//--------------------------------------------------------------------------------------
if (isset($_GET['edit']) OR isset($_GET['apply'])){
return TEXTLIST::show_form(@$_GET['from'] ? $_GET['from'] : $_GET['edit']);
} else {
TEXTLIST::$marked_item = @$_GET['from'];
return TEXTLIST::show_list($_CFG['current_category']['id']);
}
}
//======================================================================================
class TEXTLIST {
static $template = "";
static $sql_table = "";
static $marked_item = "";
static $set_new_to = "up";
//======================================================================================
/**
* Funkcija pokaza spiska dokumentov v ukazannoj kategorii
*
* @param integer $category_id
*/
function show_list($category_id) {
global $_CFG;
include_once ($_CFG['path_to_cms'].'core/libraries/my_list.class/extensions/_with_edit.php');
$my_list = new _with_edit();
$my_list->sql_table = self::$sql_table;
$my_list->sql_where = "category_id=".$category_id;
$my_list->nosort = true;
$my_list->sql_order = "sort_id";
$my_list->sql_direction = "0";
$my_list->unique_id = "textlist";
$my_list->template_table = file_get_contents(dirname(__FILE__).'/_list_template_table.tpl');
$my_list->style_where["id"]["condition"] = "=='".self::$marked_item."'";
$my_list->style_where["id"]["insert"] = ' style="background:#ffe8c0"';
$my_list->insert_cell("id","ID", null);
$my_list->insert_cell("ins_title", _TXL_TITLE_, "_textlist_cut_title", "nowrap");
$my_list->insert_cell("doc_url", "URL", null, "nowrap");
$my_list->insert_cell("content", "Content", "_textlist_show_content", "width='100%'");
$my_list->insert_cell("created", _TXL_CREATED_, "_textlist_get_datetime");
$my_list->insert_cell("owner", _TXL_OWNER_, "_textlist_get_owner");
$my_list->insert_cell("active", _TXL_ISACTIVE_, "_textlist_set_active", "onclick='' nowrap");
$my_list->insert_cell("sort_id", "Sort", '_textlist_add_bullets', "onclick='' nowrap");
return $my_list->show_table();
}
function show_list_for_crosslinks($category_id) {
global $_CFG;
include_once ($_CFG['path_to_cms'].'core/libraries/my_list.class/extensions/_with_select.php');
$my_list = new _with_select();
$my_list->sql_table = self::$sql_table;
$my_list->sql_where = "category_id=".$category_id;
$my_list->nosort = true;
$my_list->sql_order = "sort_id";
$my_list->sql_direction = "0";
$my_list->insert_cell("id","ID", null);
$my_list->insert_cell("ins_title", _TXL_TITLE_, "_textlist_cut_title", "nowrap");
$my_list->insert_cell("content", "Content", "_textlist_show_content", "width='100%'");
return $my_list->show_table().'
';
}
//======================================================================================
// [[[ Funkcii otobrazhenija formi
/**
* Funckija vozvrashajet formu redaktirovanija dokumenta
*
* @param integer $document_id
* @param string $ERROR - esli nuzhno pokazatj chto bila oshibka v forme
*/
function show_form($document_id, $ERROR = null) {
global $_CFG;
// 1. Dlja generacii formi iz shablona mi ispolzujem standartnij insite klass - wbg_parse_template
include_once($_CFG['path_to_cms'].'core/libraries/wbg_parse_template.class/wbg_parse_template.class.php');
// 2. Poluchajem dannije elementa
$element_data = mysql_fetch_assoc(mysql_query("SELECT * FROM ".self::$sql_table." WHERE id='".$document_id."'"));
if (isSet($element_data['content'])){ // Redaktirovanije elementa
$content = unserialize($element_data['content']);
$element_data['doc_url'] = addslashes($element_data['doc_url']);
$element_data['ins_title'] = addslashes($element_data['ins_title']);
} else {
$content = array();
if ($document_id == 0){ // Esli eto dobavlenije novogo elementa
$element_data['active'] = 1;
$element_data['doc_url'] = "";
$element_data['ins_title'] = "";
}
}
// 3. Generim shapku dokumenta
$header ='
';
// 4. Generim soderzhanije formi
$tpl = new wbg_parse_template ($content);
$tpl->with_css = true;
$OUT_form = '';
$OUT_form .= '
';
return $OUT_form;
}
function _get_buttons($mode = 0){
return
'
';
}
// ]]] Funkcii otobrazhenija formi
//======================================================================================
// [[[ Dejstvija s dokumentami
function save_document($document_id, $POST, $category_id) {
global $_CFG;
// Dlja sohrananije nuzhno podgruzitj parsetemplate chtobi vse elementi bili bi nomrmalno obrabotani
// Posle processinga vse dannije ljagut v massiv
include_once($_CFG['path_to_cms'].'core/libraries/wbg_parse_template.class/wbg_parse_template.class.php');
$tpl = new wbg_parse_template ();
$tpl->get_elements_before_save(file_get_contents(self::$template));
$tpl->serialize_data = true;
$save_array = $tpl->get_data_for_save($_POST, $ERROR);
// Teperj gotovim SQL stroku dlja shohranenija dannih
$sql_string = "
category_id = '".$category_id."',
ins_title = '".$_POST['ins_title']."',
doc_url = '".$_POST['doc_url']."',
content = '".$save_array."',
active = '".($_POST['ins_active']?1:0)."',
updated = NOW(),
owner = '".$_CFG['user']['id']."'";
if ($document_id == 0 ){ // Dobavlenije novoij zapisi
$sql_string .= ",created='".time()."'";
if (self::$set_new_to == "up"){
mysql_query("UPDATE ".self::$sql_table." SET sort_id = sort_id + 1 WHERE category_id = '".$category_id."'");
$sort_id = 1;
} else {
$sort_id = mysql_result(mysql_query("select max(sort_id) from ".self::$sql_table." where category_id = '".$category_id."'"),0,0)+1;
}
$sql_string .= ",sort_id='".$sort_id."'";
$language = mysql_result(mysql_query("select language from wbg_tree_categories where id = '".$category_id."'"),0,0);
$sql_string .= ",lang='".$language."'";
mysql_query("INSERT INTO ".self::$sql_table." SET ".$sql_string);
$_GET['from'] = mysql_insert_id();
// Posle sozdanija sohranjajem dannije v log fail
$module_id = mysql_result(mysql_query("SELECT input_module FROM wbg_tree_categories WHERE id='".$category_id."'"),0,0);
WBG::save_to_log(1, $_POST['ins_title'], 4, $category_id, $module_id);
} else {
mysql_query("UPDATE ".self::$sql_table." SET ".$sql_string." WHERE id = '".$document_id."'");
// Posle sozdanija sohranjajem dannije v log fail
$module_id = mysql_result(mysql_query("SELECT input_module FROM wbg_tree_categories WHERE id=".$_CFG['current_category']['id']),0,0);
WBG::save_to_log(2, $_POST['ins_title'], 4, $category_id , $module_id);
}
}
/**
* Kopirujet dokumenti iz odnoj kategorii v druguju
*
* @param array $documents
* @param integer $category_id -> Nomer kategorii kuda kopirovatj
*/
function copy_documents($documents = array(), $category_id){
global $_CFG;
$category_data = mysql_fetch_assoc(mysql_query("SELECT * FROM wbg_tree_categories WHERE id='".$category_id."'"));
$last_sort_id = mysql_result(mysql_query("SELECT max(sort_id) FROM ".self::$sql_table." WHERE category_id='".(int)$category_id."'"),0,0);
foreach ($documents as $value){
$sql_string = '';
if (self::$set_new_to == "up"){
mysql_query("UPDATE ".self::$sql_table." SET sort_id = sort_id + 1 WHERE category_id = '".$category_id."'");
$last_sort_id = 1;
} else {
$last_sort_id ++;
}
$data = mysql_fetch_assoc(mysql_query("SELECT * FROM ".self::$sql_table." WHERE id='".$value."'"));
unset($data['id']);
$data['category_id'] = (int)$category_id;
$data['owner'] = $_CFG['user']['id'];
$data['created'] = time();
$data['sort_id'] = $last_sort_id ;
$data['lang'] = $category_data['language'];
foreach ($data as $key2=>$value2){
$sql_string[] = $key2."='".mysql_real_escape_string($value2)."'";
}
$sql_string = "INSERT INTO ".self::$sql_table." SET ".implode(",",$sql_string);
mysql_query($sql_string);
if (mysql_error()){echo "
".mysql_error()."
FILE:".__FILE__."
LINE:".__LINE__."
QUERY: ".$sql_string."
";}
WBG::save_to_log(5, $data['ins_title'], 4, (int)$_POST['list_value']);
}
}
function move_documents($documents = array(), $category_id) {
global $_CFG;
$last_sort_id = mysql_result(mysql_query("SELECT max(sort_id) FROM ".self::$sql_table." WHERE category_id='".(int)$category_id."'"),0,0);
foreach ($documents as $value){
if (self::$set_new_to == "up"){
mysql_query("UPDATE ".self::$sql_table." SET sort_id = sort_id + 1 WHERE category_id = '".$category_id."'");
$last_sort_id = 1;
} else {
$last_sort_id ++;
}
$sql_string = "UPDATE ".self::$sql_table." SET category_id='".(int)$category_id."',sort_id=".($last_sort_id)." WHERE id='".$value."'";
mysql_query($sql_string);
if (mysql_error()){echo "
".mysql_error()."
FILE:".__FILE__."
LINE:".__LINE__."
QUERY: ".$sql_string."
";}
// Sohranjajem dannije o perenose
$data = mysql_fetch_assoc(mysql_query("SELECT * FROM ".self::$sql_table." WHERE id='".$value."'"));
WBG::save_to_log(4, $data['ins_title'], 4, (int)$_POST['list_value']);
}
}
/**
* Udalenije dokumentov
*
* @param array $documents
* $documents[] = 1
* $documents[] = 122
*/
function delete($documents = array()) {
foreach ($_POST['chk_el'] as $value) {
// Sohranjajem udalenija v log faile
$document = mysql_fetch_assoc(mysql_query("SELECT ins_title FROM ".self::$sql_table." WHERE id='".$value."'"));
WBG::save_to_log(3, $document['ins_title'], 4);
mysql_query("DELETE FROM ".self::$sql_table." WHERE id='".$value."'");
}
}
/**
* Peremeshajet element vverh ili vniz
*
* @param unknown_type $direction
* @param unknown_type $item_to_move
* @param unknown_type $actions_count
*/
function move_item($direction, $item_to_move, $actions_count = 1) {
if ($direction){
$order = "DESC";
$znak = "<";
} else {
$order = "ASC";
$znak = ">";
}
for ($x = 0; $x < $actions_count; $x++){
$current_obj = mysql_fetch_assoc(mysql_query("SELECT id, sort_id, category_id FROM ".self::$sql_table." WHERE id=".$item_to_move));
$SQL_str = "SELECT id, sort_id FROM ".self::$sql_table." WHERE sort_id" . $znak . $current_obj['sort_id'] . " AND category_id=".$current_obj['category_id']." ORDER BY sort_id ".$order." LIMIT 1";
$other_obj = mysql_fetch_assoc(mysql_query($SQL_str));
if (!$other_obj) return ;
mysql_query("UPDATE ".self::$sql_table." SET sort_id=".$other_obj['sort_id']." WHERE id=".$current_obj['id']."");
mysql_query("UPDATE ".self::$sql_table." SET sort_id=".$current_obj['sort_id']." WHERE id=".$other_obj['id']."");
}
}
}
?>