interface/lib/classes/client_templates.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/lib/classes/remoting.inc.php | ●●●●● patch | view | raw | blame | history |
interface/lib/classes/client_templates.inc.php
@@ -20,6 +20,8 @@ $new_tpl = array(); $used_assigned = array(); $needed_types = array(); $old_style = true; foreach($templates as $item) { $item = trim($item); if($item == '') continue; @@ -29,9 +31,12 @@ if(strpos($item, ':') === false) { $tpl_id = $item; } else { $old_style = false; // has new-style assigns list($assigned_id, $tpl_id) = explode(':', $item, 2); if(substr($assigned_id, 0, 1) === 'n') $assigned_id = 0; // newly inserted items } if(array_key_exists($tpl_id, $needed_types) == false) $needed_types[$tpl_id] = 0; $needed_types[$tpl_id]++; if($assigned_id > 0) { $used_assigned[] = $assigned_id; // for comparison with database @@ -40,6 +45,31 @@ } } if($old_style == true) { // we have to take care of this in an other way $in_db = $app->db->queryAllRecords('SELECT `assigned_template_id`, `client_template_id` FROM `client_template_assigned` WHERE `client_id` = ' . $clientId); if(is_array($in_db) && count($in_db) > 0) { foreach($in_db as $item) { if(array_key_exists($item['client_template_id'], $needed_types) == false) $needed_types[$item['client_template_id']] = 0; $needed_types[$item['client_template_id']]--; } } foreach($needed_types as $tpl_id => $count) { if($count > 0) { // add new template to client (includes those from old-style without assigned_template_id) for($i = $count; $i > 0; $i--) { $app->db->query('INSERT INTO `client_template_assigned` (`client_id`, `client_template_id`) VALUES (' . $clientId . ', ' . $tpl_id . ')'); } } elseif($count < 0) { // remove old ones for($i = $count; $i < 0; $i++) { $app->db->query('DELETE FROM `client_template_assigned` WHERE client_id = ' . $clientId . ' AND client_template_id = ' . $tpl_id . ' LIMIT 1'); } } } } else { // we have to take care of this in an other way $in_db = $app->db->queryAllRecords('SELECT `assigned_template_id`, `client_template_id` FROM `client_template_assigned` WHERE `client_id` = ' . $clientId); if(is_array($in_db) && count($in_db) > 0) { // check which templates were removed from this client @@ -57,6 +87,8 @@ $app->db->query('INSERT INTO `client_template_assigned` (`client_id`, `client_template_id`) VALUES (' . $clientId . ', ' . $item . ')'); } } } unset($new_tpl); unset($in_db); unset($templates); @@ -80,7 +112,7 @@ // we have to call the update_client_templates function $templates = explode('/', $record['template_additional']); $this->update_client_templates($clientId, $templates); $app->db->query('UPDATE `client` SET `template_additional` = '' WHERE `client_id` = ' . $app->functions->intval($clientId)); $app->db->query('UPDATE `client` SET `template_additional` = \'\' WHERE `client_id` = ' . $app->functions->intval($clientId)); } /* interface/lib/classes/remoting.inc.php
@@ -1103,7 +1103,40 @@ } $app->uses('remoting_lib'); $app->remoting_lib->loadFormDef('../client/form/client.tform.php'); return $app->remoting_lib->getDataRecord($client_id); $data = $app->remoting_lib->getDataRecord($client_id); // we need to get the new-style templates for backwards-compatibility - maybe we remove this in a later version if(is_array($data) && count($data) > 0) { if(isset($data['client_id'])) { // this is a single record if($data['template_additional'] == '') { $tpls = $app->db->queryAllRecords('SELECT CONCAT(`assigned_template_id`, \':\', `client_template_id`) as `item` FROM `client_template_assigned` WHERE `client_id` = ' . $data['client_id']); $tpl_arr = array(); if($tpls) { foreach($tpls as $tpl) $tpl_arr[] = $tpl['item']; } $data['template_additional'] = implode('/', $tpl_arr); unset($tpl_arr); unset($tpls); } } elseif(isset($data[0]['client_id'])) { // multiple client records foreach($data as $index => $client) { if($client['template_additional'] == '') { $tpls = $app->db->queryAllRecords('SELECT CONCAT(`assigned_template_id`, \':\', `client_template_id`) as `item` FROM `client_template_assigned` WHERE `client_id` = ' . $client['client_id']); $tpl_arr = array(); if($tpls) { foreach($tpls as $tpl) $tpl_arr[] = $tpl['item']; } $data[$index]['template_additional'] = implode('/', $tpl_arr); // dont use the $client array here - changes would not be returned to soap } unset($tpl_arr); unset($tpls); } } } return $data; } public function client_get_id($session_id, $sys_userid) @@ -1169,6 +1202,32 @@ $this->server->fault('permission_denied','You do not have the permissions to access this function.'); return false; } $app->uses('remoting_lib'); $old_rec = $app->remoting_lib->getDataRecord($client_id); // we need the previuos templates assigned here $this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ' . $client_id); if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) { // check previous type of storing templates $tpls = explode('/', $old_rec['template_additional']); $this->oldTemplatesAssigned = array(); foreach($tpls as $item) { $item = trim($item); if(!$item) continue; $this->oldTemplatesAssigned[] = array('assigned_templated_id' => 0, 'client_template_id' => $item, 'client_id' => $client_id); } unset($tpls); } if(isset($params['template_additional'])) { $app->uses('client_templates'); $templates = explode('/', $params['template_additional']); $params['template_additional'] = ''; $app->client_templates->update_client_templates($client_id, $templates); unset($templates); } if(!isset($params['parent_client_id']) || $params['parent_client_id'] == 0) $params['parent_client_id'] = $reseller_id; $affected_rows = $this->updateQuery('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php', $reseller_id, $client_id, $params, 'client:' . ($reseller_id ? 'reseller' : 'client') . ':on_after_update');