Example #1
0
/**
 * show registration or login page
 *
 * @param object $PAGEDATA the page object
 *
 * @return HTML of the page
 */
function IssueTracker_front($PAGEDATA)
{
    require SCRIPTBASE . 'ww.plugins/issue-tracker/frontend/page_type.php';
    global $unused_uri;
    if (isset($unused_uri) && $unused_uri) {
        redirect($PAGEDATA->getRelativeURL() . '#' . preg_replace('/\\/$/', '', $unused_uri));
    }
    if (isset($_SESSION['userdata'])) {
        WW_addCSS('/j/jquery.multiselect/jquery.multiselect.css');
        WW_addScript('/j/jquery.multiselect/jquery.multiselect.min.js');
    }
    return $PAGEDATA->render() . $html . __FromJson(@$PAGEDATA->vars['footer']);
}
Example #2
0
function showCategoriesRecursive($pid, $level, $sid)
{
    $opts = array();
    $cs = dbAll('select id,name from products_categories where parent_id=' . $pid . ' order by name', false, 'products_categories');
    foreach ($cs as $c) {
        $opt = '<option value="' . $c['id'] . '"';
        if ($c['id'] == $sid) {
            $opt .= ' selected="selected"';
        }
        $opt .= '>' . str_repeat('&raquo;&nbsp;', $level) . htmlspecialchars(__FromJson($c['name'])) . '</option>';
        $opts[] = $opt;
        $opts[] = showCategoriesRecursive($c['id'], $level + 1, $sid);
    }
    return join('', $opts);
}
Example #3
0
/**
 * retrieve message for when someone tries to add an expired item to cart
 *
 * @return string message
 */
