* @category class * @package core * @subpackage ajax * @copyright Creative Commons Attribution No Derivatives (CC-BY-ND) * @see Ajax, AjaxLogon, AjaxPasswd */ class Xoad { public function validate ($file, $formData, $itemId = 0) { $message = Message::singleton (); try { set_error_handler ('logPhpError'); $array = $this->validateRequired ($file, $formData); if (sizeof ($array)) return "'". implode ("', '", $array) ."'"; $array = $this->validateField ($file, $formData); if (sizeof ($array)) return "'". implode ("', '", $array) ."'"; $array = $this->validateUnique ($file, $formData, $itemId); if (sizeof ($array)) return "'". implode ("', '", $array) ."'"; restore_error_handler (); return ""; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return ""; } public function validateField ($file, $formData) { $message = Message::singleton (); $return = array (); try { $form = new Form ($file); $form->recovery ($formData); $fields = $form->getFields (); $labels = array (); $assigns = array (); foreach ($fields as $key => $field) if (!$field->isReadOnly () && !$field->isValid ()) { $assigns [] = $field->getAssign (); $labels [] = $field->getLabel (); } if (!sizeof ($assigns)) return $return; if (sizeof ($labels) > 1) { $last = array_pop ($labels); $list = '"'. implode ('", "', $labels) .'" '. __ ('and') .' "'. $last .'"'; } else $list = '"'. $labels [0] .'"'; $message->addWarning (__ ('Enter valid values ​​in the fields: [1].', $list)); $return = $assigns; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return $return; } public function validateUnique ($file, $formData, $itemId = 0) { $message = Message::singleton (); $return = array (); try { $db = Database::singleton (); $form = new Form ($file); $form->recovery ($formData); $fields = $form->getUniques (); foreach ($fields as $key => $field) { if ($field->isEmpty () || $field->isReadOnly ()) continue; $sth = $db->prepare ("SELECT * FROM ". $form->getTable () ." WHERE ". $field->getColumn () ." = ". Database::toValue ($field) ." AND ". $form->getPrimary () ." != '". $itemId ."'"); $sth->execute (); $obj = $sth->fetch (PDO::FETCH_OBJ); if (!$obj) continue; $message->addWarning (__ ('The field [1] must be unique. There is already an occurrence for [2] in database.', '"'. $field->getLabel () .'"', '"'. Form::toHtml ($field) .'"')); $return [] = $field->getAssign (); } } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return $return; } public function validateRequired ($file, $formData) { $message = Message::singleton (); $return = array (); try { $form = new Form ($file); $form->recovery ($formData); $fields = $form->getRequireds (); $labels = array (); $assigns = array (); foreach ($fields as $key => $field) if (!$field->isReadOnly () && $field->isEmpty ()) { $assigns [] = $field->getAssign (); $labels [] = $field->getLabel (); } if (!sizeof ($assigns)) return $return; if (sizeof ($labels) > 1) { $last = array_pop ($labels); $list = '"'. implode ('", "', $labels) .'" '. __ ('and') .' "'. $last .'"'; } else $list = '"'. $labels [0] .'"'; $message->addWarning (__ ('Fields marked with * must be completed. Enter valid values ​​in the fields: [1].', $list)); $return = $assigns; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return $return; } public function save ($file, $formData, $itemId = 0) { $message = Message::singleton (); try { $instance = Instance::singleton (); $section = Business::singleton ()->getSection (Section::TCURRENT); $action = Business::singleton ()->getAction (Action::TCURRENT); if (!file_exists ($section->getCompPath () . $action->getName () .'.commit.php')) throw new Exception ('Arquivo ['. $section->getCompPath () . $action->getName () .'.commit.php] não encontrado.'); set_error_handler ('logPhpError'); require_once Instance::singleton ()->getCorePath () .'extra/htmlPurifier/HTMLPurifier.standalone.php'; include $section->getCompPath () . $action->getName () .'.commit.php'; restore_error_handler (); $message->save (); return TRUE; } catch (PDOException $e) { $message->addWarning ('Erro de execução de query: '. $e->getMessage ()); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } if (isset ($form) && is_object ($form) && get_class ($form) == 'Form') $form->setLoad (FALSE); restore_error_handler (); $message->save (); return FALSE; } public function getSuggest ($value, $filter, $owner) { $str = "actb_self.actb_keywords = new Array();"; $str .= "actb_self.actb_ids = new Array();"; $names = array (); $ids = array (); $where = ''; if (trim ($filter) != '') $where .= " AND (_mimetype = '". implode ("' OR _mimetype = '", explode (',', $filter)) ."')"; if ((int) $owner) $where .= " AND _user = '". User::singleton ()->getId () ."'"; try { $db = Database::singleton (); $sth = $db->prepare ("SELECT _id, _name FROM _file WHERE _name ILIKE '%". $value ."%'". $where); $sth->execute (); while ($obj = $sth->fetch (PDO::FETCH_OBJ)) { $names [] = $obj->_name; $ids [] = $obj->_id; } $str = "actb_self.actb_keywords = new Array('". implode ("','", $names) ."');"; $str .= "actb_self.actb_ids = new Array('". implode ("','", $ids) ."');"; } catch (PDOException $e) { toLog ($e->getMessage ()); } catch (Exception $e) { toLog ($e->getMessage ()); } return $str; } public function getFileResume ($id, $details = TRUE, $dimension = 100) { $message = Message::singleton (); try { return File::synopsis ($id, array (), $dimension); } catch (Exception $e) { return '
'. $e->getMessage () .'
'; } catch (PDOException $e) { return '
'. $e->getMessage () .'
'; } } public function tableExists ($name) { $message = Message::singleton (); try { return Database::tableExists ($name); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return FALSE; } public function addFeed ($url) { $message = Message::singleton (); $return = TRUE; try { if (!$this->tableExists ('_rss')) throw new Exception ('Não há suporte para Feeds RSS no sistema. Instale o componente [global.home] para obter suporte.'); $db = Database::singleton (); $user = User::singleton (); $sth = $db->prepare ("INSERT INTO _rss (_url, _user) VALUES ('". $url ."', '". $user->getId () ."')"); $sth->execute (); $message->addMessage ('Feed RSS adicionado ao monitoramento do sistema.'); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); $return = FALSE; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); $return = FALSE; } $message->save (); $this->showMessages (); return $return; } public function makeVersionable ($table, $primary) { $message = Message::singleton (); $return = TRUE; try { Version::singleton ()->make ($table, $primary); $message->addMessage ('A seção agora está sob Controle de Versões! Qualquer nova alteração nos itens será logada e poderá ser revertida.'); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); $return = FALSE; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); $return = FALSE; } $message->save (); $this->showMessages (); return $return; } public function loadRevision ($itemId, $version) { $message = Message::singleton (); set_error_handler ('logPhpError'); $return = FALSE; try { $instance = Instance::singleton (); $section = Business::singleton ()->getSection (Section::TCURRENT); $action = Business::singleton ()->getAction (Action::TCURRENT); $form = new VersionForm ('version.xml', 'view.xml', 'all.xml'); if (!$form->load ($itemId, $version)) throw new Exception ('Não foi possível carregar os dados do item!'); $array = array (); while ($group = $form->getGroup ()) { ob_start (); ?> getField (FALSE, $group->getId ())) { $label = Form::toLabel ($field); $backColor = $backColor == 'FFFFFF' ? 'F4F4F4' : 'FFFFFF'; ?>
getId ()) { ob_start (); ?>
getLabel () ?>
innerHTML = implode ('', $array); $return = TRUE; } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } restore_error_handler (); $message->save (); return $return; } public function revertRevision ($itemId, $version) { $message = Message::singleton (); set_error_handler ('logPhpError'); $return = FALSE; try { $instance = Instance::singleton (); $section = Business::singleton ()->getSection (Section::TCURRENT); $action = Business::singleton ()->getAction (Action::TCURRENT); $form = new VersionForm ('version.xml', 'view.xml', 'all.xml'); if (!$form->load ($itemId, $version)) throw new Exception ('Não foi possível carregar os dados do item!'); if (!$form->revert ()) throw new Exception ('Impossível reverter revisão!'); $message->addMessage ('Os item foi revertido para a revisão ['. $version .'] com sucesso!'); $return = TRUE; } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } restore_error_handler (); $message->save (); return $return; } public function inPlaceStatusValue ($itemId, $table, $primary, $column) { $message = Message::singleton (); try { $sth = Database::singleton ()->prepare ("SELECT ". $column ." FROM ". $table ." WHERE ". $primary ." = '". $itemId ."'"); $sth->execute (); $obj = $sth->fetch (PDO::FETCH_OBJ); if (!$obj) return NULL; return $obj->$column; } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return FALSE; } public function inPlaceStatusChange ($itemId, $table, $primary, $column, $value) { $message = Message::singleton (); try { if (!User::singleton ()->isRegistered ($table, $column, $itemId, $value)) throw new Exception (__ ('You dont have permission to access, edit or delete this item!')); $db = Database::singleton (); try { $sth = $db->prepare ("UPDATE ". $table ." SET ". $column ." = '". $value ."', _update = now() WHERE ". $primary ." = '". $itemId ."'"); $sth->execute (); } catch (PDOException $e) { $sth = $db->prepare ("UPDATE ". $table ." SET ". $column ." = '". $value ."' WHERE ". $primary ." = '". $itemId ."'"); $sth->execute (); } $message->addMessage (__ ('The status has been changed!')); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return FALSE; } public function sendBugReport ($formData) { $message = Message::singleton (); try { $instance = Instance::singleton (); $to = explode (',', $instance->getEmail ()); array_walk ($to, 'cleanArray'); if (!in_array ('bug@titanframework.com', $to)) $to [] = 'bug@titanframework.com'; $subject = '[Titan Framework] Bug Report'; if (trim ($formData ['mail']) != '') $header = "From: ". Instance::singleton ()->getEmail () ."\r\nReply-To: ". trim ($formData ['mail']) ."\r\n"; else $header = "From: ". Instance::singleton ()->getEmail (); $header .= "Content-Type: text/plain; charset=utf-8"; ob_start (); ?> Application: getName () ?> [getUrl () ?>] Date: Author: [] [IP: ] Browser: [] Breadcrumb: [getUrl () . $_SERVER ['REQUEST_URI'] ?>] Description: addMessage (__ ('Report has been send! Comming soon you will receive a feedback.')); } catch (PDOException $e) { $message->addWarning ('Erro de execução de query: '. $e->getMessage ()); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return FALSE; } public function changeLanguage ($language) { $message = Message::singleton (); try { Localization::singleton ()->setLanguage ($language); User::singleton ()->changeLanguage ($language); return TRUE; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return FALSE; } public function getAlerts () { $message = Message::singleton (); try { if (!Database::tableExists ('_alert')) throw new Exception (__ ('Alerts module is not enable in this application!')); set_error_handler ('logPhpError'); $array = Alert::singleton ()->getAlerts (User::singleton ()->getId ()); $alerts = array (); foreach ($array as $id => $alert) $alerts [] = "{ id: ". $id .", message: '". $alert ['_MESSAGE_'] ."', icon: '". $alert ['_ICON_'] ."', link: '". $alert ['_GO_'] ."', read: ". $alert ['_READ_'] ." }"; restore_error_handler (); return "var alerts = new Array (". implode (", ", $alerts) .");"; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return 'var alerts = new Array ();'; } public function readAlert ($id) { try { if (!Database::tableExists ('_alert')) return FALSE; return Alert::singleton ()->read ($id, User::singleton ()->getId ()); } catch (Exception $e) { toLog ($e->getMessage ()); } catch (PDOException $e) { toLog ($e->getMessage ()); } return FALSE; } public function deleteAlert ($id) { try { if (!Database::tableExists ('_alert')) return FALSE; return Alert::singleton ()->delete ($id, User::singleton ()->getId ()); } catch (Exception $e) { toLog ($e->getMessage ()); } catch (PDOException $e) { toLog ($e->getMessage ()); } return FALSE; } public function getItemsInShoppingCart () { $message = Message::singleton (); try { if (!Shopping::isActive ()) throw new Exception (__ ('Shopping module is not enable in this application!')); set_error_handler ('logPhpError'); $array = Shopping::singleton ()->getShoppingCartItems (User::singleton ()->getId ()); $items = array (); foreach ($array as $id => $item) $items [] = "{ id: ". $id .", description: '". addslashes ($item ['_DESCRIPTION_']) ."', quantity: ". $item ['_QUANTITY_'] .", value: ". number_format ($item ['_VALUE_'], 2, '.', '') ." }"; restore_error_handler (); return "var items = new Array (". implode (", ", $items) .");"; } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ($e->getMessage ()); } $message->save (); return 'var items = new Array ();'; } public function deleteItemFromShoppingCart ($id) { $message = Message::singleton (); try { if (!Shopping::isActive ()) return FALSE; if (Shopping::singleton ()->deleteByOwner ($id, User::singleton ()->getId ())) return TRUE; } catch (Exception $e) { toLog ($e->getMessage ()); } catch (PDOException $e) { toLog ($e->getMessage ()); } $message->addWarning (__ ('Impossible to delete item from shopping cart! Verify if payment has been confirmed. In this case, you cannot delete this item.')); $message->save (); return FALSE; } public function copyItem ($itemId) { $message = Message::singleton (); try { if (!(int) $itemId) throw new Exception (__ ('Error! Data losted.')); set_error_handler ('logPhpError'); $form = new Form (array ('copy.xml', 'create.xml', 'all.xml')); if (!$form->load ($itemId)) throw new Exception (__('Unable to load the data of the item!')); $form->setId (0); $form->setLoad (FALSE); $newId = $form->save (); if (!$newId) throw new Exception (__ ('Unable to duplicate item!')); while ($field = $form->getField ()) { if (!$field->isSavable ()) try { $field->copy ($itemId, $newId); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } catch (PDOException $e) { $message->addWarning ('DB Error: '. $e->getMessage ()); } } restore_error_handler (); Log::singleton ()->add ('COPY', $form->getResume ($newId)); $message->save (); return $newId; } catch (PDOException $e) { $message->addWarning ('Error: '. $e->getMessage ()); } catch (Exception $e) { $message->addWarning ($e->getMessage ()); } restore_error_handler (); $message->save (); return 0; } public function delay () { sleep (1); } public function showMessages () { $message = Message::singleton (); if (!is_object ($message) || !$message->has ()) return FALSE; $str = ''; while ($msg = $message->get ()) $str .= $msg; $msgs = &XOAD_HTML::getElementById ('labelMessage'); $msgs->innerHTML = '
'. $str .'
'; $message->clear (); return TRUE; } public function xoadGetMeta () { $methods = get_class_methods ($this); XOAD_Client::mapMethods ($this, $methods); XOAD_Client::publicMethods ($this, $methods); XOAD_Client::privateMethods ($this, array ()); } } ?>