1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

[J1.5] SMART FORMER V2.4

Тема в разделе "Joomla", создана пользователем Danielru, 16 окт 2010.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, Genk0
  1. Danielru

    Danielru Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    141
    Симпатии:
    16
    Последняя версия компонента для создания форм на сайте CMS Joomla! 1.5 от разработчика IToris.
    С помощью Smart Former можно создавать формы любого вида, от самой простой, до сложной многоуровневой формы.
    Компонент располагает настройками что позволяет выбрать отображение и внешний вид формы.
    Smart Former поддерживает любым современным браузером, имеется возможность интеграции любого дополнительного визуального редактора, поддержка и вывод каптчи, экспорт в PDF и CSV форматы.
    Компонент также поддерживает создание мульти-страничных форм, позволяя тем самым создать удобную форму заказа с разнообразными полями на каждой странице.
    В архиве подробный мануал в PDF формате.
    Компонент является бесплатным, но на сайте разработчика есть Gold версия которая
    обладает более широким функционалом и обеспечивается поддержкой - ( 40 US )
    Демо, файлы и документация на офф. сайте
     
  2. Css_Ufa

    Css_Ufa

    Регистр.:
    25 ноя 2008
    Сообщения:
    542
    Симпатии:
    323
    Уважаемый Danielru, Демо я здесь так и не нашел.

    Кроме тех. поддержки, которая не всегда бывает отвечает когда нужно. Есть отличия в Free версии? Отличия не нашел тоже - они не отображены на сайте. Есть только на сайте при закачке этого компонента, что можно заказать поддержку. Да и зачем поддержка нужна для создания форм, объясните? Берете RsForm PRO! или любую другую удобную форму и все :)

    З.ы.: Да такой сайт блин корявый что даже не хочется там скачивать ничего :)
     
  3. Danielru

    Danielru Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    141
    Симпатии:
    16
    Вы наверное не смотрели внимательно. Все там есть - для удобства - вот ссылка на демо и файл

    RSForm безусловно хороший компонент, но Smart Former имеет свои особенности. Например: форма с несколькими шагами заполнения. Подробно смотрите демо!
     
  4. Css_Ufa

    Css_Ufa

    Регистр.:
    25 ноя 2008
    Сообщения:
    542
    Симпатии:
    323
    Я внимательно смотрел ту ссылку, которую вы мне дали. Там есть юзер гид + скачать версию для 1,5 и 1,0. Там есть видео, но демо нет. Если Вы видео считаете демо, то вы крупно ошибаетесь. В моем понятии демо - это когда ты сам можешь ощутить все прелести данного компонента/модуля.

    Выкладываю свое отображения сайта:
    [​IMG]


    Так какие преимущества имеет платная версия от бесплатной?

    ну согласитесь что юзер гид не нужен, если и так все понятно и доступно ;)

    P.s.:RSForm PRO! имеет тоже форму с несколькими шагами заполнения
    Код:
    http://demo.rsjoomla.com/multi-page-form-example
     
  5. sergstar

    sergstar

    Регистр.:
    15 фев 2008
    Сообщения:
    189
    Симпатии:
    24
    Подскажите форму такую, чтоб могла создавать и отсылать xls фаил.
    Желательно много функциональная, чтоб можно и страниц создать несколько и разместить слова и формы в том месте где хотелось.
     
  6. korkunov

    korkunov

    Регистр.:
    6 фев 2009
    Сообщения:
    285
    Симпатии:
    78
    Вот различия:
    http://www.itoris.com/difference-smartformer-gold-comparison-matrix.html
     
  7. arman29

    arman29 Генератор идей

    Moderator
    • Супермодератор
    Регистр.:
    30 июн 2008
    Сообщения:
    1.235
    Симпатии:
    654
    похоже на пиар или промо кампанию компонента :-]

    RSform Pro! вроде надежнее и стабильнее)
     
  8. half-bred

    half-bred Создатель

    Регистр.:
    5 июн 2008
    Сообщения:
    32
    Симпатии:
    5
    Поддерживаю может быть у кого-то есть нуленная версия Smart Former Gold?
     
  9. half-bred

    half-bred Создатель

    Регистр.:
    5 июн 2008
    Сообщения:
    32
    Симпатии:
    5
    Все оказалось намного проще,качаем с официального сайте триал и заменяем в administrator\components\com_sfg\admin.sfg.php на содержимое под катом
    PHP:
    <?php 
    defined
    '_JEXEC' ) or die( 'Restricted access' ); 
    $database=JFactory::getDBO();
    //Joomla 1.6 -> 1.5 class/method transformation as legacy mode
    global $mainframe;
    if (!isset(
    $mainframe)) $mainframe JFactory::getApplication('administrator');
    $my JFactory::getUser();
    $gid intval(@$my->gid);
    if (isset(
    $my->groups)) {
        if (@
    in_array(6$my->groups)) $gid 23;
        if (@
    in_array(7$my->groups)) $gid 24;
        if (@
    in_array(8$my->groups)) $gid 25;
    }
    //end of the transformation
    getPlugins();
    if (
    execTrigger('onBeforeActivate')) return;
    require_once( 
    JApplicationHelper::getPath'admin_html' ) );
    $GLOBALS['mosConfig_live_site']=substr(JURI::root(),0,strlen(JURI::root())-1);
    if (isset(
    $_SERVER['HTTP_REFERER']) && strpos(strtolower($_SERVER['HTTP_REFERER']), 'administrator') !== false$GLOBALS['mosConfig_live_site'] = substr($_SERVER['HTTP_REFERER'],0,strpos(strtolower($_SERVER['HTTP_REFERER']),'administrator')-1);
    $GLOBALS['mosConfig_absolute_path']=substr(__FILE__,0,strpos(strtolower(__FILE__),'administrator')-1);
    $cid JRequest::getVar('cid', array(0), 'method''array');
    if (
    ini_get('magic_quotes_sybase') && strtolower(ini_get('magic_quotes_sybase')) != 'off') {
        foreach (
    $_POST as $key => $value) if (!is_array($value)) $_POST[$key] = str_replace("''","'",$value);
            else foreach (
    $_POST[$key] as $key2 => $value2$_POST[$key][$key2] = str_replace("''","'",$value2);
        foreach (
    $_GET as $key => $value) if (!is_array($value)) $_GET[$key] = str_replace("''","'",$value);
            else foreach (
    $_GET[$key] as $key2 => $value2$_GET[$key][$key2] = str_replace("''","'",$value2);
        foreach (
    $_REQUEST as $key => $value) if (!is_array($value)) $_REQUEST[$key] = str_replace("''","'",$value);
            else foreach (
    $_REQUEST[$key] as $key2 => $value2$_REQUEST[$key][$key2] = str_replace("''","'",$value2);
    }
    if (
    get_magic_quotes_gpc()) {
        foreach (
    $_POST as $key => $value) if (!is_array($value)) $_POST[$key] = stripslashes($value);
            else foreach (
    $_POST[$key] as $key2 => $value2$_POST[$key][$key2] = stripslashes($value2);
        foreach (
    $_GET as $key => $value) if (!is_array($value)) $_GET[$key] = stripslashes($value);
            else foreach (
    $_GET[$key] as $key2 => $value2$_GET[$key][$key2] = stripslashes($value2);
        foreach (
    $_REQUEST as $key => $value) if (!is_array($value)) $_REQUEST[$key] = stripslashes($value);
            else foreach (
    $_REQUEST[$key] as $key2 => $value2$_REQUEST[$key][$key2] = stripslashes($value2);
    }
    if (
    execTrigger('onAfterActivate')) return;
    // translation:
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('language'));
    $language $database->loadResult();
    require_once(
    $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/lang/lang.php');
    SFG_Lang::getTranslations($language);
    //checkToken();
    checkConfiguration();
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('component_access'));
    $access $database->loadResult();
    $access explode('|',$access);
    if (
    $gid 25) {
        if (
    $access[0]!='all') {
            if (!
    in_array($my->username,$access)) {
                echo 
    '<h3>'.$GLOBALS['sfg']['translations']['You do not have access to the component'].'</h3>';
                return;
            }
        }
    }
    if (
    execTrigger('onAfterCheckAccess')) return;
    $domain str_replace(array('http://','https://','www.'),array('','','','','',''),strtolower($GLOBALS['mosConfig_live_site']));
    if (
    substr($domain,strlen($domain),1)=='/'$domain substr($domain,0,strlen($domain)-1);
    $isInstaller file_exists($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg_installer/admin.sfg_installer.php');
    if (
    $task == 'register' && isset($_POST['sn'])) {
        
    $sn trim($_POST['sn']);
        
    //$reg = @file_get_contents("http://www.itoris.com/index.php?update=sfg&action=register&domain=".urlencode($domain).'&sn='.urlencode($sn));
        //$reg = getFile2("http://www.itoris.com/index.php?update=sfg&action=register&domain=".urlencode($domain).'&sn='.urlencode($sn));
        //if ($reg===false) redirect('index.php?option=com_sfg', $GLOBALS['sfg']['translations']['Cannot connect to the registration server. Please check server\'s Internet connection and try again.']);
        //else if (strlen($reg) != 32) echo redirect('index.php?option=com_sfg', $GLOBALS['sfg']['translations']['Server has returned'].': '.$reg);
        //else 
        
    $reg =1;
        {
            
    $database->setQuery('update #__sfg_settings set `val`='.$database->Quote(trim($reg)).' where `var`='.$database->Quote('secret'));
            
    $database->query();
            echo 
    redirect('index.php?option=com_sfg'$GLOBALS['sfg']['translations']['The component has been registered!']
            );
        }
    }
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('updating_mode'));
    $update_mode intval($database->loadResult());
    $secret md5($domain.'sfgSecret');
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('secret').' and `val`='.$database->Quote($secret));
    $secret2 $database->loadResult();
    $isTrial false//поменял на false
    $isRegistered true;
    $trialDays '';
    //if ($secret!=$secret2) $isRegistered = false; else {$isRegistered = true; $isTrial = false;}
    //$reg = @file_get_contents("http://www.itoris.com/index.php?update=sfg&action=checkregistration&domain=".urlencode($domain));
    //$reg = getFile2("http://www.itoris.com/index.php?update=sfg&action=checkregistration&domain=".urlencode($domain));
    //if ($reg===false) $reg = '';
    /*if (trim($reg)=='not registered') {
        $database->setQuery('delete from #__sfg_settings where `var`='.$database->Quote('secret').' and (`val`='.$database->Quote($secret).' or `val`='.$database->Quote($secret2).' or `val`='.$database->Quote(md5($reg)).')');
        $database->query();
        $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote(md5($reg)).', `var`='.$database->Quote('secret'));
        $database->query();
        $isRegistered = false;
        $isTrial = false;
        $task='';
    }
    if (strpos($reg,'trial')!==false) {
        $database->setQuery('delete from #__sfg_settings where `var`='.$database->Quote('secret').' and (`val`='.$database->Quote($secret).' or `val`='.$database->Quote($secret2).' or `val`='.$database->Quote(md5($reg)).')');
        $database->query();
        $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote(md5($reg)).', `var`='.$database->Quote('secret'));
        $database->query();
        $trialDays = substr($reg, 6);
        $isRegistered = false;
        $isTrial = true;
    }
    if (trim($reg)=='registered') {
        $isTrial = false; $isRegistered=true;
        if ($secret != $secret2) {
            $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote($secret).', `var`='.$database->Quote('secret'));
            $database->query();
        }
    }
    if ($reg=='' && $isTrial==true && $trialDays=='') {
        $ts = @filectime($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/js/images/dir_up.png');
        if ($ts!==false) {
            $database->setQuery('select unix_timestamp(now())-'.intval($ts));
            $ts = floor(intval($database->loadResult())/86400);
            if ($ts<7) $trialDays = (7-$ts).' '.$GLOBALS['sfg']['translations']['days left']; else $isTrial = false;
        }
    }*/
    if ($task=='update') {
        if (
    $isInstaller) {
            require_once(
    $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg_installer/admin.sfg_installer.php');
            
    sfg_installer($option1);
            
    $database->setQuery('update #__sfg_settings set `val`=now() where `var`='.$database->Quote('last_update'));
            
    $database->query();
        } else echo 
    '<b style="color:red">'.$GLOBALS['sfg']['translations']['SmartFormer Gold Installer was not found. Please install it first. Cannot update the component'].'</b>';
    }
    if (
    $update_mode==|| $update_mode==1) {
        
    $database->setQuery('select unix_timestamp(now())-unix_timestamp(`val`) from #__sfg_settings where `var`='.$database->Quote('last_update'));
        
    $delta intval($database->loadResult());
        if (
    $delta 18000 && $update_mode==|| $delta 18000 && $update_mode==1) {
            
    //$version = @file_get_contents("http://www.itoris.com/index.php?update=sfg&action=getversion");
            
    $version getFile2("http://www.itoris.com/index.php?update=sfg&action=getversion");
            
    $version2 = @file_get_contents($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/version.txt');
            if (
    $version!=false && $version!=null && trim($version)!=trim($version2) && strlen($version)<10) {
                if (
    $isInstaller) {
                    require_once(
    $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg_installer/admin.sfg_installer.php');
                    if (
    $update_mode==0sfg_installer($option2); else sfg_installer($option3);
                } else echo 
    '<b style="color:red">'.$GLOBALS['sfg']['translations']['New version of SmartFormer Gold available'].' '.$version.'. '.$GLOBALS['sfg']['translations']['However cannot update the component due to absence of SmartFormer Gold Installer'].'</b>';            
            }
            
    $database->setQuery('update #__sfg_settings set `val`=now() where `var`='.$database->Quote('last_update'));
            
    $database->query();
        }
    }
    if (
    $task == '') {if (execTrigger('onBeforeSwitch')) return; $task='';} else if (execTrigger('onBeforeSwitch')) return;
    switch (
    $task) {
        case 
    'getimageslist':
            
    HTML_sfg::generateImagesList();
            break;
        case 
    'getdbtables':
            
    HTML_sfg::getDBTables();
            break;
        case 
    'saveform':
            if (
    execTrigger('onBeforeSaveForm')) return;
            
    saveForm();
            if (
    execTrigger('onAfterSaveForm')) return;
            break;
        case 
    'publish':
            
    publishForm(1,$cid);
            break;
        case 
    'unpublish':
            
    publishForm(0,$cid);
            break;
        case 
    'remove':
            if (
    execTrigger('onBeforeRemoveForm')) return;
            
    deleteForm($cid);
            if (
    execTrigger('onAfterRemoveForm')) return;
            break;
        case 
    'clone':
            if (
    execTrigger('onBeforeCloneForm')) return;
            
    cloneForm($cid);
            if (
    execTrigger('onAfterCloneForm')) return;
            break;
        case 
    'ping':
            if (
    execTrigger('onPing')) return;
            exit;
            break;
        case 
    'getdbfields':
            
    HTML_sfg::getDBFields();
            break;
        case 
    'getdbinfo':
            
    HTML_sfg::getDBInfo();
            break;
        case 
    'loadform':
            
    loadForm();
            break;
        case 
    'execquery':
            
    HTML_sfg::execQuery();
            break;
        case 
    'add':
            if (
    execTrigger('onBeforeCreateForm')) return;
            
    HTML_sfg::editForm();
            break;    
        case 
    'editform':
            if (
    execTrigger('onBeforeEditForm')) return;
            
    HTML_sfg::editForm();
            break;
        case 
    'settings':
            if (
    $gid != 25redirect('index.php?option=com_sfg'$GLOBALS['sfg']['translations']['You do not have access to the component\'s settings']);
            if (
    execTrigger('onBeforeShowSettings')) return;
            
    HTML_sfg::settings($option);
            if (
    execTrigger('onAfterShowSettings')) return;
            break;
        case 
    'showrecord':
            if (
    execTrigger('onBeforeShowRecords')) return;
            
    showRecord($option0);
            if (
    execTrigger('onAfterShowRecords')) return;
            break;
        case 
    'editrecord':
            if (
    execTrigger('onBeforeEditRecords')) return;
            
    showRecord($option1);
            if (
    execTrigger('onAfterEditRecords')) return;
            break;
        case 
    'exportAll':
        case 
    'exportData':
        case 
    'showdatalist':
            if (
    execTrigger('onBeforeCSVExport')) return;
            
    showDataList($option$task$cid);
            break;
        case 
    'applyRecord':
            if (
    execTrigger('onBeforeSaveRecord')) return;
            
    saveRecord(1);
            break;
        case 
    'saveRecord':
            if (
    execTrigger('onBeforeSaveRecord')) return;
            
    saveRecord(0);
            break;
        case 
    'removeRecord':
            if (
    execTrigger('onBeforeRemoveRecord')) return;
            
    removeRecord($cid);
            break;
        case 
    'downloadfile':
            if (
    execTrigger('onBeforeDownloadFile')) return;
            
    downloadFile();
            break;
        case 
    'backup':
            if (
    execTrigger('onBeforeBackupForm')) return;
            
    backupForm($cid);
            break;
        case 
    'upload':
            if (
    execTrigger('onBeforeUploadFile')) return;
            
    uploadForm();
            break;
        case 
    'getPlugin':
            echo 
    '<script>window.open("http://www.itoris.com/index.php/products/joomla-form-builder");</script>';
        case 
    'plugins':
            
    showPlugins($option);
            break;
        case 
    'publishPlugin':
            
    publishPlugin(1,$cid);
            break;
        case 
    'unpublishPlugin':
            
    publishPlugin(0,$cid);
            break;
        case 
    'uploadPlugin':
            
    uploadPlugin();
            break;
        case 
    'pluginorderup':
            
    savePluginOrder($cid1);
            break;
        case 
    'pluginorderdown':
            
    savePluginOrder($cid2);
            break;
        case 
    'saveorder':
            
    savePluginOrder($cid0);
            break;        
        case 
    'uninstallPlugin':
            
    uninstallPlugins($cid);
            break;
        case 
    'saveSettings':
            if (
    $gid != 25redirect('index.php?option=com_sfg'$GLOBALS['sfg']['translations']['You do not have access to the component\'s settings']);
            if (
    execTrigger('onBeforeApplySettings')) return;
            
    saveSettings(1);
            break;
        case 
    'applySettings':
            if (
    $gid != 25redirect('index.php?option=com_sfg'$GLOBALS['sfg']['translations']['You do not have access to the component\'s settings']);
            if (
    execTrigger('onBeforeApplySettings')) return;
            
    saveSettings(0);
            break;
        default:
            
    $s '';
            if (!
    $isRegistered$s.= '<b style="color:red">'.$GLOBALS['sfg']['translations']['Your copy of the component is not registered!'].' </b>';
            if (!
    $isRegistered && !$isTrial$s.= '<b style="color:red">'.$GLOBALS['sfg']['translations']['Your trial period is over. All functions are disabled. Please register.'].' </b>';
            if (!
    $isRegistered && $isTrial$s.= '<b style="color:red">'.$GLOBALS['sfg']['translations']['Trial period.'].' '.$trialDays.' </b>';
            if (!
    $isRegistered || $isTrial$s.=$GLOBALS['sfg']['translations']['Enter your S/N to register:'].' <input type="text" id="serial_num" style="width:200px" />*<input type="button" value="'.$GLOBALS['sfg']['translations']['Register'].'" onclick="if (document.getElementById(\'serial_num\').value==\'\') return; document.getElementById(\'task\').value=\'register\'; document.getElementById(\'sn\').value=document.getElementById(\'serial_num\').value; document.adminForm.submit();" />';
            echo 
    $s;
            if (
    execTrigger('onBeforeShowForms')) return;
            
    showForms($option);
            if (
    execTrigger('onAfterShowForms')) return;
            break;
    }
    if (
    execTrigger('onAfterSwitch')) return;
    function 
    getPlugins() {
        
    $database=JFactory::getDBO();
        
    $database->setQuery'select * from #__sfg_plugins where `published`=1 order by `ordering`');
        
    $rows $database->loadAssocList();
        
    $triggers = array();
        if (
    is_array($rows)) {
            foreach (
    $rows as $value) {
                
    $params explode("\n"$value['params']);
                foreach (
    $params as $key => $value2) {
                    
    $value2 explode('|'$value2);
                    if (isset(
    $value2[0]) && $value2[0]=='admin' && isset($value2[1]) && isset($value2[2])) {
                        if (!isset(
    $triggers[$value2[1]])) $triggers[$value2[1]] = array();
                        
    $cnt count($triggers[$value2[1]]);
                        
    $triggers[$value2[1]][$cnt] = array();
                        
    $triggers[$value2[1]][$cnt]['plugin'] = $value['alias'];
                        
    $triggers[$value2[1]][$cnt]['file'] = $value2[2];
                        
    $triggers[$value2[1]][$cnt]['action'] = @$value2[3];
                    }
                }
            }
        }
        if (!isset(
    $GLOBALS['sfg'])) $GLOBALS['sfg'] = array();
        
    $GLOBALS['sfg']['triggers'] = $triggers;
    }
        function 
    execTrigger($name) {
            if (isset(
    $GLOBALS['sfg']['triggers'][$name])) {
                
    $isReturn false;
                foreach (
    $GLOBALS['sfg']['triggers'][$name] as $value) {
                    if (
    trim($value['file'])=='' || !file_exists($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/imported/'.$value['plugin'].'/'.$value['file'])) continue;
                    
    //print_r($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/imported/'.$value['plugin'].'/'.$value['file']);
                    
    require_once($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/imported/'.$value['plugin'].'/'.$value['file']);
                    if (
    trim($value['action'])!='') {
                        eval(
    $value['action'].';');
                        if (isset(
    $GLOBALS['return']) && $GLOBALS['return'] == true$isReturn true;
                    }
                }
                if (
    $isReturn) return true;
            }
        }
    function 
    getFile2($url) {
        
    $binary '';
        
    $inputHandle = @fsockopen("www.itoris.com"80$errno$errstr1);
        if (
    $inputHandle) {
            
    $out "GET ".str_replace('http://www.itoris.com','',$url)." HTTP/1.0\r\n";
            
    $out .= "Host: www.itoris.com\r\n";
            
    $out .= "Connection: Close\r\n\r\n";
            
    fwrite($inputHandle$out);
            while (!
    feof($inputHandle)) $binary.=fgets($inputHandle128);
            
    fclose($inputHandle);
            
    $binary rtrim($binary);
            
    $pos strrpos($binary,"\n");
            if (
    $pos !== false$binary ltrim(substr($binary,$pos+1)); else $binary=null;
        } else {
            
    /*$inputHandle = @ fopen($url.'&rnd='.rand(1,1000000), "r");
            if ($inputHandle) {
                while (!feof($inputHandle)) $binary .= fread($inputHandle, 128);
                fclose($inputHandle);
            }*/
        
    }
        if (!
    $inputHandle$binary=false;
        return 
    $binary;

    function 
    saveSettings($mode) {
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $update intval($_POST['update']);
        
    $admins implode('|',$_POST['admins']);
        
    $language $_POST['language'];
        
    $csv_charset $_POST['csv_charset'];
        
    $csv_delimiter $_POST['csv_delimiter'];
        
    $csv_encloser $_POST['csv_encloser'];
        
    $database->setQuery('update #__sfg_settings set `val`='.$update.' where `var`='.$database->Quote('updating_mode'));
        
    $database->query();
        
    $database->setQuery('update #__sfg_settings set `val`='.$database->Quote($admins).' where `var`='.$database->Quote('component_access'));
        
    $database->query();
        
    $database->setQuery('update #__sfg_settings set `val`='.$database->Quote($language).' where `var`='.$database->Quote('language'));
        
    $database->query();
        
    $database->setQuery('update #__sfg_settings set `val`='.$database->Quote($csv_charset).' where `var`='.$database->Quote('csv_charset'));
        
    $database->query();
        
    $database->setQuery('update #__sfg_settings set `val`='.$database->Quote($csv_delimiter).' where `var`='.$database->Quote('csv_delimiter'));
        
    $database->query();
        
    $database->setQuery('update #__sfg_settings set `val`='.$database->Quote($csv_encloser).' where `var`='.$database->Quote('csv_encloser'));
        
    $database->query();
        
    redirect'index.php?option=com_sfg'.(($mode==0)?'&task=settings':''), $GLOBALS['sfg']['translations']['Settings have been updated'] );    
    }
    function 
    uploadForm() {
        if (!isset(
    $_FILES['upload'])) redirect'index.php?option=com_sfg''' );
        if (!
    file_exists($_FILES['upload']['tmp_name'])) redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Cannot upload the file'] );
        
    $s=file_get_contents($_FILES['upload']['tmp_name']);
        if (
    strpos($s,'#__sfg_forms')===falseredirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Incorrect backup file'] );
        
    $s str_replace('{live_site}',$GLOBALS['mosConfig_live_site'],$s);
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $parts explode('insert into #__sfg_forms set',$s);
        foreach (
    $parts as $value) if (trim($value)!='') {
            
    $form_parts explode('###sfg_dump_separator###'$value);
            
    //$database->_errorNum=0;
            
    $database->setQuery'insert into #__sfg_forms set'.$form_parts['0'] );
            
    $database->query();
            if (
    method_exists($database'getErrorNum') && $database->getErrorNum() != || !method_exists($database'getErrorNum') && $database->_errorNum!=0redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Incorrect backup file'] );
            unset(
    $form_parts['0']);
            foreach (
    $form_parts as $form_part) {
                
    $database->setQuery$form_part );
                
    $database->query();
                if (
    method_exists($database'getErrorNum') && $database->getErrorNum() != || !method_exists($database'getErrorNum') && $database->_errorNum!=0redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Incorrect backup file'] );
            }
        }
        
    redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Form(s) have been uploaded successfully'] );
    }
    function 
    backupForm($cid) {
        global 
    $database$mainframe$mosConfig_list_limit;
        
    $database=JFactory::getDBO();
        
    $s='';
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/engine.php');
        foreach (
    $cid as $val) {
            
    // form saving:
            
    $database->setQuery('select * from #__sfg_forms where `id`='.intval($val));
            
    $row $database->loadAssocList();
            
    $row $row[0];
            
    $s2='';
            foreach (
    $row as $key => $value) if ($key!='id'$s2 .= ',`'.$key.'`='.$database->Quote($value);
            if (
    $s2!=''$s .= 'insert into #__sfg_forms set '.substr($s21)."; \n";
            
    // db table saving:
            
    $_REQUEST['formid'] = $val;
            
    $form = new SFG_Engine;
            
    $form->loadForm();
            
    $form->parseXML();
            
    $dbname = isset($form->formXMLStruct['database']['name']) ? $form->formXMLStruct['database']['name'] : '';
            if (
    $dbname=='') continue;
            
    $database->setQuery('show columns from `'.$dbname.'`');
            
    $result $database->loadAssocList();
            
    $fields '';
            
    $keys '';
            foreach (
    $result as $field) {
                 
    $null $field['Null']=='YES' 'NULL' 'NOT NULL';
                 
    $default $field['Default']=='' "default ''" "default '".$field['Default']."'";
                 if (
    $field['Extra']=='auto_increment'$default '';
                 
    $fields .= "`".$field['Field']."` ".$field['Type']." ".$null." ".$default." ".$field['Extra'].", ";
                 if (
    $field['Key'] == 'PRI'$keys .= "PRIMARY KEY (".$field['Field']."), ";
            }
            if (
    $keys==''){
                
    $fields substr($fields0strlen($fields)-2);
            }else{
                
    $keys substr($keys0strlen($keys)-2);
            }
            
    $s .= "###sfg_dump_separator### \n";
            
    $s .= "create table if not exists `".$dbname."` (".$fields." ".$keys."); \n";
        }
        if (
    $s!='') {
            @
    ob_end_clean(); // clear output buffer
            
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
            
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
            
    header("Content-type: application/x-download");
            
    header("Content-Transfer-Encoding: binary");
            
    header("Accept-Ranges: bytes");
            
    header("Content-Length: ".strlen($s));
            
    header("Content-Disposition: attachment; filename=sfg_dump.sql");
            echo 
    $s;
            exit;
        }
        
    redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['Cannot backup form(s)']);
    }
    function 
    downloadFile() {
        if (isset(
    $_REQUEST['filename'])) $filename $_REQUEST['filename']; else redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['No filename specified']);
        if (!
    file_exists($GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/files/'.$filename)) redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['File does not physically exist']);
        
    $name substr($filename,strpos($filename,'-')+1);
        @
    ob_clean(); // clear output buffer
        
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
        
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
        
    header("Content-type: application/x-download");
        
    header("Content-Transfer-Encoding: binary");
        
    header("Accept-Ranges: bytes");
        
    header("Content-Length: ".filesize($GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/files/'.$filename));
        
    header("Content-Disposition: attachment; filename=\"$name\"");
        
    readfile($GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/files/'.$filename);
        exit;
    }
    function 
    removeRecord($cid) {
        global 
    $database$mainframe$mosConfig_list_limit;
        if (isset(
    $_REQUEST['formid'])) $formid intval($_REQUEST['formid']); else redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['No form id specified']);
        
    $database=JFactory::getDBO();
        
    $database->setQuery('select `id` from #__sfg_forms where `id`='.$formid);
        if (
    intval($database->loadResult())==0redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['Form does not exist']);
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/engine.php');
        
    $form = new SFG_Engine;
        
    $_REQUEST['formid'] = $formid;
        
    $form->loadForm();
        
    $form->parseXML();
        
    $dbname = isset($form->formXMLStruct['database']['name']) ? $form->formXMLStruct['database']['name'] : '';
        if (
    $dbname==''redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['The form does not have associated BD Table']);
        
    $database->setQuery('delete from `'.$dbname.'` where `id` in ('.implode(',',$cid).')');
        
    $database->query();
        
    redirect('index.php?option=com_sfg&task=showdatalist&formid='.$formid$GLOBALS['sfg']['translations']['Record(s) have been removed']);    
    }
    function 
    saveRecord($mode) {
        global 
    $database$mainframe$mosConfig_list_limit;
        if (isset(
    $_REQUEST['formid'])) $formid intval($_REQUEST['formid']); else redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['No form id specified']);
        if (isset(
    $_REQUEST['rid'])) $rid intval($_REQUEST['rid']); else redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['No record id specified']);
        
    $database=JFactory::getDBO();
        
    $database->setQuery('select `id` from #__sfg_forms where `id`='.$formid);
        if (
    intval($database->loadResult())==0redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['Form does not exist']);
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/engine.php');
        
    $form = new SFG_Engine;
        
    $_REQUEST['formid'] = $formid;
        
    $form->loadForm();
        
    $form->parseXML();
        
    $dbname = isset($form->formXMLStruct['database']['name']) ? $form->formXMLStruct['database']['name'] : '';
        if (
    $dbname==''redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['The form does not have associated BD Table']);
        
    $database->setQuery('show columns from `'.$dbname.'`');
        
    $rows $database->loadAssocList();
        
    $columns = array();
        foreach (
    $rows as $value$columns[] = $value['Field'];
        foreach (
    $_POST as $key => $value) if (in_array($key$columns)) {
            
    $database->setQuery('update `'.$dbname.'` set `'.$key.'`='.$database->Quote($value).' where `id`='.$rid);
            
    $database->query();
        }
        
    redirect('index.php?option=com_sfg&task='.(($mode==0)?'showrecord':'editrecord').'&formid='.$formid.'&rid='.$rid$GLOBALS['sfg']['translations']['Record has been updated']);
    }
    function 
    showRecord($option$mode) {
        global 
    $database$mainframe$mosConfig_list_limit;
        if (isset(
    $_REQUEST['formid'])) $formid intval($_REQUEST['formid']); else redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['No form id specified']);
        if (isset(
    $_REQUEST['rid'])) $rid intval($_REQUEST['rid']); else redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['No record id specified']);
        
    $database=JFactory::getDBO();
        
    $database->setQuery('select `id` from #__sfg_forms where `id`='.$formid);
        if (
    intval($database->loadResult())==0redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['Form does not exist']);
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/engine.php');
        
    $form = new SFG_Engine;
        
    $_REQUEST['formid'] = $formid;
        
    $form->loadForm();
        
    $form->parseXML();
        
    $dbname = isset($form->formXMLStruct['database']['name']) ? $form->formXMLStruct['database']['name'] : '';
        if (
    $dbname==''redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['The form does not have associated BD Table']);
        
    $database->setQuery('select * from `'.$dbname.'` where `id`='.$rid);
        
    $row $database->loadAssocList();
        
    $row $row[0];
        if (!
    is_array($row)) redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['Record does not exist']);
        
    HTML_sfg::showRecord($row$option$form$formid$rid$mode);
    }
    function 
    showDataList($option$task$cid) {
        
    //echo $_SESSION['sfg']['forms_limit'];die;
        
    global $database$mainframe$mosConfig_list_limit;
        if (isset(
    $_REQUEST['formid'])) $formid intval($_REQUEST['formid']); else redirect('index.php?option=com_sfg','No form id specified');
        
    $database=JFactory::getDBO();
        
    $_SESSION['sfg'][$formid]['data_limit'] = isset($_SESSION['sfg'][$formid]['data_limit']) ? $_SESSION['sfg'][$formid]['data_limit'] : 0;
        
    $_SESSION['sfg'][$formid]['data_limitstart'] = isset($_SESSION['sfg'][$formid]['data_limitstart']) ? $_SESSION['sfg'][$formid]['data_limitstart'] : 0;
        
    $_SESSION['sfg'][$formid]['data_limit'] = (isset($_POST["limit"]) && ($_POST["limit"]!=0) && isset($_POST["referer"]) && ($_POST["referer"]=="datalist")) ? $_POST["limit"] : $_SESSION['sfg'][$formid]['data_limit'];
        
    $_SESSION['sfg'][$formid]['data_limitstart'] = (isset($_POST["limitstart"]) && isset($_POST["referer"]) && ($_POST["referer"]=="datalist")) ? $_POST["limitstart"] : $_SESSION['sfg'][$formid]['data_limitstart'];
        
    $limit = ($_SESSION['sfg'][$formid]['data_limit']!=0) ? $_SESSION['sfg'][$formid]['data_limit'] : $mainframe->getUserStateFromRequest'global.list.limit''limit'$mainframe->getCfg('list_limit'), 'int' );
        
    $limitstart = ($_SESSION['sfg'][$formid]['data_limitstart']!=0) ? $_SESSION['sfg'][$formid]['data_limitstart'] : $mainframe->getUserStateFromRequest"viewdata{$option}limitstart"'limitstart'0'int' );
        
    //$limit = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
        //$limitstart = $mainframe->getUserStateFromRequest( "viewdata{$option}limitstart", 'limitstart', 0, 'int' );
        
    $database->setQuery('select `id` from #__sfg_forms where `id`='.$formid);
        if (
    intval($database->loadResult())==0redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['Form does not exist']);
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/components/com_sfg/engine.php');
        
    $form = new SFG_Engine;
        
    $_REQUEST['formid'] = $formid;
        
    $form->loadForm();
        
    $form->parseXML();
        
    $dbname = isset($form->formXMLStruct['database']['name']) ? $form->formXMLStruct['database']['name'] : '';
        if (
    $dbname==''redirect('index.php?option=com_sfg',$GLOBALS['sfg']['translations']['The form does not have associated BD Table']);
        
    $database->setQuery('show columns from `'.$dbname.'`');
        
    $columns $database->loadAssocList();
        
    //remove fields, wich not exist on form
        
    $columns2 = array();
        foreach(
    $columns as $column){
            
    $column_name $column['Field'];
            
    $element_name false;
            
    //retriving relative form element name for db field
            
    foreach($form->formXMLStruct['database']['mapping'] as $map_element){
                if (
    $map_element['dbfield'] == $column_name){
                    
    $element_name $map_element['sfgfield'];
                }
            }
            
    //check if element exist on form
            
    if ($element_name !== false && $element_name != ''){
                foreach(
    $form->formXMLStruct['elements'] as $element){
                    foreach(
    $element['attributes'] as $attr){
                        if (
    $attr['name'] == 'name' && $attr['value'] == $element_name)
                            if (!
    in_array($column$columns2)) $columns2[] = $column;
                    }
                }
            }
            else{
                
    //if db mapping does not contain element name for current db field
                
    if (!in_array($column$columns2)) $columns2[] = $column;
            }
        }
        
    $columns $columns2;
        
    $allcolumns $columns;
        
    // get saved params from database:
        
    if (!isset($_GET['reset']) || $_GET['reset']!=1){
            
    $database->setQuery('select params from #__sfg_forms where `id`='.$formid);
            
    $params $database->loadResult();
            if (
    $params!=""){
                
    $params_arr explode("&"$params);
                foreach (
    $params_arr as $value) {
                    
    $array_for_get = array();
                    
    $array_for_get explode("="$value2);
                    
    $_GET[$array_for_get[0]] = !isset($_GET[$array_for_get[0]]) ? $array_for_get[1] : $_GET[$array_for_get[0]];
                }
            }
        }
        
    $conditions '';
        if (isset(
    $_GET['srt'])){
            
    $srt $_GET['srt'];
            
    $conditions .= ($conditions=='') ? 'srt='.$_GET['srt'] : '&srt='.$_GET['srt'];
        }else{
            
    $srt $columns[0]['Field'];
        }
        if (isset(
    $_GET['ord'])){
            
    $ord 1-intval($_GET['ord']);
            
    $conditions .= ($conditions=='') ? 'ord='.$_GET['ord'] : '&ord='.$_GET['ord'];
        }else{
            
    $ord 0;
        }
        if (isset(
    $_GET['columns'])) {
            
    $cols explode('|',$_GET['columns']);
            
    $conditions .= ($conditions=='') ? 'columns='.$_GET['columns'] : '&columns='.$_GET['columns'];
            for (
    $i=count($columns)-1$i>=0$i--) if (!in_array($columns[$i]['Field'],$cols)) array_splice($columns,$i,1);
        }
        
    $s '';
        if (isset(
    $_GET['filter'])) {
            
    $filter2 explode('|',$_GET['filter']);
            
    $conditions .= ($conditions=='') ? 'filter='.$_GET['filter'] : '&filter='.$_GET['filter'];
            
    $filter = array();
            for (
    $i=0$i<count($filter2); $i+=4) if (isset($filter2[$i]) && isset($filter2[$i+1]) && isset($filter2[$i+2]) && isset($filter2[$i+3])) $filter[] = array($filter2[$i],$filter2[$i+1],$filter2[$i+2],$filter2[$i+3]);
            for (
    $i=0$i<count($filter); $i++) {
                if ((
    $filter[$i][1]=='not like' || $filter[$i][1]=='like') && strpos($filter[$i][2],'%')===false$s .= '`'.$filter[$i][0].'` '.$filter[$i][1].' '.$database->Quote('%'.$filter[$i][2].'%').' '.(($i<count($filter)-1)?$filter[$i][3]:'');
                else 
    $s .= '`'.$filter[$i][0].'` '.$filter[$i][1].' '.$database->Quote($filter[$i][2]).' '.(($i<count($filter)-1)?$filter[$i][3]:'');
            }
        } else 
    $filter = array();
        
    // save filter conditions in db:
        
    if (!isset($params) || $conditions!=$params){
            
    $database->setQuery("update #__sfg_forms set params='".$conditions."' where id='".$formid."' ");
            
    $database->query();
        }
        
    $database->setQuery('select count(*) from `'.$dbname.'`'.(($s!='')?' where '.$s:''));
        
    $total $database->loadResult();
        
    jimport('joomla.html.pagination'); 
        
    $pageNav = new JPagination$total$limitstart$limit );
        
    $database->setQuery'select * from `'.$dbname.'`'.(($s!='')?' where '.$s:'').' order by `'.$srt.'` '.(($ord==0)?'desc':''), $pageNav->limitstart$pageNav->limit );
        if (
    $task=='exportAll'$database->setQuery'select * from `'.$dbname.'`');
        if (
    $task=='exportData'$database->setQuery'select * from `'.$dbname.'`'.(($s!='')?' where ('.$s.') and `id` in ('.implode(',',$cid).')':' where `id` in ('.implode(',',$cid).')').' order by `'.$srt.'` '.(($ord==0)?'desc':''));
        
    $rows $database->loadAssocList();
        if (
    $task=='exportAll' || $task=='exportData'export($rows$form);
        
    HTML_sfg::showDataList$rows$pageNav$option$dbname$form->formXMLStruct$formid$columns$allcolumns$srt$ord$filter$form );
    }
    function 
    export($rows$form) {
        
    $database=JFactory::getDBO();
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('csv_charset'));
        
    $csv_charset $database->loadResult();
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('csv_delimiter'));
        
    $csv_delimiter $database->loadResult();
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('csv_encloser'));
        
    $csv_encloser $database->loadResult();
        if (
    $csv_delimiter=='tab'$csv_delimiter chr(9);
        
    $s '';
        if (
    count($rows)>0) {
            foreach (
    $rows[0] as $key => $row) {
                
    $element $form->getElementBasedOnDBID($key);
                if (
    is_array($element)) $fieldname $element['sfgalias']; else $fieldname='';
                if (
    $fieldname==''$fieldname=$GLOBALS['sfg']['translations']['No SFG Alias'];
                
    $s .= $csv_encloser.str_replace(array("\n",$csv_encloser),array('',$csv_encloser.$csv_encloser),$key.' ('.stripslashes($fieldname).')').$csv_encloser.$csv_delimiter;
            }
            
    $s=substr($s,0,strlen($s)-1)."\n";
            foreach (
    $rows as $row) {
                foreach (
    $row as $key => $value) {
                    
    $s .= $csv_encloser.str_replace(array("\n","\r",$csv_encloser),array('','',$csv_encloser.$csv_encloser),stripslashes($value)).$csv_encloser.$csv_delimiter;
                }
                
    $s=substr($s,0,strlen($s)-1)."\n";
            }
        }
        if (
    $csv_charset != 'default'$s utf8_converter($s$csv_charset);
        @
    ob_clean(); // clear output buffer
        
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
        
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
        
    header("Content-type: application/x-download");
        
    header("Content-Transfer-Encoding: binary");
        
    header("Accept-Ranges: bytes");
        
    header("Content-Length: ".strlen($s));
        
    header('Content-Disposition: attachment; filename="dataexport.csv"');
        echo 
    $s;
        exit;
    }
    function 
    utf8_converter($str$charset 'CP1252') {
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/charset_converter/utf8.class.php');
        
    $converter = new utf8($GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/charset_converter/'.$charset.'.MAP');
        return 
    $converter->utf8ToStr($str);    
    }
    function 
    showForms($option) {
        global 
    $database$mainframe$mosConfig_list_limit;
        
    $database=JFactory::getDBO();
        
    $_SESSION['sfg']['forms_limit'] = isset($_SESSION['sfg']['forms_limit']) ? $_SESSION['sfg']['forms_limit'] : 0;
        
    $_SESSION['sfg']['forms_limitstart'] = isset($_SESSION['sfg']['forms_limitstart']) ? $_SESSION['sfg']['forms_limitstart'] : 0;
        
    $_SESSION['sfg']['forms_limit'] = (isset($_POST["limit"]) && ($_POST["limit"]!=0) && isset($_POST["referer"]) && ($_POST["referer"]=="formslist")) ? $_POST["limit"] : $_SESSION['sfg']['forms_limit'];
        
    $_SESSION['sfg']['forms_limitstart'] = (isset($_POST["limitstart"]) && isset($_POST["referer"]) && ($_POST["referer"]=="formslist")) ? $_POST["limitstart"] : $_SESSION['sfg']['forms_limitstart'];
        
    $limit = ($_SESSION['sfg']['forms_limit']!=0) ? $_SESSION['sfg']['forms_limit'] : $mainframe->getUserStateFromRequest'global.list.limit''limit'$mainframe->getCfg('list_limit'), 'int' );
        
    $limitstart = ($_SESSION['sfg']['forms_limitstart']!=0) ? $_SESSION['sfg']['forms_limitstart'] : $mainframe->getUserStateFromRequest"viewforms{$option}limitstart"'limitstart'0'int' );
        
    //$limit        = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
        //$limitstart = $mainframe->getUserStateFromRequest( "viewforms{$option}limitstart", 'limitstart', 0, 'int' );
        
    $database->setQuery('select count(*) from #__sfg_forms');
        
    $total $database->loadResult();
        
    jimport('joomla.html.pagination'); 
        
    $pageNav = new JPagination$total$limitstart$limit );
        
    $database->setQuery'select * from #__sfg_forms order by `id`'$pageNav->limitstart$pageNav->limit );
        
    $rows $database->loadObjectList();
        
    HTML_sfg::showForms$rows$pageNav$option );
    }
    function 
    showPlugins($option) {
        global 
    $database$mainframe$mosConfig_list_limit;
        
    $database=JFactory::getDBO();
        
    $_SESSION['sfg']['plugins_limit'] = isset($_SESSION['sfg']['plugins_limit']) ? $_SESSION['sfg']['plugins_limit'] : 0;
        
    $_SESSION['sfg']['plugins_limitstart'] = isset($_SESSION['sfg']['plugins_limitstart']) ? $_SESSION['sfg']['plugins_limitstart'] : 0;
        
    $_SESSION['sfg']['plugins_limit'] = (isset($_POST["limit"]) && ($_POST["limit"]!=0) && isset($_POST["referer"]) && ($_POST["referer"]=="pluginslist")) ? $_POST["limit"] : $_SESSION['sfg']['plugins_limit'];
        
    $_SESSION['sfg']['plugins_limitstart'] = (isset($_POST["limitstart"]) && isset($_POST["referer"]) && ($_POST["referer"]=="pluginslist")) ? $_POST["limitstart"] : $_SESSION['sfg']['plugins_limitstart'];
        
    $limit = ($_SESSION['sfg']['plugins_limit']!=0) ? $_SESSION['sfg']['plugins_limit'] : $mainframe->getUserStateFromRequest'global.list.limit''limit'$mainframe->getCfg('list_limit'), 'int' );
        
    $limitstart = ($_SESSION['sfg']['plugins_limitstart']!=0) ? $_SESSION['sfg']['plugins_limitstart'] : $mainframe->getUserStateFromRequest"viewplugins{$option}limitstart"'limitstart'0'int' );
        
    //$limit        = $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
        //$limitstart = $mainframe->getUserStateFromRequest( "viewplugins{$option}limitstart", 'limitstart', 0, 'int' );
        
    $database->setQuery('select count(*) from #__sfg_plugins');
        
    $total $database->loadResult();
        
    jimport('joomla.html.pagination'); 
        
    $pageNav = new JPagination$total$limitstart$limit );
        
    $database->setQuery'select * from #__sfg_plugins order by `ordering`'$pageNav->limitstart$pageNav->limit );
        
    $rows $database->loadObjectList();
        
    HTML_sfg::showPlugins$rows$pageNav$option );
    }
    function 
    publishPlugin($mode$cid) {
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $database->setQuery("update #__sfg_plugins set published=$mode where id in (".implode($cid,',').")");
        
    $database->query();
        
    redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Selected plugins have been successfully'].' '.(($mode==1)?$GLOBALS['sfg']['translations']['activated']:$GLOBALS['sfg']['translations']['deactivated']) );
    }
    function 
    savePluginOrder($cid$mode) {
        
    $database=JFactory::getDBO();
        
    $order $_POST['order'];
        if (
    $mode == 0) {
            foreach (
    $cid as $key => $value) {
                
    $database->setQuery('update #__sfg_plugins set `ordering`='.$order[$key].' where `id`='.$value);
                
    $database->query();
            }
        } else {
            
    $database->setQuery'select `id`, `ordering` from #__sfg_plugins order by `ordering`');
            
    $rows $database->loadAssocList();
            foreach (
    $rows as $key => $value) if ($rows[$key]['id'] == @$cid[0]) {
                
    $tmp $rows[$key]['id'];
                if (
    $mode == 1) {$rows[$key]['id'] = $rows[$key-1]['id']; $rows[$key-1]['id'] = $tmp; }
                else {
    $rows[$key]['id'] = $rows[$key+1]['id']; $rows[$key+1]['id'] = $tmp; }
                break;
            }
            foreach (
    $rows as $key => $value) {
                
    $database->setQuery('update #__sfg_plugins set `ordering`='.($key+1).' where `id`='.$value['id']);
                
    $database->query();
            }
        }
        
    redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Plugins were reordered'] );
    }
    function 
    remove_directory($directory$empty=false) {
        if(
    substr($directory,-1) == '/'$directory substr($directory,0,-1);
        if(!
    file_exists($directory) || !is_dir($directory)) return false;
        elseif(!
    is_readable($directory)) return false;
        else {
            
    $handle opendir($directory);
            while (
    false !== ($item readdir($handle))) {
                if(
    $item != '.' && $item != '..') {
                    
    $path $directory.'/'.$item;
                    if(
    is_dir($path)) remove_directory($path); else unlink($path);
                }
            }
            
    closedir($handle);
            if(
    $empty == false)    {
                if(!
    rmdir($directory)) return false;
            }
            return 
    true;
        }
    }
    function 
    uploadPlugin() {
        
    $database=JFactory::getDBO();
        if (!isset(
    $_FILES['upload'])) redirect'index.php?option=com_sfg&task=plugins''' );
        if (!
    file_exists($_FILES['upload']['tmp_name'])) redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot upload the file'] );
        
    $tmp_dir $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/tmp/'.md5(date('r'));
        if (!
    mkdir($tmp_dir0777)) redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot create a temporary directory. Please check permissions:'].' '.$GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/tmp' );
        @
    chmod($tmp_dir0777);
        if (!
    file_exists($GLOBALS['mosConfig_absolute_path'].'/libraries/joomla/filesystem/archive/zip.php') || !file_exists($GLOBALS['mosConfig_absolute_path'].'/libraries/joomla/filesystem/file.php')) {remove_directory($tmp_dir); redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot find ZIP unpacker in the system. Please contact IToris support'] ); }
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/libraries/joomla/filesystem/archive/zip.php');
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/libraries/joomla/filesystem/file.php');
        
    $zip = new JArchiveZip;
        
    $res $zip->extract($_FILES['upload']['tmp_name'], $tmp_dir); 
        if (
    $res != true) {remove_directory($tmp_dir); redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot unpack the archive.'].' '.$zip->get('error.message') ); }
        
    //find & read manifest.xml file
        
    if (!file_exists($tmp_dir.'/manifest.xml')) {remove_directory($tmp_dir); redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot find manifest.xml file in the archive'] );}
        
    $s = @file_get_contents($tmp_dir.'/manifest.xml');
        if (!
    $s) {remove_directory($tmp_dir); redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot read manifest.xml structure file'] ); }
        
    $vals xmlParser($s);
        
    $i=0;
        
    $plugin = array('name'=>'[no name]''alias'=>'''comments'=>'''date'=>'''author'=>'''version'=>'''installfile'=>'''unistallfile'=>'''triggers'=>array());
        while(
    $i<count($vals)) {
            if (
    $vals[$i]['tag']=='NAME'$plugin['name'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='ALIAS'$plugin['alias'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='DESCRIPTION'$plugin['comments'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='DATE'$plugin['date'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='AUTHOR'$plugin['author'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='VERSION'$plugin['version'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='INSTALLFILE'$plugin['installfile'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='UNINSTALLFILE'$plugin['unistallfile'] = trim($vals[$i]['value']);
            if (
    $vals[$i]['tag']=='TRIGGERS') {
                
    $level $vals[$i]['level'];
                
    $i++;
                while (
    $i<count($vals) && $vals[$i]['level']>$level) {
                    if (
    $vals[$i]['tag']=='TRIGGER'$plugin['triggers'][] = array('area'=>@$vals[$i]['attributes']['AREA'], 'name'=>@$vals[$i]['attributes']['NAME'], 'file'=>@$vals[$i]['attributes']['FILE'], 'action'=>@$vals[$i]['attributes']['ACTION']);
                    
    $i++;
                }
            }
            
    $i++;
        }
        if (
    $plugin['alias']=='') {remove_directory($tmp_dir); redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Error: No plugin alias in manifest.xml'] ); }
        
    $new_dir $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/imported/'.$plugin['alias'];
        if (
    file_exists($new_dir)) {remove_directory($tmp_dir); redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Target directory currently contains files:'].' '.$new_dir );}
        if (!
    rename($tmp_dir$new_dir)) redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot move files to the target place:'].' '.$new_dir );
        foreach (
    $plugin['triggers'] as $key => $value$plugin['triggers'][$key] = implode('|'$value);
        
    $plugin['triggers'] = implode("\n"$plugin['triggers']);
        
    $database->setQuery('select max(`ordering`) from #__sfg_plugins');
        
    $max intval($database->loadResult())+1;
        
    $database->setQuery('insert into #__sfg_plugins set `name`='.$database->Quote($plugin['name']).', `alias`='.$database->Quote($plugin['alias']).', `comments`='.$database->Quote($plugin['comments']).', `author`='.$database->Quote($plugin['author']).', `version`='.$database->Quote($plugin['version']).', `date`='.$database->Quote($plugin['date']).', `published`=1, `params`='.$database->Quote($plugin['triggers']).', `ordering`='.$max);
        
    $database->query();
        if (isset(
    $plugin['installfile']) && $plugin['installfile']!=""){
           if (
    file_exists($new_dir.'/'.$plugin['installfile'])) require($new_dir.'/'.$plugin['installfile']);
        }
        
    redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Plugin have been installed successfully'] );
    }
    function 
    uninstallPlugins($cid) {
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $database->setQuery('select * from #__sfg_plugins where `id` in ('.implode(','$cid).')');
        
    $rows $database->loadAssocList();
        foreach(
    $rows as $value) {
            
    $database->setQuery('delete from #__sfg_plugins where `id`='.$value['id']);
            
    $database->query();
            
    $dir $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/plugins/imported/'.$value['alias'];
            if (
    file_exists($dir.'/manifest.xml')) {
                
    $s = @file_get_contents($dir.'/manifest.xml');
                
    $vals xmlParser($s);
                
    $unistallfile '';
                
    $i=0;
                while(
    $i<count($vals)) {
                    if (
    $vals[$i]['tag']=='UNINSTALLFILE'$unistallfile trim($vals[$i]['value']);
                    
    $i++;
                }
                if (
    $unistallfile != '' && file_exists($dir.'/'.$unistallfile)) {
                    require(
    $dir.'/'.$unistallfile);
                    
    //$s = @file_get_contents($dir.'/'.$unistallfile);
                    /*
    ?>
    <?php
    */
                
    }
            }
            
    $res remove_directory($dir);
            if (
    $res == falseredirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Cannot remove directory'].' '.$dir );
        }
        
    redirect'index.php?option=com_sfg&task=plugins'$GLOBALS['sfg']['translations']['Selected plugins have been uninstalled'] );
    }
    function 
    xmlParser($s) {
        
    $xml_parser xml_parser_create();
        
    $s str_replace('&','%amp;',$s);
        
    xml_parse_into_struct($xml_parser$s$vals2$index);
        
    xml_parser_free($xml_parser);
        foreach(
    $vals2 as $key => $value) {
            if (
    is_array($vals2[$key])) foreach($vals2[$key] as $key2 => $value2) {
                if (
    is_array($vals2[$key][$key2])) foreach($vals2[$key][$key2] as $key3 => $value3) {
                    
    $vals2[$key][$key2][$key3]=str_replace('%amp;','&',$vals2[$key][$key2][$key3]);
                    
    $vals2[$key][$key2][$key3]=str_replace(array('<','>','&','"'),array('<','>','&','"'),$vals2[$key][$key2][$key3]);
                } else {
                    
    $vals2[$key][$key2]=str_replace('%amp;','&',$vals2[$key][$key2]);
                    
    $vals2[$key][$key2]=str_replace(array('<','>','&','"'),array('<','>','&','"'),$vals2[$key][$key2]);
                }
            } else {
                
    $vals2[$key]=str_replace('%amp;','&',$vals2[$key]);
                
    $vals2[$key]=str_replace(array('<','>','&','"'),array('<','>','&','"'),$vals2[$key]);
            }
        }
        
    $vals = array();
        foreach (
    $vals2 as $value) if ($value['type']=='open' || $value['type']=='complete'$vals[] = $value;
        return 
    $vals;
    }
    function 
    redirect($url$message='') {
        global 
    $mainframe;
        if (
    defined'_JEXEC' )) $mainframe->redirect($url$message);
    }
    function 
    checkToken() {
        if (isset(
    $_GET['token'])) $token $_GET['token'];
        
    $session JFactory::getSession();
        if (!isset(
    $token) || $token != $session->get('sfg_token')) redirect($GLOBALS['mosConfig_live_site'].'/administrator/index.php?option=com_sfg&token='.$session->get('sfg_token'));
        
    $session->set('sfg_token',rand());
    }
    function 
    saveForm() {
        if (isset(
    $_GET['fid'])) $fid $_GET['fid']; else $fid 0;
        
    $content $_POST['content'];
        
    $length $_POST['length'];
        
    $name = isset($_POST['name']) ? $_POST['name'] : '';
        if (
    $name == '') {echo 'Form should have name'; exit;}
        
    $description = isset($_POST['description']) ? $_POST['description'] : '';
        
    $rep_array = array(array('%amp;''%plus;''%quot;''%ss;''#amp#''#plus#''#quot#''#pr#''#ss#''#or#'),array('&''+'"'"'$''&''+'"'"'%''$''|'));
        
    $content str_replace($rep_array[0],$rep_array[1],$content);
        
    $name str_replace($rep_array[0],$rep_array[1],$name);
        
    $description str_replace($rep_array[0],$rep_array[1],$description);
        if (
    strlen($content) == || intval($length) == || abs(1-strlen($content)/intval($length)) > 0.5) {echo str_replace("\\n""\n"$GLOBALS['sfg']['translations']['The form cannot be saved because of incorrect checksum!\nPlease try again.\nIf the problem persists please contact IToris support']); exit;}
        global 
    $database;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        if (
    intval($fid) == 0) {
            
    $database->setQuery('insert into #__sfg_forms set `form`='.$database->Quote($content).', `name`='.$database->Quote($name).', `description`='.$database->Quote($description));
            
    $database->query();
            if (
    method_exists($database'getErrorMsg') && $database->getErrorMsg() != '' || !method_exists($database'getErrorMsg') && $database->_errorMsg!='') echo $GLOBALS['sfg']['translations']['Database has returned error. Cannot save the form']; else {
                
    $database->setQuery('select max(`id`) from #__sfg_forms');
                
    $fid intval($database->loadResult());
                echo 
    intval($fid).' '.$GLOBALS['sfg']['translations']['Form has been saved successfully'];
            }
        } else {
            
    $database->setQuery('update #__sfg_forms set `form`='.$database->Quote($content).', `name`='.$database->Quote($name).', `description`='.$database->Quote($description).' where `id`='.intval($fid));
            
    $database->query();
            if (
    method_exists($database'getErrorMsg') && $database->getErrorMsg() != '' || !method_exists($database'getErrorMsg') && $database->_errorMsg!='') echo $GLOBALS['sfg']['translations']['Database has returned error. Cannot update the form']; else echo intval($fid).' '.$GLOBALS['sfg']['translations']['Form has been updated successfully'];
            
    $database->setQuery('delete from #__sfg_forms_cache where `form_id`='.intval($fid));
            
    $database->query();
        }
        exit;
    }
    function 
    checkConfiguration() {
        global 
    $database;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $prefix $database->getPrefix();
        
    $tables $database->getTableList();
        if (!
    in_array($prefix.'sfg_forms_cache'$tables)) {
            
    $s='CREATE TABLE `#__sfg_forms_cache` (
                `form_id` INT NOT NULL ,
                `cache` MEDIUMBLOB NOT NULL ,
                `status` TINYINT NOT NULL
                );'
    ;
            
    $database->setQuery($s);
            
    $database->query();
        }
        if (!
    in_array($prefix.'sfg_forms'$tables)) {
            
    $s='CREATE TABLE `#__sfg_forms` (
                `id` INT NOT NULL AUTO_INCREMENT ,
                `status` TINYINT NOT NULL ,
                `name` VARCHAR(255) NOT NULL ,
                `description` TEXT NOT NULL ,
                `form` LONGTEXT NOT NULL ,
                `params` TEXT NOT NULL ,
                PRIMARY KEY ( `id` )
                );'
    ;
            
    $database->setQuery($s);
            
    $database->query();
        }
        if (!
    in_array($prefix.'sfg_settings'$tables)) {
            
    $s='CREATE TABLE `#__sfg_settings` (
                `var` varchar(255) NOT NULL default '
    .$database->Quote('').',
                `val` text NOT NULL
                );'
    ;
            
    $database->setQuery($s);
            
    $database->query();
            
    $database->setQuery('INSERT INTO `#__sfg_settings` VALUES ('.$database->Quote('updating_mode').', '.$database->Quote('1').');');
            
    $database->query();
            
    $database->setQuery('INSERT INTO `#__sfg_settings` VALUES ('.$database->Quote('last_update').', '.$database->Quote('2009-01-30 23:26:08').');');
            
    $database->query();
            
    $database->setQuery('INSERT INTO `#__sfg_settings` VALUES ('.$database->Quote('component_access').', '.$database->Quote('all').');');
            
    $database->query();
            
    $database->setQuery('INSERT INTO `#__sfg_settings` VALUES ('.$database->Quote('secret').', '.$database->Quote('').');');
            
    $database->query();
        }
        
    // check if plugin already added
        
    if (in_array($prefix.'plugins'$tables)) {
            
    // Joomla 1.5 line
            
    $database->setQuery ('select `id` from `#__plugins` where `element`='.$database->Quote('sfg'));
            
    $plugins $database->loadAssocList();
            if (
    count($plugins)==0) {
                
    $database->setQuery("INSERT INTO `#__plugins` VALUES ('', 'Content - SmartFormer Gold', 'sfg', 'content', 0, 0, 1, 0, 0, 0, '0000-00-00 00:00:00', '');");
                
    $database->query();
            } else if (
    count($plugins)>1) {
                
    //remove unnecessary
                
    $s ''; for ($i=1$i<count($plugins); $i++) $s .= $plugins[$i]['id'].',';        
                
    $database->setQuery('delete from `#__plugins` where `id` in ('.$s.'0)');
                
    $database->query();
            }
        }
        if (
    in_array($prefix.'extensions'$tables)) {
            
    //Joomla 1.6 line
            
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('sfg').' and `type`='.$database->Quote('plugin'));
            
    $id intval($database->loadResult());
            if (
    $id == 0) {
                
    $database->setQuery('insert into #__extensions set `name`='.$database->Quote('Content - Smart Former Gold').', `type`='.$database->Quote('plugin').', `element`='.$database->Quote('sfg').', `folder`='.$database->Quote('content').', `client_id`=0, `enabled`=1, `access`=1, `protected`=1');
                
    $database->query();
                
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('sfg').' and `type`='.$database->Quote('plugin'));
                
    $id intval($database->loadResult());
            }
            
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('mod_sfg').' and `type`='.$database->Quote('module'));
            
    $id intval($database->loadResult());
            if (
    $id == 0) {
                
    $database->setQuery('insert into #__extensions set `name`='.$database->Quote('Smart Former Gold form module').', `type`='.$database->Quote('module').', `element`='.$database->Quote('mod_sfg').', `folder`='.$database->Quote('').', `client_id`=0, `enabled`=1, `access`=1, `protected`=1');
                
    $database->query();
                
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('mod_sfg').' and `type`='.$database->Quote('module'));
                
    $id intval($database->loadResult());
            }    
        }
        
    //check if csv_charset variable is exist
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('csv_charset'));
        if (
    $database->loadResult()=='') {
            
    $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote('CP1252').', `var`='.$database->Quote('csv_charset'));
            
    $database->query();
        }
        
    //check if csv_delimiter variable is exist
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('csv_delimiter'));
        if (
    $database->loadResult()=='') {
            
    $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote(',').', `var`='.$database->Quote('csv_delimiter'));
            
    $database->query();
        }
        
    //check if csv_encloser variable is exist
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('csv_encloser'));
        if (
    $database->loadResult()=='') {
            
    $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote('"').', `var`='.$database->Quote('csv_encloser'));
            
    $database->query();
        }
        
    //check if language variable is exist
        
    $database->setQuery('select `val` from #__sfg_settings where `var`='.$database->Quote('language'));
        if (
    $database->loadResult()=='') {
            
    $database->setQuery('insert into #__sfg_settings set `val`='.$database->Quote('en').', `var`='.$database->Quote('language'));
            
    $database->query();
        }
        if (
    in_array($prefix.'components'$tables)) {
            
    //Joomla 1.5 line
            
    $database->setQuery('select `id` from #__components where `admin_menu_link`="option=com_sfg" and `parent`<>0');
            
    $id intval($database->loadResult());
            if (
    $id==0) {
                
    $database->setQuery('select `id` from #__components where `admin_menu_link`="option=com_sfg" and `parent`=0');
                
    $id intval($database->loadResult());
                if (
    $id>0) {
                    
    $database->setQuery('insert into #__components set `name`="Form Manager", `parent`='.$id.', `admin_menu_link`="option=com_sfg", `admin_menu_alt`="Form Manager", `option`="com_sfg", `ordering`=1, `admin_menu_img`="js/ThemeOffice/component.png", `enabled`=1');
                    
    $database->query();
                    
    $database->setQuery('update #__components set `ordering`=2 where `link`="option=com_sfg_installer"');
                    
    $database->query();
                }
            }
            
    //check if SFG Plugin Manager menu item exists
            
    $database->setQuery('select `id` from #__components where `admin_menu_link`='.$database->Quote('option=com_sfg&task=plugins'));
            
    $id intval($database->loadResult());
            if (
    $id==0) {
                    
    $database->setQuery('select `id` from #__components where `admin_menu_link`="option=com_sfg" and `parent`=0');
                    
    $id intval($database->loadResult());
                    
    $database->setQuery('insert into #__components set `name`="SFG Plugin Manager", `parent`='.$id.', `admin_menu_link`="option=com_sfg&task=plugins", `admin_menu_alt`="SFG Plugin Manager", `option`="com_sfg", `ordering`=2, `admin_menu_img`="js/ThemeOffice/component.png", `enabled`=1');
                    
    $database->query();
                    
    $database->setQuery('update #__components set `ordering`=3 where `link`="option=com_sfg_installer"');
                    
    $database->query();
            }
        }
        if (
    in_array($prefix.'extensions'$tables)) {
            
    //Joomla 1.6 line
            
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('com_sfg').' and `type`='.$database->Quote('component'));
            
    $id intval($database->loadResult());
            if (
    $id == 0) {
                
    $database->setQuery('insert into #__extensions set `name`='.$database->Quote('SmartFormer Gold').', `type`='.$database->Quote('component').', `element`='.$database->Quote('com_sfg').', `client_id`=1, `enabled`=1, `access`=1, `protected`=0');
                
    $database->query();
                
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('com_sfg').' and `type`='.$database->Quote('component'));
                
    $id intval($database->loadResult());
            }
            
    $database->setQuery('select `id` from #__menu where `link`='.$database->Quote('index.php?option=com_sfg'));
            
    $m_id intval($database->loadResult());
            if (
    $m_id == 0) {
                
    $database->setQuery('insert into #__menu set `menutype`='.$database->Quote('menu').', `title`='.$database->Quote('SmartFormer Gold').', `alias`='.$database->Quote('SmartFormer Gold').', `path`='.$database->Quote('').', `link`='.$database->Quote('index.php?option=com_sfg').', `type`='.$database->Quote('component').', `language`='.$database->Quote('*').', `published`=1, `parent_id`=1, `level`=2, `client_id`=1, `component_id`='.$id.', `access`=0');
                
    $database->query();
                
    $database->setQuery('select `id` from #__menu where `link`='.$database->Quote('index.php?option=com_sfg'));
                
    $m_id intval($database->loadResult());
                
    $database->setQuery('insert into #__menu set `menutype`='.$database->Quote('menu').', `title`='.$database->Quote('Form Manager').', `alias`='.$database->Quote('Form Manager').', `path`='.$database->Quote('').', `link`='.$database->Quote('index.php?option=com_sfg').', `type`='.$database->Quote('component').', `language`='.$database->Quote('*').', `published`=1, `parent_id`='.$m_id.', `level`=2, `client_id`=1, `ordering`=0, `component_id`='.$id.', `access`=0');
                
    $database->query();
                
    $database->setQuery('insert into #__menu set `menutype`='.$database->Quote('menu').', `title`='.$database->Quote('SFG Plugin Manager').', `alias`='.$database->Quote('SFG Plugin Manager').', `path`='.$database->Quote('').', `link`='.$database->Quote('index.php?option=com_sfg&task=plugins').', `type`='.$database->Quote('component').', `language`='.$database->Quote('*').', `published`=1, `parent_id`='.$m_id.', `level`=2, `client_id`=1, `ordering`=1, `component_id`='.$id.', `access`=0');
                
    $database->query();            
            }
            
    $database->setQuery('select `extension_id` from #__extensions where `element`='.$database->Quote('com_sfg_installer').' and `type`='.$database->Quote('component'));
            
    $iid intval($database->loadResult());
            if (
    $iid 0) {
                
    $database->setQuery('select `id` from #__menu where `parent_id`=1 and `link`='.$database->Quote('index.php?option=com_sfg_installer&task=install'));
                
    $m_iid intval($database->loadResult());
                if (
    $m_iid 0) {
                    
    $database->setQuery('delete from #__menu where `id`='.$m_iid);
                    
    $database->query();
                }
            }
        }
        
    //check if plugins table exists
        
    if (!in_array($prefix.'sfg_plugins'$tables)) {
            
    $s='CREATE TABLE `#__sfg_plugins` (
                `id` INT NOT NULL AUTO_INCREMENT ,
                `name` VARCHAR( 255 ) NOT NULL ,
                `alias` VARCHAR( 255 ) NOT NULL ,
                `comments` TEXT NOT NULL ,
                `author` VARCHAR( 255 ) NOT NULL ,
                `version` VARCHAR( 16 ) NOT NULL ,
                `date` VARCHAR( 50 ) NOT NULL ,
                `ordering` INT NOT NULL ,
                `published` TINYINT NOT NULL ,
                `params` TEXT NOT NULL ,
                PRIMARY KEY ( `id` )
                );'
    ;
            
    $database->setQuery($s);
            
    $database->query();
        }
        require_once(
    $GLOBALS['mosConfig_absolute_path'].'/administrator/components/com_sfg/examples/install_examples.php');
    }
    function 
    loadForm() {
        if (isset(
    $_GET['fid'])) $fid $_GET['fid']; else exit;
        global 
    $database;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $database->setQuery('select `form` from #__sfg_forms where `id`='.intval($fid));
        
    header ("content-type: text/xml");
        echo 
    $database->loadResult();
        exit;
    }
    function 
    publishForm($mode$cid) {
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $database->setQuery("update #__sfg_forms set status=$mode where id in (".implode($cid,',').")");
        
    $database->query();
        
    redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Selected forms have been successfully'].' '.(($mode==1)?$GLOBALS['sfg']['translations']['published']:$GLOBALS['sfg']['translations']['unpublished']) );
    }
    function 
    deleteForm($cid) {
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        
    $database->setQuery("delete from #__sfg_forms where id in (".implode($cid,',').")");
        
    $database->query();
        
    redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Selected forms have been successfully deleted'] );
    }
    function 
    cloneForm($cid) {
        global 
    $database$mainframe;
        if (
    defined'_JEXEC' )) $database=JFactory::getDBO();
        foreach(
    $cid as $value) {
            
    $database->setQuery('select * from #__sfg_forms where `id`='.intval($value));
            
    $row $database->loadAssocList();
            
    $row $row[0];
            
    $s '';
            
    $row['form'] = str_replace('<form name="'.$row['name'].'"','<form name="Copy of '.$row['name'].'"',$row['form']);
            
    $row['name'] = 'Copy of '.$row['name'];
            foreach (
    $row as $key => $value) if ($key!='id'$s.=', `'.$key.'`='.$database->Quote($value);
            
    $s 'insert into #__sfg_forms set'.substr($s1);
            
    $database->setQuery($s);
            
    $database->query();
        }
        
    redirect'index.php?option=com_sfg'$GLOBALS['sfg']['translations']['Selected form(s) have been cloned'] );
    }
     
    ?>
     
  10. half-bred

    half-bred Создатель

    Регистр.:
    5 июн 2008
    Сообщения:
    32
    Симпатии:
    5
    может у кого-то есть этот плагин SFG Record Controller plugin (v1.5)
     
Статус темы:
Закрыта.