function OnlineStore_getExpiryNotification()
{
    $id = (int) $_REQUEST['id'];
    $p = dbRow('select * from products where id=' . $id);
    $product = Product::getInstance($id, $p, true);
    $typeid = $p['product_type_id'];
    $nfile = USERBASE . '/ww.cache/products/templates/expiry_notification_' . $typeid;
    if (!file_exists($nfile)) {
        $t = dbRow('select template_expired_notification from products_types where id=' . $typeid);
        $template = strlen($t['template_expired_notification']) > 4 ? $t['template_expired_notification'] : '' . __('This product has expired. You cannot add it to the cart.') . '';
        file_put_contents($nfile, $template);
    }
    require_once SCRIPTBASE . '/ww.incs/common.php';
    $smarty = Products_setupSmarty();
    $smarty->assign('product', $product);
    $smarty->assign('product_id', $product->get('id'));
    $smarty->assign('_name', __FromJson($product->name));
    $smarty->assign('_stock_number', $product->stock_number);
    return $smarty->fetch($nfile);
}
Example #4
0
        if (strpos($img, '<img') === 0) {
            $img = preg_replace('/>.*/', '', $img);
            $img = preg_replace('/.*src="([^"]*)".*/', '\\1', $img);
            $img = preg_replace('#^/f/#', '', $img);
            $thumb = '<img src="/a/f=getImg/w=' . $vars->thumbnailw . '/h=' . $vars->thumbnailh . '/' . $img . '" style="float:left;"/>';
        }
    }
    $body = '';
    if ($vars->characters_shown) {
        $body = preg_replace('#<h1[^<]*</h1>#', '', $pagerendered);
        $body = str_replace(array("\n", "\r"), ' ', $body);
        $body = preg_replace('/<script defer="defer"[^>]*>.*?<\\/script>/', '', $body);
        $body = preg_replace('/<[^>]*>/', '', $body);
        $body = '<br /><i>' . substr($body, 0, $vars->characters_shown) . '...</i>';
    }
    $links[] = '<a href="' . $page->getRelativeURL() . '"><strong>' . htmlspecialchars(__FromJson($page->name)) . '</strong><div class="date">' . Core_dateM2H($page->associated_date) . '</div><span class="news-body">' . $thumb . $body . '</span></a>';
}
$html .= '<div id="news-wrapper-' . $vars->id . '" class="news_excerpts_wrapper"><ul class="news_excerpts"><li>' . join('</li><li>', $links) . '</li></ul></div>';
if (isset($vars->scrolling) && $vars->scrolling) {
    $n_items = isset($vars->stories_to_show) && is_numeric($vars->stories_to_show) ? $vars->stories_to_show : 2;
    if (isset($vars->scrolling) && $vars->scrolling) {
        WW_addScript('/j/jquery.vticker.js');
        WW_addCSS('/ww.plugins/news/c/scroller.css');
        $html .= '<script defer="defer">$(function(){
			$("#news-wrapper-' . $vars->id . '").vTicker({
				speed: 15000,
				pause: 5000,
				showItems: ' . $n_items . ',
				animation: "",
				mousePause: true
			});
Example #5
0
 /**
  * get recursive details of pages to build a menu
  *
  * @param int   $parentid the parent's ID
  * @param int   $depth    current menu depth
  * @param array $options  any further options
  *
  * @return string HTML of the sub-menu
  */
 function menuBuildFg($parentid, $depth, $options)
 {
     $PARENTDATA = Page::getInstance($parentid)->initValues();
     // { menu order
     $order = 'ord,name';
     if (isset($PARENTDATA->vars['order_of_sub_pages'])) {
         switch ($PARENTDATA->vars['order_of_sub_pages']) {
             case 1:
                 // { alphabetical
                 $order = 'name';
                 if ($PARENTDATA->vars['order_of_sub_pages_dir']) {
                     $order .= ' desc';
                 }
                 break;
                 // }
             // }
             case 2:
                 // { associated_date
                 $order = 'associated_date';
                 if ($PARENTDATA->vars['order_of_sub_pages_dir']) {
                     $order .= ' desc';
                 }
                 $order .= ',name';
                 break;
                 // }
             // }
             default:
                 // { by admin order
                 $order = 'ord';
                 if ($PARENTDATA->vars['order_of_sub_pages_dir']) {
                     $order .= ' desc';
                 }
                 $order .= ',name';
                 break;
                 // }
         }
     }
     // }
     $sql = "select id,name,type from pages where parent='" . $parentid . "' and !(special&2) order by {$order}";
     $md5 = md5($sql);
     $rs = Core_cacheLoad('pages', $md5, -1);
     if ($rs === -1) {
         $rs = dbAll($sql);
         Core_cacheSave('pages', $md5, $rs);
     }
     if ($rs === false || !count($rs)) {
         return '';
     }
     $items = array();
     foreach ($rs as $r) {
         $item = '<li>';
         $page = Page::getInstance($r['id'])->initValues();
         $item .= '<a class="menu-fg menu-pid-' . $r['id'] . '" href="' . $page->getRelativeUrl() . '">' . htmlspecialchars(__FromJson($page->name)) . '</a>';
         // { override menu if a trigger causes the override
         $submenus = Core_trigger('menu-subpages-html', array($page, $depth + 1, $options));
         if ($submenus) {
             $item .= $submenus;
         } else {
             $item .= menuBuildFg($r['id'], $depth + 1, $options);
         }
         // }
         $item .= '</li>';
         $items[] = $item;
     }
     $options['columns'] = (int) $options['columns'];
     // { return top-level menu
     if (!$depth) {
         return '<ul>' . join('', $items) . '</ul>';
     }
     // }
     $s = '';
     if ($options['style_from'] == '1') {
         if ($options['background']) {
             $s .= 'background:' . $options['background'] . ';';
         }
         if ($options['opacity']) {
             $s .= 'opacity:' . $options['opacity'] . ';';
         }
         if ($s) {
             $s = ' style="' . $s . '"';
         }
     }
     // { return 1-column sub-menu
     if ($options['columns'] < 2) {
         return '<ul' . $s . '>' . join('', $items) . '</ul>';
     }
     // }
     // { return multi-column submenu
     $items_count = count($items);
     $items_per_column = ceil($items_count / $options['columns']);
     $c = '<table' . $s . '><tr><td><ul>';
     for ($i = 1; $i < $items_count + 1; ++$i) {
         $c .= $items[$i - 1];
         if ($i != $items_count && !($i % $items_per_column)) {
             $c .= '</ul></td><td><ul>';
         }
     }
     $c .= '</ul></td></tr></table>';
     return $c;
     // }
 }
Example #6
0
} elseif (file_exists(THEME_DIR . '/' . THEME . '/h/_default.html')) {
    $template = THEME_DIR . '/' . THEME . '/h/_default.html';
} else {
    require_once dirname(__FILE__) . '/ww.incs/template-find.php';
}
// }
// { set up smarty
$smarty = Core_smartySetup(USERBASE . '/ww.cache/pages');
$smarty->template_dir = THEME_DIR . '/' . THEME . '/h/';
$smarty->assign('PAGECONTENT', '<div id="ww-pagecontent">' . $pagecontent . '</div>');
$smarty->assign('PAGEDATA', $PAGEDATA);
$smarty->assign('THEMEDIR', '/ww.skins/' . THEME);
// }
// { build metadata
// { page title
$c = '<title>' . htmlspecialchars($PAGEDATA->title ? $PAGEDATA->title : str_replace('www.', '', $_SERVER['HTTP_HOST']) . ' > ' . __FromJson($PAGEDATA->name)) . '</title>';
// }
// { show stylesheet and javascript links
$c .= 'WW_CSS_GOES_HERE' . Core_getJQueryScripts() . '<script src="WW_SCRIPTS_GO_HERE"></script>';
// { generate inline javascript
$tmp = 'var pagedata={id:' . $PAGEDATA->id . Core_trigger('displaying-pagedata') . ',ptop:' . $PAGEDATA->getTopParentId() . (isset($DBVARS['cdn']) && $DBVARS['cdn'] ? ', cdn:"' . $DBVARS['cdn'] . '"' : '') . ',sessid:"' . session_id() . '"' . ',lang:"' . @$_SESSION['language'] . '"' . '},' . 'CKEDITOR_BASEPATH="//cdn.ckeditor.com/4.4.3/standard/", ' . (isset($_SESSION['userdata']['id']) ? User::getAsScript() : 'userdata={isAdmin:0' . (isset($_SESSION['wasAdmin']) ? ',wasAdmin:1' : '') . '};');
array_unshift($scripts_inline, $tmp);
// }
if (Core_isAdmin()) {
    foreach ($GLOBALS['PLUGINS'] as $p) {
        if (isset($p['frontend']['admin-script'])) {
            WW_addScript($p['frontend']['admin-script']);
        }
    }
}
// }
Example #7
0
 $c .= '<tr product="' . $md5 . '" class="os_item_numbers ' . $md5 . '">';
 // { item name and details
 $c .= '<td class="products-itemname">';
 if (isset($item['id']) && $item['id']) {
     $p = Product::getInstance($item['id']);
     if ($p) {
         $img = $p->getDefaultImage();
         if ($img) {
             $c .= '<a href="/f/' . $img . '" target="popup" ' . 'class="online-store-thumb-wrapper">' . '<img src="/a/f=getImg/w=auto/h=125/' . $img . '"/>' . '</a>';
         }
     }
 }
 if (isset($item['url']) && !empty($item['url'])) {
     $c .= '<a href="' . $item['url'] . '">';
 }
 $c .= htmlspecialchars(__FromJson($item['short_desc']));
 if (isset($item['url']) && !empty($item['url'])) {
     $c .= '</a>';
 }
 if (!$item['vat'] && !$user_is_vat_free) {
     $c .= '<sup>1</sup>';
     $has_vatfree = true;
 }
 $c .= '</td>';
 // }
 // { stock number
 if ($showStockNumber) {
     $c .= '<td class="product-stocknumber">' . $item['stock_number'] . '</td>';
 }
 // }
 // { cost per item
Example #8
0
<?php

/**
 * find products by term
 *
 * PHP version 5.2
 *
 * @category None
 * @package  None
 * @author   Kae Verens <*****@*****.**>
 * @license  GPL 2.0
 * @link     http://kvsites.ie/
 */
require $_SERVER['DOCUMENT_ROOT'] . '/ww.incs/basics.php';
if (!isset($_REQUEST['term']) || $_REQUEST['term'] == '') {
    echo '[]';
    Core_quit();
}
$term = $_REQUEST['term'];
$rs = dbAll('select id,name from products where name like "%' . addslashes($term) . '%" or data_fields like "%' . addslashes($term) . '%" limit 20');
$res = array();
foreach ($rs as $r) {
    $res[] = array('id' => $r['id'], 'label' => __FromJson($r['name']), 'value' => $r['name']);
}
echo json_encode($res);
Example #9
0
    // add default category to product type
    dbQuery('alter table products_types add default_category int default 1');
    $version = 31;
}
if ($version == 31) {
    // add default category to product
    dbQuery('alter table products add default_category int default 1');
    $version = 32;
}
if ($version == 32) {
    // add link field to help with multilingual
    dbQuery('alter table products add link text');
    $rs = dbAll('select name,id from products');
    if (is_array($rs) && count($rs)) {
        foreach ($rs as $r) {
            dbQuery('update products set' . ' link="' . addslashes(__FromJson($r['name'], true)) . '"' . ' where id=' . $r['id']);
        }
    }
    $version = 33;
}
if ($version == 33) {
    // stock control
    dbQuery('alter table products add stockcontrol_details text');
    dbQuery('alter table products add stockcontrol_total int default 0');
    $version = 34;
}
if ($version == 34) {
    // add link column to products_categories
    if (!function_exists('transcribe')) {
        function transcribe($string)
        {
Example #10
0
 /**
  * render a page template
  *
  * @return string rendered page
  */
 function render()
 {
     foreach ($GLOBALS['PLUGINS'] as $plugin) {
         if (isset($plugin['frontend']['body_override'])) {
             return $plugin['frontend']['body_override']($this);
         }
     }
     $smarty = Core_smartySetup(USERBASE . '/ww.cache/pages');
     global $_languages;
     $fname = USERBASE . '/ww.cache/pages/template_' . md5($this->id . '|' . join(',', $_languages));
     if (!file_exists($fname) || !filesize($fname)) {
         file_put_contents($fname, __FromJson(str_replace(array("\n", "\r"), ' ', $this->body)));
     }
     return $smarty->fetch($fname);
 }
Example #11
0
            return $plugin['admin']['body_override']($page, $page_vars);
        }
    }
    return ckeditor('body', $page['body'], null, 1);
}
// }
// { take care of actions
$id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0;
$parent = isset($_REQUEST['parent']) ? (int) $_REQUEST['parent'] : 0;
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
$msgs = '';
require_once 'pages.funcs.php';
if ($action == 'Update Page Details') {
    require_once $_SERVER['DOCUMENT_ROOT'] . '/ww.incs/api-admin.php';
    $arr = Core_adminPageEdit();
    echo '<script>window.parent.document.getElementById("page_' . $id . '")' . '.childNodes[1].innerHTML=\'<ins class="jstree-icon">&nbsp;</ins>' . htmlspecialchars(__FromJson($_REQUEST['name'], true)) . '\';</script>';
}
$is_an_update = $action == 'Insert Page Details' || $action == 'Update Page Details';
$edit = $is_an_update || $action == 'edit' || $id ? 1 : 0;
// }
// { display header and link in scripts
WW_addScript('/j/js.js');
WW_addScript('/j/jquery.json-2.2.min.js');
WW_addScript('//cdn.ckeditor.com/4.4.3/standard/ckeditor.js');
WW_addScript('//cdn.ckeditor.com/4.4.3/standard/adapters/jquery.js');
WW_addInlineScript('CKEDITOR_BASEPATH="//cdn.ckeditor.com/4.4.3/standard/";');
WW_addScript('/ww.admin/j/admin.js');
// { datatables
WW_addScript('//cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js');
WW_addScript('/j/datatables-delay.js');
WW_addCSS('//cdn.datatables.net/1.10.2/css/jquery.dataTables.min.css');
Example #12
0
 * @package  None
 * @author   Kae Verens <*****@*****.**>
 * @license  GPL 2.0
 * @link     http://kvsites.ie/
 */
