public static function new_record($tab, $values = array()) { self::init($tab); $user = Acl::get_user(); $for_processing = $values; foreach (self::$table_rows as $field => $args) { if ($args['type'] === 'multiselect') { if (!isset($for_processing[$args['id']]) || !$for_processing[$args['id']]) { $for_processing[$args['id']] = array(); } } elseif (!isset($for_processing[$args['id']])) { $for_processing[$args['id']] = ''; } } $values = self::record_processing($tab, $for_processing, 'add'); if ($values === false) { return; } self::init($tab); $fields = 'created_on,created_by,active'; $fields_types = '%T,%d,%d'; $vals = array(date('Y-m-d H:i:s'), $user, 1); foreach (self::$table_rows as $field => $args) { if ($args['type'] == 'calculated' && preg_match('/^[a-z]+(\\([0-9]+\\))?$/i', $args['param']) === 0) { continue; } // FIXME move DB definiton to *_field table if (!isset($values[$args['id']]) || $values[$args['id']] === '') { continue; } if (!is_array($values[$args['id']])) { $values[$args['id']] = trim($values[$args['id']]); } if ($args['type'] == 'long text') { $values[$args['id']] = Utils_BBCodeCommon::optimize($values[$args['id']]); } if ($args['type'] == 'multiselect' && empty($values[$args['id']])) { continue; } if ($args['type'] == 'multiselect') { $values[$args['id']] = self::encode_multi($values[$args['id']]); } $fields_types .= ',' . self::get_sql_type($args['type']); $fields .= ',f_' . $args['id']; if (is_bool($values[$args['id']])) { $values[$args['id']] = $values[$args['id']] ? 1 : 0; } $vals[] = $values[$args['id']]; } DB::Execute('INSERT INTO ' . $tab . '_data_1 (' . $fields . ') VALUES (' . $fields_types . ')', $vals); $id = DB::Insert_ID($tab . '_data_1', 'id'); if ($user) { self::add_recent_entry($tab, $user, $id); } if (Base_User_SettingsCommon::get('Utils_RecordBrowser', $tab . '_auto_fav')) { DB::Execute('INSERT INTO ' . $tab . '_favorite (user_id, ' . $tab . '_id) VALUES (%d, %d)', array($user, $id)); } self::init($tab); foreach (self::$table_rows as $field => $args) { if ($args['type'] === 'multiselect') { if (!isset($values[$args['id']])) { $values[$args['id']] = array(); } elseif (!is_array($values[$args['id']])) { $values[$args['id']] = self::decode_multi($values[$args['id']]); } } if ($args['type'] === 'autonumber') { $autonumber_value = self::format_autonumber_str($args['param'], $id); self::update_record($tab, $id, array($args['id'] => $autonumber_value), false, null, true); $values[$args['id']] = $autonumber_value; } } $values['id'] = $id; self::record_processing($tab, $values, 'added'); if (Base_User_SettingsCommon::get('Utils_RecordBrowser', $tab . '_auto_subs') == 1) { Utils_WatchdogCommon::subscribe($tab, $id); } Utils_WatchdogCommon::new_event($tab, $id, 'C'); return $id; }
<?php /** * @author Arkadiusz Bisaga <*****@*****.**> * @copyright Copyright © 2008, Telaxus LLC * @license MIT * @version 1.0 * @package epesi-utils * @subpackage watchdog */ if (!isset($_POST['id']) || !isset($_POST['state']) || !isset($_POST['element']) || !isset($_POST['cat']) || !isset($_POST['cid'])) { die('Invalid request: ' . print_r($_POST, true)); } define('JS_OUTPUT', 1); define('CID', $_POST['cid']); define('READ_ONLY_SESSION', true); require_once '../../../include.php'; ModuleManager::load_modules(); $id = json_decode($_POST['id']); $cat = json_decode($_POST['cat']); $state = json_decode($_POST['state']); $element = json_decode($_POST['element']); if (!Acl::is_user()) { die('alert("Unauthorized access");'); } if ($state) { Utils_WatchdogCommon::subscribe($cat, $id); } else { Utils_WatchdogCommon::unsubscribe($cat, $id); } print 'jq("#' . $element . '").html("' . Epesi::escapeJS(Utils_WatchdogCommon::get_change_subscription_icon_tags($cat, $id)) . '");';