ElixirVault/www/system-brs-core/sys/sysSiteMap/inc/sysSiteMapModule.php

1102 lines
33 KiB
PHP

<?php
namespace BRSystems\Core\Sys\sysSiteMap\inc;
use BRSystems\Core\Library\cDb\cDb;
/**
* sysSiteMap Module
*
* @category sysSiteMap Module
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @since Version 2.0
*/
class sysSiteMapModule
{
public $db;
/**
* Class constructor
*/
public function __construct() {
$this->db = cDb::getInstance();
}
/**
* Function to get module records
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param string $where - sql query
* @param string $sort - sql query
* @param int $offset - db table offset
* @param int $limitPerPage - limit per page
* @param int $type - type ( cms or pub );
* @return array of data
* @version 1.1
*/
public function getModuleRecords($where, $sort, $offset = 0, $limitPerPage = 20, $type){
$sSql = "
SELECT SQL_CALC_FOUND_ROWS
sm.id,
sm.p_title,
sm.p_created,
sm.p_modified,
sm.p_enabled,
sm.p_visible,
sm.p_sitemap,
sm.p_autocache,
sm.p_2fa,
sm.p_login,
sm.p_default,
COALESCE(sm.p_parent,0) as p_parent,
sm.p_order,
sm.p_lang_ref_id,
sm.p_full_url,
ll.lang_code,
ll.lang_title,
CASE WHEN sm.p_parent > 0 THEN sm2.p_title ELSE '-- ROOT --' END as parent_title,
us.user_name
FROM
site_map sm
LEFT JOIN site_languages ll ON
sm.p_lang_id = ll.id
LEFT JOIN site_users us ON
sm.p_modified_user_id = us.id
LEFT JOIN site_map sm2 ON
sm.p_parent = sm2.id
AND sm.p_parent <> 0
WHERE
1 {$where}
AND sm.p_type = {$type}
ORDER BY
{$sort}
LIMIT
{$offset}, {$limitPerPage}
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to add or save record data
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $data - record data
* @param string $dataSql - data sql ( update sql string );
* @return bool record new/old id
* @version 1.1
*/
public function saveRecordDataById($data, $dataSql){
// Update data with data sql first;
if($dataSql){
if(!$this->db->executeMulti($dataSql))
return false;
}
if(!empty($data) && is_array($data)){
if($id = $this->db->_queryInsertArray('site_map', $data))
return $id;
else
return false;
}
return true;
}
/**
* Function to get record data by id
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param int $id - record id
* @return array - record data
* @version 1.1
*/
public function getRecordDataById($id){
return $this->db->_querySelectRow('mod_users_subscription_mails', false, array('id' => $id));
}
/**
* Function to delete table records form db
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - record ids to delete
* @return bool true / false
* @version 1.1
*/
public function deleteRecords($ids){
$this->db->execute("DELETE FROM `site_map` WHERE `id` IN (" . implode(',', $ids) . ")");
$this->db->execute("DELETE FROM `temp_map_links` WHERE `map_id` IN (" . implode(',', $ids) . ")");
$this->db->execute("DELETE FROM `site_map_menus` WHERE `map_id` IN (" . implode(',', $ids) . ")");
return $this->db->execute("DELETE FROM `site_map_modules` WHERE `mod_map_id` IN (" . implode(',', $ids) . ")");
}
/**
* Function to chk if ref id is the same as id;
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - record ids
* @return bool true / false
* @version 1.1
*/
public function chkIdsForRefIds($ids){
$sSql = "
SELECT
id,
COALESCE(id = p_lang_ref_id) AS main
FROM
site_map
WHERE
id IN (". implode(",", $ids) .")
";
$this->db->query($sSql);
return $this->db->getFieldBasedArrayFieldsAdv('main', 'id', false);
}
/**
* Function to get ids by reference ids
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - page ids
* @param bool $bSimpleIds - if we need just the ids
* @return bool|array
* @version 1.1
*/
public function getIdsByLangRefIds($ids, $bSimpleIds = false){
$this->db->_querySelect('site_map', array('id', 'p_lang_ref_id'), array('p_lang_ref_id' => $ids), false, false, false);
if($bSimpleIds) return $this->db->getKeyValBasedArray('id', 'id');
else return $this->db->getFieldBasedArrayFieldsAdv('p_lang_ref_id', 'id', false);
}
/**
* Function to get ids by reference ids
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param string $sSql - sql update
* @return int
* @version 1.1
*/
public function updateRefIds($sSql){
return $this->db->executeMulti($sSql);
}
/**
* Function to get menus
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - record ids to delete
* @return array with data
* @version 1.1
*/
public function getMenusByMapId($ids){
$sSql = "SELECT menu_id FROM site_map_menus WHERE map_id IN (" . implode(',', $ids) . ")";
$this->db->query($sSql);
return $this->db->getKeyValBasedArray('menu_id', 'menu_id');
}
/**
* Function to change record status in db table
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - record ids to affect
* @param string $field - field to update for status ENUM
* @return bool true / false
* @version 1.1
*/
public function changeRecordsStatus($ids, $field){
$time = time();
$ids = implode(',', $ids);
$status = $this->db->query("UPDATE site_map sm SET {$field} = '1', p_modified = '{$time}' WHERE {$field} = '0' AND id IN ({$ids})");
if(!$status)
return $status;
$status = $this->db->query("UPDATE site_map sm SET {$field} = '0', p_modified = '{$time}' WHERE {$field} = '1' AND id IN ({$ids}) AND p_modified <> '{$time}'");
return $status;
}
/**
* Function to get all pages for parent use
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $lang_id - language id
* @param int $p_type - cms or pub side
* @param bool $b - if we need parents for show management
* @return array of data
* @version 1.1
*/
public function getAllPagesUrls($p_type, $lang_id, $b = false){
$sSql = "
SELECT
sm.id as parent_id,
sm.p_title as title,
sm.p_full_url as parent_url,
sm.p_parent,
pp.p_title
FROM
site_map sm
LEFT JOIN site_map pp ON
sm.p_parent = pp.id
WHERE
sm.p_type = {$p_type}
AND sm.p_lang_id = {$lang_id}
AND sm.p_parent <> 0
";
$this->db->query($sSql);
if($b)
return $this->db->getFieldBasedArrayFields('parent_id');
else
return $this->db->getFieldBasedArrayFields('p_title', 'parent_id');
}
/**
* Function to get system languages array
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param bool $cms - indicates whether its cms languages or pub
* @return array - record data
* @version 1.1
*/
public function getSysLanguages($cms = false){
return $this->db->_querySelect('site_languages', false, array('type' => $cms ? 1 : 0), array('site_languages.order' => 'ASC'));
}
/**
* Function to get reference id by id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param int $id - page id
* @return int
* @version 1.1
*/
public function getRefIdById($id){
return $this->db->_querySelectOne('site_map', array('p_lang_ref_id'), array('id' => $id ));
}
/**
* Function to get module records for edit by id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $id - id
* @param bool $bClone - indicates whether we need data for clone or not
* @return array of data
* @version 1.1
*/
public function getModuleRecordsForEdit($id, $bClone = false){
$select = "";
if(!$bClone){
$select = "sm.id,
sm.p_title,
sm.p_url,
sm.p_lang_ref_id,
sm.p_keywords,
sm.p_description,
sm.p_created,
sm.p_modified,
us.user_name,
sm.p_parent,
sm.p_full_url,
sm2.p_full_url as parent_url,";
}
$sSql = "
SELECT
{$select}
sm.p_type,
sm.p_lang_id,
sm.p_order,
sm.p_redirect_url,
sm.p_enabled,
sm.p_visible,
sm.p_autocache,
sm.p_st_cnt,
sm.p_2fa,
sm.p_404,
sm.p_sitemap,
sm.p_default,
sm.p_login,
sm.p_permission,
sm.p_menus,
smm.mod_use_tmpl
FROM
site_map sm
LEFT JOIN site_users us ON
sm.p_modified_user_id = us.id
LEFT JOIN site_map_modules smm ON
sm.id = smm.mod_map_id
AND smm.mod_primary = '1'
LEFT JOIN site_map sm2 ON
sm.p_parent = sm2.id
WHERE
sm.p_lang_ref_id = {$id}
";
$this->db->query($sSql);
return $this->db->getFieldBasedArray('p_lang_id');
}
/**
* Function to get cms permissions
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param string $table - db table where to look
* @param int $id - id
* @return string of permission name
* @version 1.1
*/
public function getAddedPermissionById($table, $id){
return $this->db->_querySelectOne($table, array('p_name'), array('id' => $id ));
}
/**
* Function to get loaded menus
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $id - id
* @param int $menu_type - id
* @param int $pubSide - indicates whether its pub side or not
* @return array - list of menus for the nod
* @version 1.1
*/
public function getPageMenus($id, $menu_type, $pubSide){
$sSql = "
SELECT
sm.id as id,
sm.menu_name as v
FROM
site_map_menus smm
LEFT JOIN site_menus sm ON
smm.menu_id = sm.id
WHERE
smm.map_id = {$id}
AND sm.menu_blocked = '0'
AND smm.menu_type = '{$menu_type}'
AND sm.menu_pub_side = '{$pubSide}'
";
$this->db->query($sSql);
$d = $this->db->getArray();
if(!!$d && is_array($d))
return $d;
else
return array();
}
/**
* Function to get used modules for edit by id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param array $ids
* @return array of data
* @version 1.1
*/
public function getUsedModulesForEdit($ids){
$sSql = "
SELECT
smm.mod_map_id,
smm.mod_type,
smm.mod_code,
smm.mod_load_order,
smm.mod_call_method
FROM
site_map_modules smm
WHERE
smm.mod_map_id IN (". implode(",", $ids) .")
";
$this->db->query($sSql);
return $this->db->getFieldBasedArrayFields('mod_map_id', 'mod_type', array('mod_code', 'mod_load_order', 'mod_call_method'), false);
}
/**
* Function to get used modules for page by id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $id
* @param array $types
* @return array of data
* @version 1.1
*/
public function getUsedModulesForPageById($id, $types){
$sSql = "
SELECT
mod_type,
mod_code,
mod_load_order
FROM
site_map_modules
WHERE
mod_map_id = ". $this->db->prepData($id) ."
AND mod_type IN (". implode(",", $this->db->prepData($types)) .")
";
$this->db->query($sSql);
return $this->db->getFieldBasedArrayFieldsAdv('mod_type', array('mod_code', 'mod_load_order'), false);
}
/**
* Function to get all pages by language;
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $langId - lang id
* @return array of data page id as key and name as value;
* @version 1.1
*/
public function getUsedModulesForAllPages($langId){
$sSql = "
SELECT
id,
p_title
FROM
site_map
WHERE
p_lang_id = ". $this->db->prepData($langId) ."
";
$this->db->query($sSql);
return $this->db->getFieldBasedArrayFieldsAdv('id', 'p_title');
}
/**
* Function to get page full url by id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $id - page url
* @return string
* @version 1.1
*/
public function getFullUrlById($id){
return $this->db->_querySelectOne('site_map', array('p_full_url'), array('id' => $id ));
}
/**
* Function to get page full url by id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @param int $id - page url
* @param int $langId - selected language
* @return array
* @version 1.1
*/
public function getFullUrlByIdSpecial($id, $langId){
$sSql = "
SELECT p_full_url, id
FROM site_map
WHERE p_lang_ref_id = (
SELECT
p_lang_ref_id
FROM
site_map
WHERE
id = {$id}
)
AND p_lang_id = {$langId}
";
$this->db->query($sSql);
return $this->db->getRow();
}
/**
* Function to get page full url with language code by id
*
* @author Mareks Keiss <mareks.zukovskis@gmail.com>
* @category sysSiteMapModule Module
* @param int $id - page url
* @param int $lang_id - page language id
* @return string
* @version 1.1
*/
public function getFullUrlWithLangCodeById($id, $lang_id, $bHideDefault = false, $bEndSlash = false){
$bHideDefault = ($bHideDefault ? 1 : 0);
$sSql = "
SELECT
CASE WHEN ll.`default` = '1' AND {$bHideDefault} THEN
CONCAT(sm.p_full_url)
ELSE
CONCAT(sm.p_full_url,ll.lang_code,'/')
END as url
FROM
site_map sm
LEFT JOIN site_languages ll ON
sm.p_lang_id = ll.id
WHERE
sm.p_lang_ref_id = {$id}
AND sm.p_lang_id = {$lang_id}
";
$this->db->query($sSql);
$sUrl = $this->db->getOne();
return (strlen($sUrl) && !$bEndSlash ? substr($sUrl, 0, -1) : $sUrl);
}
/**
* Function to get site permissions
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @param string $table - table name
* @return array data
* @version 1.1
*/
public function getSitePermissions($table){
return $this->db->_querySelect($table, array('id', 'p_name'));
}
/**
* Function to get site menus
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @param int $pubSide - indicates whether its pub side or not
* @return array data
* @version 1.1
*/
public function getSiteMenus($pubSide){
return $this->db->_querySelect('site_menus', array('id', 'menu_name'), array('menu_blocked' => '0', 'menu_pub_side' => $pubSide));
}
/**
* Function to get sub url
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param int $start_node_id - node id to start creating pre node
* @return array with recorded data of parent
* @version 1.0
*/
public function genSubUrl($start_node_id){
$sSql = "
SELECT *
FROM site_map
WHERE
id = '" . $start_node_id . "'
AND p_deleted = '0'
";
$this->db->query($sSql);
return $this->db->getRow();
}
/**
* Function to get all children ids
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param int $parent_id - parent id
* @param int $lang_id - language id
* @return array with recorded data of children
* @version 1.0
*/
public function childUrls($parent_id, $lang_id){
$sSql = "
SELECT *
FROM site_map
WHERE
p_parent = '" . $parent_id . "'
AND p_lang_id = '" . $lang_id . "'
AND p_deleted = '0'
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to update full url
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param string $deep_url - full url
* @param int $id - node id
* @return bool
* @version 1.0
*/
public function updateFullUrl($deep_url, $id){
return $this->db->_queryUpdate('site_map', array('p_full_url' => $deep_url), array('id' => $id));
}
/**
* Function to update menu links for map id
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category content Module
* @param array $ids - record id
* @param array $data - data tu insert
* @return bool true / false
* @version 1.1
*/
public function updateMenuData($ids, $data){
// Delete old menus
$this->db->execute("DELETE FROM site_map_menus WHERE map_id IN (" . implode(',', $ids) . ")");
return $data ? $this->db->_queryInsertArray('site_map_menus', $data) : true;
}
/**
* Function to save record data modules
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - record id for update
* @param array $data - record data
* @return bool true/false
* @version 1.1
*/
public function saveRecordDataModuleById($ids, $data){
$this->db->execute("DELETE FROM site_map_modules WHERE mod_map_id IN (" . implode(',', $ids) . ")");
return $this->db->_queryInsertArray('site_map_modules', $data);
}
/**
* Function to get ids to language
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param int $t
* @return array
* @version 1.1
*/
public function getIdToLangId($t){
$sSql = "
SELECT
id,
p_lang_id
FROM
site_map
WHERE
p_lang_ref_id = {$t}
";
$this->db->query($sSql);
return $this->db->getFieldBasedArrayFieldsAdv('p_lang_id', 'id');
}
/**
* Function to get lang ref ids by ids
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids
* @return bool|array
* @version 1.1
*/
public function getLangRefIdById($ids){
$this->db->_querySelect('site_map', array('p_lang_ref_id'), array('id' => $ids), false, false, false);
return $this->db->getKeyValBasedArray('p_lang_ref_id', 'p_lang_ref_id');
}
/**
* Function to update ref id
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMap Module
* @param array $ids - all record ids
* @param int $id - to update reference id by this id
* @return bool true/false
* @version 1.1
*/
public function updateRefId($ids, $id){
$sSql = "
UPDATE site_map
SET p_lang_ref_id = {$id} WHERE id IN (" . implode(',', $ids) . ")
";
return $this->db->query($sSql);
}
/**
* Function to get site menus
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @param string $oldName - old admin folder name
* @param string $newName - new admin folder name
* @return bool true
* @version 1.1
*/
public function replaceLinks($oldName, $newName){
$sSql ="
/* UPDATE p_url */
update site_map sm,
(select
id,
REPLACE(ss.p_url,'{$oldName}','{$newName}') as p_url
from site_map ss where ss.p_type = '1' and ss.p_url like '{$oldName}') nsm
set sm.p_url = nsm.p_url
where sm.p_type = '1' and nsm.id = sm.id;
/* UPDATE REDIRECT URLS */
update site_map sm,
(select
id,
REPLACE(ss.p_redirect_url,'/{$oldName}/','/{$newName}/') as p_redirect_url
from site_map ss where ss.p_type = '1' and ss.p_redirect_url like '/{$oldName}/%') nsm
set sm.p_redirect_url = nsm.p_redirect_url
where sm.p_type = '1' and nsm.id = sm.id;
/* UPDATE LOGIN REDIRECT URLS */
update site_map sm,
(select
id,
REPLACE(ss.p_login_redirect,'/{$oldName}/','/{$newName}/') as p_login_redirect
from site_map ss where ss.p_type = '1' and ss.p_login_redirect like '/{$oldName}/%') nsm
set sm.p_login_redirect = nsm.p_login_redirect
where sm.p_type = '1' and nsm.id = sm.id;
/* UPDATE ADMIN BASE URLS */
update site_map sm,
(select
id,
REPLACE(ss.p_full_url,'/{$oldName}/','/{$newName}/') as p_full_url
from site_map ss where ss.p_type = '1' and ss.p_full_url like '/{$oldName}/%') nsm
set sm.p_full_url = nsm.p_full_url
where sm.p_type = '1' and nsm.id = sm.id;
/* MANUALLY CLEAR APC CACHE TABLE */
delete from temp_cache_exp;
";
return $this->db->executeMulti($sSql);
}
/**
* Function to get site map used modules
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @param array $type - types to select
* @return array data
* @version 1.1
*/
public function getAllUsedSiteMapModules($type){
$sSql = "
SELECT
distinct(mod_code) as mcode,
mod_type
FROM
site_map_modules
WHERE
mod_type IN(". implode(",", $type) .")
";
$this->db->query($sSql);
return $this->db->getFieldBasedArrayFieldsAdv(array('mod_type', 'mcode'), 'mcode');
}
/**
* Function to get site map used modules
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @param string $sTable - table
* @param string $sKey - key
* @param string $ids - ids to select
* @param array $vFields - if needs specific fields
* @return array data
* @version 1.1
*/
public function getDataForExportSql($sTable, $sKey, $ids, $vFields = array()){
$vReturn = false;
if($sTable){
$vWhere = false;
if(strlen($sKey) && !empty($ids))
$vWhere = array($sKey => $ids);
$vReturn = $this->db->_querySelect($sTable, (!empty($vFields) ? $vFields : false), $vWhere);
}
return $vReturn;
}
/**
* Functions to load/reload site map / site map url links - for array access instead of db
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category Core Module
* @param int $mapId - site map id to load links for
* @return string token id
* @version 1.1
*/
public function loadLinks($mapId){
$sSql = "
SELECT
sml.map_ref_id as `id`,
sml.map_base_uri as `base`,
sm.p_full_url as `url`,
sml.map_lang_id as `lang_id`,
sl.`default`,
sl.lang_code
FROM
temp_map_links sml
LEFT JOIN site_map sm ON
sml.map_link_id = sm.id
LEFT JOIN site_languages sl ON
sm.p_lang_id = sl.id
WHERE
sml.map_id = {$mapId}
AND sml.map_type = '0'
";
if($this->db->query($sSql)){
return $this->db->getFieldBasedArray('id', 'lang_id');
}
return false;
}
/**
* Functions to load/reload site map url links - for array access instead of db
*
* @author Mareks Keišs <mareks.keiss@brsystems.lv>
* @category Core Module
* @param int $mapId - site map id to load links for
* @return string token id
* @version 1.1
*/
public function loadUrlLinks($mapId){
$sSql = "
SELECT
sml.map_ref_id as `id`,
sml.map_base_uri as `base`,
sm.url_fname as `url`,
sml.map_lang_id as `lang_id`,
sl.`default`,
sl.lang_code
FROM
temp_map_links sml
LEFT JOIN site_map_urls sm ON
sml.map_link_id = sm.id
LEFT JOIN site_languages sl ON
sm.url_lang_id = sl.id
WHERE
sml.map_id = {$mapId}
AND sml.map_type = '1'
";
if($this->db->query($sSql)){
return $this->db->getFieldBasedArray('id', 'lang_id');
}
return false;
}
/**
* Function to get site map data for XML file by language
*
* @author Mareks Keišs <keiss.mareks@gmail.com>
* @category pubExport
* @param int $langId - language id
* @return array of data
* @version 1.1
*/
public function getSiteMapTableData($langId){
$sSql = "
SELECT
'weekly' as changefreq,
0.6 as priority,
CONCAT(sm.p_full_url, CASE WHEN sl.`default` = '1' THEN '' ELSE sl.lang_code END) as loc,
FROM_UNIXTIME(sm.p_modified,'%Y-%m-%dT%H:%i:%s+02:00') as lastmod
FROM
site_map sm
LEFT JOIN site_languages sl ON
sl.id = sm.p_lang_id
WHERE
sm.p_lang_id = {$langId}
AND sm.p_type = '0'
AND LENGTH(sm.p_full_url)
AND sm.p_login = '0'
AND sm.p_deleted = '0'
AND sm.p_enabled = '1'
AND sm.p_visible = '1'
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to get site map urls data for XML file by language
*
* @author Mareks Keišs <keiss.mareks@gmail.com>
* @category pubExport
* @param int $langId - language id
* @param int $offset - offset
* @param int $limit - limit per page
* @return array of data
* @version 1.1
*/
public function getSiteMapCategoryData($langId, $offset, $limit){
$sSql = "
SELECT
'weekly' as changefreq,
0.8 as priority,
CONCAT(smu.url_fname, CASE WHEN sl.`default` = '1' THEN '' ELSE sl.lang_code END) as loc,
FROM_UNIXTIME(ma.a_modified,'%Y-%m-%dT%H:%i:%s+02:00') as lastmod
FROM
mod_articles ma
LEFT JOIN mod_articles_records mar ON
ma.id = mar.a_id
LEFT JOIN site_map_urls smu ON
smu.id = mar.a_url_alias_id
AND mar.a_lang_id = smu.url_lang_id
LEFT JOIN site_languages sl ON
sl.id = mar.a_lang_id
WHERE
mar.a_url_alias_id > 0
AND LENGTH(mar.a_link)
AND mar.a_lang_id = {$langId}
LIMIT
{$offset}, {$limit}
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to get site map urls data for XML file by language
*
* @author Mareks Keišs <keiss.mareks@gmail.com>
* @category pubExport
* @param int $langId - language id
* @param int $offset - offset
* @param int $limit - limit per page
* @return array of data
* @version 1.1
*/
public function getSiteMapProductData($langId, $offset, $limit){
return array();
$sSql = "
SELECT
'daily' as changefreq,
1 as priority,
CONCAT(smu.url_fname, CASE WHEN sl.`default` = '1' THEN '' ELSE sl.lang_code END) as loc,
FROM_UNIXTIME(pp.prod_modified,'%Y-%m-%dT%H:%i:%s+02:00') as lastmod
FROM
site_map_urls smu
LEFT JOIN mod_products pp ON
pp.id = smu.url_item_id
LEFT JOIN site_languages sl ON
sl.id = smu.url_lang_id
WHERE
pp.prod_deleted = '0'
AND pp.prod_disabled = '0'
AND smu.url_lang_id = {$langId}
AND smu.url_item_id > 0
AND LENGTH(smu.url_fname)
LIMIT
{$offset}, {$limit}
";
$this->db->query($sSql);
return $this->db->getArray();
}
/**
* Function to get all site map ids
*
* @author Aivars Žukovskis <mareks.keiss@brsystems.lv>
* @category sysSiteMapModule Module
* @return array
* @version 1.1
*/
public function gatherIds(){
$sSql = "
SELECT p_lang_ref_id
FROM site_map
WHERE
`p_deleted` = '0'
AND `p_type` = ". sysSiteMapController::PUB_TYPE ."
AND `p_lang_ref_id` <> ". sysSiteMapController::PUB_SITE_ID ."
GROUP BY p_lang_ref_id
";
$this->db->query($sSql);
return $this->db->getKeyValBasedArray('p_lang_ref_id', 'p_lang_ref_id');
}
}