require $_SERVER['DOCUMENT_ROOT'] . '/ww.incs/basics.php';
if (!Core_isAdmin()) {
    die(__('access denied'));
}
if (isset($_REQUEST['get_menu'])) {
    $r = dbRow('select * from menus where id=' . (int) $_REQUEST['get_menu']);
    if ($r === false) {
        $r = array('parent' => 0, 'direction' => 0, 'state' => 0);
    }
    if ($r['parent'] > 0) {
        $r['parent_name'] = __FromJson(Page::getInstance($r['parent'])->name);
    } else {
        if ($r['parent'] == 0) {
            $r['parent_name'] = ' -- ' . __('none') . ' -- ';
        } else {
            $r['parent_name'] = ' -- ' . __('current page') . ' -- ';
        }
    }
    echo json_encode($r);
    Core_quit();
}
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'save') {
    $id = (int) $_REQUEST['id'];
    $id_was = $id;
    $parent = (int) $_REQUEST['parent'];
    $direction = (int) $_REQUEST['direction'];
Example #13
0
function Menu_show($b)
{
    WW_addScript('/j/menu.js');
    global $PAGEDATA, $_languages;
    if (!$PAGEDATA->id) {
        return '';
    }
    $md5 = md5('ww_menudisplay|' . print_r($b, true) . '|' . join(',', $_languages) . '|' . @$_SESSION['language']);
    $cache = Core_cacheLoad('menus', $md5);
    if ($cache) {
        return $cache;
    }
    if (is_array($b)) {
        $align = isset($b['direction']) && $b['direction'] == 'vertical' ? 'Left' : 'Top';
        $vals = $b;
    } else {
        $arr = explode('|', $b);
        $b = $arr[0];
        $vals = array();
        if (count($arr) > 1) {
            $d = split(',', $arr[1]);
        } else {
            $d = array();
        }
        foreach ($d as $e) {
            $f = split('=', $e);
            if (count($f) > 1) {
                $vals[$f[0]] = $f[1];
            } else {
                $vals[$f[0]] = 1;
            }
        }
        $c = '';
        $align = $b == 'vertical' ? 'Left' : 'Top';
    }
    $parent = 0;
    $classes = '';
    if (isset($vals['mode'])) {
        if ($vals['mode'] == 'accordian' || $vals['mode'] == 'accordion') {
            $classes .= ' click_required accordion';
        } else {
            if ($vals['mode'] == 'two-tier') {
                $classes .= ' two-tier';
            }
        }
    } else {
        $vals['mode'] = 'default';
    }
    if (isset($vals['preopen_menu'])) {
        $classes .= ' preopen_menu';
    }
    if (isset($vals['close']) && $vals['close'] == 'no') {
        $classes .= ' noclose';
    }
    if (isset($vals['parent'])) {
        $r = Page::getInstanceByName($vals['parent']);
        if ($r) {
            $parent = $r->id;
        }
    }
    if (isset($vals['spans'])) {
        $vals['spans'] = (int) $vals['spans'];
    } else {
        $vals['spans'] = 1;
    }
    if ($b['type'] == 'bootstrap') {
        $c = '<div class="navbar"><div class="navbar-inner"><a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><h1><a class="brand" href="/">' . htmlspecialchars($GLOBALS['DBVARS']['site_title']) . '</a></h1><div class="nav-collapse collapse"><ul class="nav pull-right">';
    } else {
        $c = '<div id="ajaxmenu' . $parent . '" class="menuBar' . $align . (isset($vals['nodropdowns']) && $vals['nodropdowns'] ? '' : ' ajaxmenu ') . $classes . ' parent' . $parent . '">';
    }
    $rs = Menu_getChildren($parent, $PAGEDATA->id, 0, $parent);
    $links = 0;
    if (count($rs)) {
        foreach ($rs as $r) {
            $page = Page::getInstance($r['id']);
            if ($b['type'] == 'bootstrap') {
                $c .= '<li class="' . $r['classes'] . '"><a href="' . $page->getRelativeURL() . '"><i class="icon"></i><br>' . htmlspecialchars(__FromJson($page->name)) . '</a>' . Menu_getSubMenuBootstrap($r, $r['id']) . '</li>';
            } else {
                if ($vals['spans']) {
                    $spanl = '<span class="l"></span>';
                    $spanr = '<span class="r"></span>';
                } else {
                    $spanl = '';
                    $spanr = '';
                }
                if (!$links) {
                    $r['classes'] .= ' first';
                }
                $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars(__FromJson($page->name)) . $spanr . '</a>';
            }
            $links++;
        }
    }
    if (!@$GLOBALS['DBVARS']['disable-hidden-sitemap']) {
        $c .= '<a class="menuItemTop" style="display:none" href="' . $PAGEDATA->getRelativeURL() . '?cmsspecial=sitemap">' . __('Site Map') . '</a>';
    }
    if ($b['type'] == 'bootstrap') {
        $c .= '</ul></div></div>';
    } else {
        $c .= '</div>';
    }
    if ($vals['mode'] == 'two-tier') {
        $pid = $PAGEDATA->getTopParentId();
        if ($pid != 2 && $pid != 3 && $pid != 17 && $pid != 32 && $pid != 33 && $pid != 34) {
            $pid = 2;
        }
        $rs = Menu_getChildren($pid, $PAGEDATA->id, 0, $parent);
        $c .= '<div id="ajaxmenu' . $pid . '" class="menu tier-two">';
        if (count($rs)) {
            foreach ($rs as $r) {
                $page = Page::getInstance($r['id']);
                $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars($page->name) . $spanr . '</a>';
            }
        } else {
            $c .= '<a><span class="l"></span>&nbsp;<span class="r"></span></a>';
        }
        $c .= '</div>';
    }
    Core_cacheSave('menus', $md5, $c);
    return $c;
}
Example #14
0
/**
 * sends a form, or displays the form instead with errors on top
 *
 * @param array $page        page db row
 * @param array $vars        page meta data
 * @param array $form_fields array of fields
 *
 * @return HTML of either the result, or the form with errors on top
 */
function Form_send($page, $vars, $form_fields)
{
    $c = '';
    $plaintext = '';
    $values = array();
    $email = '';
    foreach ($form_fields as $r2) {
        $name = preg_replace('/[^a-zA-Z0-9_]/', '', $r2['name']);
        $separator = "\n" . str_repeat('-', 80) . "\n";
        $val = '';
        switch ($r2['type']) {
            case 'checkbox':
                // {
                $val = @$_REQUEST[$name];
                $values[$r2['name']] = $val == 'on' ? 'yes' : 'no';
                if ($val == 'on') {
                    $plaintext .= 'selected option: ' . htmlspecialchars($r2['name']) . $separator;
                }
                break;
                // }
            // }
            case 'date':
            case 'ccdate':
                // {
                $val = Core_dateM2H(@$_REQUEST[$name]);
                if ($r2['type'] == 'ccdate') {
                    $val = preg_replace('#.* ([a-zA-Z]*, [0-9]+)#', "\$1", $val);
                }
                $values[$r2['name']] = $val;
                $plaintext .= htmlspecialchars($r2['name']) . "\n" . htmlspecialchars($val) . $separator;
                break;
                // }
            // }
            case 'email':
                // {
                $val = @$_REQUEST[$name];
                $values[$r2['name']] = $val;
                $plaintext .= htmlspecialchars($r2['name']) . "\n" . htmlspecialchars($val) . $separator;
                $email = $val;
                break;
                // }
            // }
            case 'file':
                // { build $files array which emulates the $_FILES array
                // { first remove old uploads
                $dir = USERBASE . '/f/.files/forms/';
                if (!is_dir($dir)) {
                    break;
                }
                $fs = new DirectoryIterator($dir);
                $time = time();
                foreach ($fs as $f) {
                    if ($f->isDot()) {
                        continue;
                    }
                    if ($f->isDir()) {
                        $diff = $time - $f->getMTime();
                        if ($diff > 600) {
                            // file is older than 10 minutes
                            CoreDirectory::delete($f->getPathname());
                        }
                    }
                }
                // }
                $session_id = session_id();
                $dir .= $session_id;
                if (!is_dir($dir)) {
                    break;
                }
                $_FILES = array();
                $uploads = new DirectoryIterator($dir);
                foreach ($uploads as $upload) {
                    if ($upload->isDot() || $upload->isDir()) {
                        continue;
                    }
                    array_push($_FILES, array('name' => $upload->getFileName(), 'type' => mime_content_type($upload->getPathname()), 'tmp_name' => $upload->getPathname(), 'error' => 0, 'size' => $upload->getSize()));
                }
                break;
                // }
            // }
            case 'html-block':
            case 'next-page-link':
            case 'previous-page-link':
            case 'page-break':
                // { not inputs - don't add them
                break;
                // }
            // }
            default:
                // {
                $val = @$_REQUEST[$name];
                $values[$r2['name']] = $val;
                $val = nl2br($val);
                $plaintext .= htmlspecialchars($r2['name']) . "\n" . htmlspecialchars($val) . $separator;
                // }
        }
    }
    $from_field = preg_replace('/[^a-zA-Z]/', '', $vars['forms_replyto']);
    $from = isset($_REQUEST[$from_field]) ? $_REQUEST[$from_field] : '';
    if (@$vars['forms_create_user']) {
        $id = dbOne('select id from user_accounts where email="' . addslashes($email) . '"', 'id');
        if (!$id) {
            dbQuery('insert into user_accounts set email="' . addslashes($email) . '",' . 'extras="' . addslashes(json_encode($values)) . '"');
            $id = dbLastInsertId();
            if (isset($_FILES) && count($_FILES)) {
                @mkdir(USERBASE . '/f/user-files');
                @mkdir(USERBASE . '/f/user-files/' . $id);
                foreach ($_FILES as $file) {
                    copy($file['tmp_name'], USERBASE . '/f/user-files/' . $id . '/' . $file['name']);
                }
            }
        }
    }
    if ($vars['forms_send_as_email']) {
        $form = Form_readonly($page['id'], $vars, $form_fields);
        $to = $vars['forms_recipient'];
        $form = str_replace(array('<input type="submit" value="' . __('Submit Form') . '" />', '<form action="' . $_SERVER['REQUEST_URI'] . '" method="post" ' . 'class="ww_form" enctype="multipart/form-data">', '</form>'), '', $form);
        cmsMail($to, $from, $_SERVER['HTTP_HOST'] . ' ' . __FromJson($page['name']), '<html><head></head><body>' . $form . '</body></html>', $_FILES);
        if (is_dir(USERBASE . '/f/.files/forms/' . session_id())) {
            // remove uploaded files
            CoreDirectory::delete(USERBASE . '/f/.files/forms/' . session_id());
        }
    }
    if ($vars['forms_record_in_db']) {
        Form_saveValues($page['id'], $form_fields);
    }
    $c .= '<div id="thankyoumessage">' . $vars['forms_successmsg'] . '</div>';
    return $c;
}
Example #15
0
/**
 * output an RTE's HTML
 *
 * @param string $name         name of the textarea to replace
 * @param string $value        prefill the textarea with this value
 * @param int    $height       the height of the RTE to show
 * @param int    $translatable is this editor a multi-lingual one
 *
 * @return string the HTML of the RTE
 */
function ckeditor($name, $value = '', $height = 250, $translatable = 0)
{
    if (!$translatable) {
        return '<textarea style="width:100%;height:' . $height . 'px" name="' . addslashes($name) . '">' . htmlspecialchars($value) . '</textarea>' . "<script>//<![CDATA[\n" . '$(function(){window.ckeditor_' . preg_replace('/[^a-zA-Z_]/', '', $name) . '=CKEDITOR.replace("' . str_replace(array('[', ']'), array('\\[', '\\]'), addslashes($name)) . '",CKEditor_config);});' . "//]]></script>";
    }
    global $langs, $tabindex;
    if (count($langs) < 2) {
        $lang = $langs[0];
        $v2 = __FromJson($value, true, $lang['code']);
        return '<textarea style="width:100%;height:' . $height . 'px" name="' . addslashes($name) . '[' . $lang['code'] . ']">' . htmlspecialchars($v2) . '</textarea>' . "<script>//<![CDATA[\n" . '$(function(){window.ckeditor_' . preg_replace('/[^a-zA-Z_]/', '', $name . '_' . $lang['code']) . '=CKEDITOR.replace("' . str_replace(array('[', ']'), array('\\[', '\\]'), addslashes($name . '[' . $lang['code'] . ']')) . '",CKEditor_config);});' . "//]]></script>";
    }
    if (!$tabindex) {
        $tabindex = time();
    }
    $html = '<div class="tabs mini-tabs"><ul>';
    foreach ($langs as $lang) {
        $html .= '<li><a href="#tab-' . $tabindex . '-' . $lang['code'] . '">' . $lang['name'] . '</a></li>';
    }
    $html .= '</ul>';
    foreach ($langs as $lang) {
        $v2 = __FromJson($value, true, $lang['code']);
        $html .= '<div id="tab-' . $tabindex . '-' . $lang['code'] . '">' . '<textarea style="width:100%;height:' . $height . 'px" name="' . addslashes($name) . '[' . $lang['code'] . ']">' . htmlspecialchars($v2) . '</textarea>' . "<script>//<![CDATA[\n" . '$(function(){window.ckeditor_' . preg_replace('/[^a-zA-Z_]/', '', $name . '_' . $lang['code']) . '=CKEDITOR.replace("' . str_replace(array('[', ']'), array('\\[', '\\]'), addslashes($name . '[' . $lang['code'] . ']')) . '",CKEditor_config);});' . "//]]></script>" . '</div>';
    }
    $html .= '</div>';
    $tabindex++;
    return $html;
}
Example #16
0
function Products_filter()
{
    if (!isset($_REQUEST['term']) || $_REQUEST['term'] == '') {
        return array();
    }
    $term = $_REQUEST['term'];
    $hash = 'search|' . md5($term);
    $res = Core_cacheLoad('products', $hash, -1);
    if ($res === -1) {
        $rs = dbAll('select id,name from products where (name like "%' . addslashes($term) . '%"' . ' or data_fields like "%' . addslashes($term) . '%")' . ' and enabled limit 20');
        $res = array();
        foreach ($rs as $r) {
            $res[] = array('url' => Product::getInstance($r['id'])->getRelativeUrl(), 'name' => __FromJson($r['name']));
        }
        Core_cacheSave('products', $hash, $res);
    }
    return $res;
}
Example #17
0
 /**
  * get list of contained directories
  *
  * @param int $i  ID of the parent page
  * @param int $n  indentation level
  * @param int $id ID of a page /not/ to show
  *
  * @return array
  */
 function selectkiddies($i = 0, $n = 1, $id = 0)
 {
     $arr = array();
     $q = dbAll('select name,id,alias from pages where parent="' . $i . '" and id!="' . $id . '" order by ord,name');
     if (count($q) < 1) {
         return $arr;
     }
     foreach ($q as $r) {
         if ($r['id'] != '') {
             $arr[' ' . $r['id']] = str_repeat('ยป ', $n) . __FromJson($r['name']);
             $arr = array_merge($arr, selectkiddies($r['id'], $n + 1, $id));
         }
     }
     return $arr;
 }
Example #18
0
/**
 * get issue overviews
 *
 * @return array
 */
function Issuetracker_issuesGetDT()
{
    $pid = (int) $_REQUEST['pid'];
    $start = (int) $_REQUEST['iDisplayStart'];
    $length = (int) $_REQUEST['iDisplayLength'];
    $search = $_REQUEST['sSearch'];
    $orderby = (int) $_REQUEST['iSortCol_0'];
    $orderdesc = $_REQUEST['sSortDir_0'] == 'desc' ? 'desc' : 'asc';
    switch ($orderby) {
        case 1:
            $orderby = 'due_date';
            break;
        case 2:
            $orderby = 'status';
            break;
        case 3:
            $orderby = 'name';
            break;
        default:
            $orderby = 'due_date';
    }
    $filters = array('issuetracker_issues.project_id=issuetracker_projects.id', '((due_date>="' . addslashes($_REQUEST['date-from']) . '"' . ' and due_date<"' . addslashes($_REQUEST['date-to']) . ' 24")' . ' or due_date="0000-00-00")');
    if ($search) {
        $filters[] = 'name like "%' . addslashes($search) . '%"';
    }
    if ($pid) {
        $filters[] = 'project_id=' . $pid;
    }
    $filter = '';
    if (!Core_isAdmin()) {
        // check projects for restrictions
        $projects = dbAll('select id, name, groups, users from issuetracker_projects', 'id');
        $allowed_projects = array(0);
        foreach ($projects as $p) {
            if (strlen($p['groups']) > 1) {
                if (!isset($_SESSION['userdata'])) {
                    continue;
                }
                $ok = 0;
                foreach ($_SESSION['userdata']['groups'] as $k => $v) {
                    if (strpos($p['groups'], '|' . $v . '|') !== false) {
                        $ok = 1;
                    }
                }
                if (!$ok) {
                    continue;
                }
            }
            if (strlen($p['users']) > 1) {
                if (!isset($_SESSION['userdata'])) {
                    continue;
                }
                if (strpos($p['users'], '|' . $_SESSION['userdata'] . '|') === false) {
                    continue;
                }
            }
            $allowed_projects[] = $p['id'];
        }
        $filters[] = 'issuetracker_projects.id in (' . join(',', $allowed_projects) . ')';
    }
    if (count($filters)) {
        $filter = 'where (' . join(') and (', $filters) . ')';
    }
    $sql = 'select issuetracker_issues.id id' . ', type_id, issuetracker_issues.name name, status, project_id' . ', issuetracker_projects.name project_name' . ', issuetracker_issues.meta meta, due_date' . ' from issuetracker_issues,issuetracker_projects ' . $filter . ' order by ' . $orderby . ' ' . $orderdesc . ' limit ' . $start . ',' . $length;
    $rs = dbAll($sql);
    $result = array();
    $result['sEcho'] = intval($_GET['sEcho']);
    $result['iTotalRecords'] = dbOne('select count(id) as ids from issuetracker_issues', 'ids');
    $result['iTotalDisplayRecords'] = dbOne('select count(issuetracker_issues.id) as ids' . ' from issuetracker_issues, issuetracker_projects ' . $filter, 'ids');
    $arr = array();
    foreach ($rs as $r) {
        $row = array();
        $rMeta = json_decode($r['meta']);
        // { id
        $row[] = $r['id'];
        // }
        // { due_date
        $row[] = $r['due_date'];
        // }
        // { status
        $row[] = (int) $r['status'];
        // }
        // { name
        $row[] = __FromJson($r['name']);
        // }
        // { type
        $row[] = (int) $r['type_id'];
        // }
        // { project
        $row[] = $r['project_name'];
        $freeCredits = $rMeta->{'credits'};
        $paidCredits = $rMeta->{'paid_credits'};
        $metaArray = array();
        $metaFlag = false;
        if ($freeCredits == null) {
            // initialise the meta for the first time
            $metaArray['credits'] = 0;
            $metaFlag = true;
        } else {
            $metaArray['credits'] = $rMeta->{'credits'};
        }
        if ($paidCredits == null) {
            //same thing here
            $metaArray['paid_credits'] = 0;
            $metaFlag = true;
        } else {
            $metaArray['paid_credits'] = $rMeta->{'paid_credits'};
        }
        if ($metaFlag) {
            $sql = 'update issuetracker_issues set meta="' . json_encode($metaArray) . '" where id=' . $r['id'];
            dbQuery($sql);
        }
        $row[] = $rMeta->{'credits'} != null ? $rMeta->{'credits'} : 0;
        // }
        $arr[] = $row;
    }
    $result['aaData'] = $arr;
    return $result;
}
Example #19
0
$c .= '<select id="online_store_quickpay_redirect_to" name="page_vars[online_' . 'store_quickpay_redirect_to]">';
if (isset($vars['online_store_quickpay_redirect_to']) && $vars['online_store_quickpay_redirect_to']) {
    $parent = Page::getInstance($vars['online_store_quickpay_redirect_to']);
    $c .= '<option value="' . $parent->id . '">' . htmlspecialchars(__FromJson($parent->name)) . '</option>';
} else {
    $vars['online_store_quickpay_redirect_to'] = 0;
    $c .= '<option value="0"> -- ' . __('None') . ' -- </option>';
}
$c .= '</select></td></tr>';
// }
// { redirect page (failed)
$c .= '<tr><th>' . __('Redirect after cancelled/failed payment') . '</th><td>';
$c .= '<select id="online_store_quickpay_redirect_failed" name="page_vars[onl' . 'ine_store_quickpay_redirect_failed]">';
if (isset($vars['online_store_quickpay_redirect_failed']) && $vars['online_store_quickpay_redirect_failed']) {
    $parent = Page::getInstance($vars['online_store_quickpay_redirect_failed']);
    $c .= '<option value="' . $parent->id . '">' . htmlspecialchars(__FromJson($parent->name)) . '</option>';
} else {
    $vars['online_store_quickpay_redirect_failed'] = 0;
    $c .= '<option value="0"> -- ' . __('None') . ' -- </option>';
}
$c .= '</select></td></tr>';
// }
// { autocapture
$c .= '<tr><th>' . __('Autocapture') . '</th><td>' . '<select name="page_vars[online_stores_quickpay_autocapture]">' . '<option value="0">' . __('No') . '</option>' . '<option value="1"';
if (@$vars['online_stores_quickpay_autocapture'] == '1') {
    $c .= ' selected="selected"';
}
$c .= '>' . __('Yes') . '</option></select></td></tr>';
// }
// { test mode
$c .= '<tr><th>' . __('Mode') . '</th><td>' . '<select name="page_vars[online_stores_quickpay_testmode]">' . '<option value="test">' . __('Test Mode') . '</option>' . '<option value="live"';
Example #20
0
                }
                if (!$ok) {
                    continue;
                }
                break;
                // }
            // }
            case 'selected-image':
                // {
                $v = 'http://' . $_SERVER['HTTP_HOST'] . '/kfmget/' . $v;
                $long_desc = '<img style="float:left" src="' . $v . ',width=60,height=60"/>';
                break;
                // }
        }
        $vals[] = '<div class="products-desc-' . preg_replace('/[^a-zA-Z0-9]/', '', $k) . '">' . '<span class="__">' . $n . '</span>: ' . $v . '</div>';
    }
}
if (count($vals)) {
    $long_desc .= join("\n", $vals) . '<br style="clear:left"/>';
    $md5 = ',' . md5($long_desc . 'products_' . $id);
}
// }
list($price, $amount, $vat) = Products_getProductPrice($product, $amount, $md5);
if (isset($_REQUEST['products_values__custom-price']) && (double) $_REQUEST['products_values__custom-price'] && $product_type->has_userdefined_price) {
    $price = (double) $_REQUEST['products_values__custom-price'];
}
// { does the amount requested bring it over the maximum allowed per purchase
$max_allowed = isset($product->vals['os_amount_allowed_per_purchase']) ? (int) $product->vals['os_amount_allowed_per_purchase'] : 0;
// }
OnlineStore_addToCart($price + $price_amendments, $amount, __FromJson($product->get('name')), $long_desc, 'products_' . $id . $md5, isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'no referer', $vat, $id, (int) @$product->vals['os_free_delivery'], (int) @$product->vals['os_not_discountable'], $max_allowed, $product->stock_number);
Example #21
0
                } else {
                    $c .= __('No');
                }
                break;
                // }
            // }
            case 'textarea':
                // {
                $c .= __FromJson($product->vals[$data->n]);
                break;
                // }
            // }
            default:
                // {
                if (isset($product->vals[$data->n])) {
                    $c .= htmlspecialchars(__FromJson($product->vals[$data->n]));
                } else {
                    $c .= '&nbsp;';
                }
                // }
        }
        $c .= '</td></tr>';
    }
} else {
    $c .= '<thead>';
    $c .= '<tr>';
    foreach ($datafields as $data) {
        $name = $data->ti ? $data->ti : ucwords(str_replace('_', ' ', $data->n));
        $c .= '<th>' . htmlspecialchars(ucfirst($name)) . '</th>';
    }
    $c .= '</tr>';
Example #22
0
 /**
  * produce a HTML version of the product
  *
  * @param string  $product     the product to render
  * @param string  $template    multi-view product or single-view?
  * @param boolean $add_wrapper wrap in div.products-product before return
  *
  * @return string html of the product
  */
 function render($product, $template = 'singleview', $add_wrapper = true)
 {
     global $DBVARS, $PAGEDATA;
     $GLOBALS['products_template_used'] = $template;
     if (isset($DBVARS['online_store_currency'])) {
         $csym = $DBVARS['online_store_currency'];
     }
     $smarty = Products_setupSmarty();
     $smarty->assign('product', $product);
     $smarty->assign('product_id', $product->get('id'));
     $smarty->assign('_name', __FromJson($product->name));
     $smarty->assign('_stock_number', $product->stock_number);
     if (!is_array(@$this->data_fields)) {
         $this->data_fields = array();
     }
     $productVals = array();
     foreach ($this->data_fields as $f) {
         $f->n = preg_replace('/[^a-zA-Z0-9\\-_]/', '_', $f->n);
         $val = $product->get($f->n);
         $required = @$f->r ? ' required' : '';
         switch ($f->t) {
             case 'checkbox':
                 // {
                 $val = $val ? __('Yes') : __('No');
                 $smarty->assign($f->n, $val);
                 break;
                 // }
             // }
             case 'colour':
                 // {
                 if (@$f->u) {
                     // user-definable
                     WW_addScript('/j/mColorPicker/mColorPicker.js');
                     $h = '<input class="color-picker" ' . 'name="products_values_' . $f->n . '" ' . 'style="height:20px;width:20px;" ' . 'value="' . htmlspecialchars($val) . '" ' . 'data-text="hidden"/>' . '<style>#mColorPickerFooter,#mColorPickerImg{display:none}</style>';
                     WW_addInlineScript('$(".color-picker")' . '.mColorPicker({"imageFolder":"/j/mColorPicker/images/"});');
                 } else {
                     $h = 'TODO';
                 }
                 $smarty->assign($f->n, $h);
                 break;
                 // }
             // }
             case 'date':
                 // {
                 if (@$f->u) {
                     // user-definable
                     $smarty->assign($f->n, '<input class="product-field date ' . $f->n . $required . '" name="' . 'products_values_' . $f->n . '"/>');
                     $format = @$f->e ? $f->e : 'yy-mm-dd';
                     $y = date('Y');
                     WW_addInlineScript('$("input[name=products_values_' . $f->n . ']").datepicker({' . '"dateFormat":"' . $format . '",' . 'changeYear:true,changeMonth:true,yearRange:"1900:' . $y . '"' . '});');
                     WW_addInlineScript('$("input.hasDatepicker").each(function() {' . 'if (this.value!="") return;' . '$(this).datepicker("setDate", "+0");' . '});');
                 } else {
                     $val = Core_dateM2H($val);
                     $smarty->assign($f->n, $val);
                 }
                 break;
                 // }
             // }
             case 'hidden':
                 // {
                 $smarty->assign($f->n, '<input type="hidden" name="products_values_' . $f->n . '" value="' . htmlspecialchars($val) . '"/>');
                 break;
                 // }
             // }
             case 'selectbox':
                 // {
                 if (@$f->u) {
                     $valid_entries = explode("\n", $val);
                     foreach ($valid_entries as $k => $v) {
                         $v = trim($v);
                         if ($v == '') {
                             unset($valid_entries[$k]);
                         } else {
                             $valid_entries[$k] = $v;
                         }
                     }
                     if (!count($valid_entries)) {
                         $valid_entries = explode("\n", $f->e);
                     }
                     $h = '<select name="products_values_' . $f->n . '" class="' . $required . '">';
                     $translateable = @$f->tr && 1;
                     foreach ($valid_entries as $e) {
                         $e = trim($e);
                         if ($e == '' || !in_array($e, $valid_entries)) {
                             continue;
                         }
                         $o = $e;
                         $p = '';
                         if (strpos($e, '|') !== false) {
                             $bits = explode('|', $e);
                             $e = $bits[0];
                             $p = 'price="' . (int) $bits[1] . '"';
                         }
                         $h .= '<option ' . $p . ' value="' . htmlspecialchars($o) . '"';
                         if ($translateable) {
                             $h .= ' class="__"';
                         }
                         $h .= '>' . htmlspecialchars($e) . '</option>';
                     }
                     $h .= '</select>';
                 } else {
                     $val = preg_replace('/\\|.*/', '', $val);
                     $h = $val;
                 }
                 $smarty->assign($f->n, $h);
                 break;
                 // }
             // }
             case 'selected-image':
                 // {
                 $smarty->assign($f->n, '<input type="hidden" name="products_values_' . $f->n . '" ' . 'class="product-field ' . $f->n . $required . '"/>');
                 break;
                 // }
             // }
             case 'textarea':
                 // { textarea
                 if (@$f->u) {
                     $val = trim(preg_replace('/<[^>]*>/', '', $val));
                     $smarty->assign($f->n, '<textarea class="product-field ' . $f->n . $required . '" name="products_values_' . $f->n . '">' . htmlspecialchars($val) . '</textarea>');
                 } else {
                     $smarty->assign($f->n, $val);
                 }
                 break;
                 // }
             // }
             case 'user':
                 // {
                 $u = User::getInstance($val, false, false);
                 $val = $u ? $u->get('name') : 'no name';
                 $smarty->assign($f->n, $val);
                 break;
                 // }
             // }
             default:
                 // { everything else
                 if (@$f->u) {
                     $smarty->assign($f->n, '<input class="product-field ' . $f->n . $required . '" value="' . htmlspecialchars($val) . '" name="products_values_' . $f->n . '"/>');
                 } else {
                     $smarty->assign($f->n, $val);
                 }
                 // }
         }
         $productVals[$f->n] = $val;
         $PAGEDATA->title = str_replace('{{$' . $f->n . '}}', $val, $PAGEDATA->title);
     }
     if (isset($PAGEDATA->vars['products_pagedescriptionoverride']) && $PAGEDATA->vars['products_pagedescriptionoverride']) {
         $desc = preg_replace('/<[^>]*>/', '', $productVals['description']);
         $desc = trim(preg_replace('/\\s+/m', ' ', $desc));
         $PAGEDATA->description = substr($desc, 0, 153) . '...';
     }
     if (isset($product->ean)) {
         $smarty->assign('_ean', $product->ean);
     }
     // { $_name, $_stock_number, $_ean
     $PAGEDATA->title = str_replace(array('{{$_name}}', '{{$_stock_number}}', '{{$_ean}}'), array($product->get('_name'), $product->get('_stock_number'), $product->vals['ean']), $PAGEDATA->title);
     // }
     $html = '';
     if ($add_wrapper) {
         $classes = array('products-product');
         if ($this->stock_control) {
             $classes[] = 'stock-control';
         }
         $html .= '<div class="' . join(' ', $classes) . '" id="products-' . $product->get('id') . '">';
     }
     $html .= $smarty->fetch(USERBASE . '/ww.cache/products/templates/types_' . $template . '_' . $this->id);
     if ($template == 'singleview') {
         $PAGEDATA->vars['header_html'] = (isset($PAGEDATA->vars['header_html']) ? $PAGEDATA->vars['header_html'] : '') . '<link rel="canonical" href="' . htmlspecialchars($product->getRelativeUrl()) . '" />';
         if ($this->allow_comments) {
             $html .= Core_commentsShow('http://' . $_SERVER['HTTP_HOST'] . $product->getRelativeURL());
         }
     }
     if ($add_wrapper) {
         $html .= '</div>';
     }
     return $html;
 }
Example #23
0
/**
 * get a list of products in datatables format
 *
 * @return array products list
 */
function Products_adminProductsListDT()
{
    $start = (int) $_REQUEST['iDisplayStart'];
    $length = (int) $_REQUEST['iDisplayLength'];
    $search = $_REQUEST['sSearch'];
    $orderbyNum = (int) $_REQUEST['iSortCol_0'];
    $orderdesc = $_REQUEST['sSortDir_0'] == 'desc' ? 'desc' : 'asc';
    $GLOBALS['product_columns'] = array();
    Core_trigger('extra-products-columns');
    global $product_columns;
    switch ($orderbyNum) {
        case 2:
            $orderby = 'name';
            break;
        case 3:
            $orderby = 'stock_number';
            break;
        case 6:
            $orderby = 'id';
            break;
        case 7:
            $orderby = 'enabled';
            break;
        case 8:
            $orderby = 'date_created';
            break;
        case 9:
            $orderby = 'date_edited';
            break;
        default:
            $orderby = 'name';
    }
    if ($orderbyNum > 9 && isset($product_columns[$orderbyNum - 10]['field_name'])) {
        $orderby = $product_columns[$orderbyNum - 10]['field_name'];
    }
    $filters = array();
    if ($search) {
        $sArr = array();
        $sArr[] = 'match(data_fields,name) against ("' . addslashes($search) . '" in boolean mode)';
        $filters[] = '(' . join(' and ', $sArr) . ')';
        #			.' or stock_number like "%'.addslashes($search).'%")';
    }
    $filter = '';
    if (count($filters)) {
        $filter = 'where ' . join(' and ', $filters);
    }
    $sql = 'select id, user_id, images_directory, name, stock_number, enabled' . ', date_created, date_edited, stockcontrol_total';
    foreach ($product_columns as $p) {
        if (isset($p['field_name'])) {
            $sql .= ', ' . $p['field_name'];
        }
    }
    $sql .= ' from products ' . $filter . ' order by ' . $orderby . ' ' . $orderdesc . ' limit ' . $start . ',' . $length;
    $rs = dbAll($sql, '', 'products');
    $result = array();
    $result['sql'] = $sql;
    $result['sEcho'] = intval($_GET['sEcho']);
    $result['iTotalRecords'] = dbOne('select count(id) as ids from products', 'ids', 'products');
    $result['iTotalDisplayRecords'] = dbOne('select count(id) as ids from products ' . $filter, 'ids', 'products');
    $arr = array();
    foreach ($rs as $r) {
        $row = array(0);
        // { has images
        $has_images = 0;
        if ($r['images_directory'] && @is_dir(USERBASE . '/f/' . $r['images_directory'])) {
            $dir = new DirectoryIterator(USERBASE . '/f/' . $r['images_directory']);
            foreach ($dir as $f) {
                if ($f->isDot()) {
                    continue;
                }
                if ($f->isFile()) {
                    $has_images++;
                }
            }
        }
        $row[] = $has_images;
        // }
        // { name
        $row[] = __FromJson($r['name']);
        // }
        // { stock_number
        $row[] = $r['stock_number'];
        // }
        // { stock_control
        $row[] = $r['stockcontrol_total'];
        // }
        // { owner
        $user = User::getInstance($r['user_id'], false, false);
        $row[] = $r['user_id'] . '|' . ($user ? $user->get('name') : 'unknown owner');
        // }
        // { id
        $row[] = $r['id'];
        // }
        // { enabled
        $row[] = $r['enabled'];
        // }
        // { created date
        $row[] = $r['date_created'];
        // }
        // { last edit
        $row[] = $r['date_edited'];
        // }
        foreach ($product_columns as $p) {
            if (isset($p['field_name'])) {
                $row[] = $r[$p['field_name']];
            } else {
                $row[] = 'TODO';
            }
        }
        $arr[] = $row;
    }
    $result['aaData'] = $arr;
    return $result;
}
Example #24
0
// { related items
if (count($relations)) {
    echo '<h2>' . __('Relations') . '</h2><div id="relations">' . '<table id="product-relations"><tr><th>Relation Type</th><th>Related P' . 'roduct</th></tr>';
    foreach ($relations as $relation) {
        $ps = dbAll('select * from products_relations where relation_id=' . $relation['id'] . ' and from_id=' . $id);
        $options = '<option value=""> -- ' . __('Choose') . ' -- </option>';
        foreach ($relations as $r) {
            $options .= '<option value="' . $r['id'] . '"';
            if ($r['id'] == $relation['id']) {
                $options .= ' selected="selected"';
            }
            $options .= '>' . htmlspecialchars($r['name']) . '</option>';
        }
        foreach ($ps as $p) {
            echo '<tr><td><select name="product-relations-type[]">' . $options . '</select></td><td><select class="products-relations-product"' . ' name="products-relations-product[]">' . '<option value="' . $p['to_id'] . '">';
            echo htmlspecialchars(__FromJson(dbOne('select name from products where id=' . $p['to_id'], 'name'))) . '</option></select></td></tr>';
        }
    }
    echo '<tr><td><select name="product-relations-type[]">' . '<option value=""> -- ' . __('Choose') . ' -- </option>';
    foreach ($relations as $relation) {
        echo '<option value="' . $relation['id'] . '">' . htmlspecialchars($relation['name']) . '</option>';
    }
    echo '</select></td>' . '<td><select class="products-relations-product"' . ' name="products-relations-product[]">' . '<option value=""> -- ' . __('Choose') . ' -- </option></select>';
    WW_addScript('products/admin/products-edit-related.js');
    echo '</td></tr></table></div>';
}
// }
// { end form and tabs
echo '</div><input type="submit" value="' . __('Save') . '" /></form>';
// }
WW_addScript('products/admin/products-edit.js');