/** * Redirect to the URL and increase the clicks by one * * @access public */ function Link() { $lid = jaws()->request->fetch('id', 'get'); $lid = Jaws_XSS::defilter($lid); $model = $this->gadget->model->load('Links'); $link = $model->GetLink($lid); if (!Jaws_Error::IsError($link) && !empty($link)) { $click = $model->Click($link['id']); if (!Jaws_Error::IsError($click)) { Jaws_Header::Location($link['url'], null, 301); } } // By default, on the errors stay in the main page Jaws_Header::Referrer(); }
/** * Export language * * @access public * @return void */ function Export() { $lang = jaws()->request->fetch('lang', 'get'); require_once PEAR_PATH . 'File/Archive.php'; $tmpDir = sys_get_temp_dir(); $tmpFileName = "{$lang}.tar"; $tmpArchiveName = $tmpDir . DIRECTORY_SEPARATOR . $tmpFileName; $writerObj = File_Archive::toFiles(); $src = File_Archive::read(JAWS_DATA . "languages/{$lang}", $lang); $dst = File_Archive::toArchive($tmpArchiveName, $writerObj); $res = File_Archive::extract($src, $dst); if (!PEAR::isError($res)) { return Jaws_Utils::Download($tmpArchiveName, $tmpFileName); } Jaws_Header::Referrer(); }
/** * Creates a new note * * @access public * @return array Response array */ function CreateNote() { $data = jaws()->request->fetch(array('title', 'content'), 'post'); if (empty($data['title']) || empty($data['content'])) { $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_ERROR_INCOMPLETE_DATA'), 'Notepad.Response', RESPONSE_ERROR, $data); Jaws_Header::Referrer(); } $model = $this->gadget->model->load('Notepad'); $data['user'] = (int) $GLOBALS['app']->Session->GetAttribute('user'); $data['title'] = Jaws_XSS::defilter($data['title']); $data['content'] = Jaws_XSS::defilter($data['content']); $result = $model->Insert($data); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_ERROR_NOTE_CREATE'), 'Notepad.Response', RESPONSE_ERROR, $data); Jaws_Header::Referrer(); } $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_NOTICE_NOTE_CREATED'), 'Notepad.Response'); Jaws_Header::Location($this->gadget->urlMap('Notepad')); }
/** * Export Logs * * @access public * @return void */ function ExportLogs() { $this->gadget->CheckPermission('ExportLogs'); $filters = jaws()->request->fetch(array('from_date', 'to_date', 'gname', 'user', 'priority', 'status'), 'get'); $filters['gadget'] = $filters['gname']; unset($filters['gname']); $model = $this->gadget->model->load('Logs'); $logs = $model->GetLogs($filters); if (Jaws_Error::IsError($logs) || count($logs) < 1) { return; } $tmpDir = sys_get_temp_dir(); $tmpCSVFileName = uniqid(rand(), true) . '.csv'; $fp = fopen($tmpDir . DIRECTORY_SEPARATOR . $tmpCSVFileName, 'w'); $date = Jaws_Date::getInstance(); foreach ($logs as $log) { $exportData = ''; $exportData .= $log['id'] . ','; $exportData .= $log['username'] . ','; $exportData .= $log['gadget'] . ','; $exportData .= $log['action'] . ','; $exportData .= $log['priority'] . ','; $exportData .= $log['apptype'] . ','; $exportData .= $log['backend'] . ','; $exportData .= long2ip($log['ip']) . ','; $exportData .= $log['status'] . ','; $exportData .= $date->Format($log['insert_time'], 'Y-m-d H:i:s'); $exportData .= PHP_EOL; fwrite($fp, $exportData); } fclose($fp); require_once PEAR_PATH . 'File/Archive.php'; $tmpFileName = uniqid(rand(), true) . '.tar.gz'; $tmpArchiveName = $tmpDir . DIRECTORY_SEPARATOR . $tmpFileName; $writerObj = File_Archive::toFiles(); $src = File_Archive::read($tmpDir . DIRECTORY_SEPARATOR . $tmpCSVFileName); $dst = File_Archive::toArchive($tmpArchiveName, $writerObj); $res = File_Archive::extract($src, $dst); if (!PEAR::isError($res)) { return Jaws_Utils::Download($tmpArchiveName, $tmpFileName); } Jaws_Header::Referrer(); }
/** * Update Selected AddressBook Group Data. * * @access public * @return string HTML content with menu and menu items */ function UpdateGroup() { if (!$GLOBALS['app']->Session->Logged()) { return Jaws_HTTPError::Get(403); } $post = jaws()->request->fetch(array('name', 'description'), 'post'); $gid = (int) jaws()->request->fetch('gid', 'post'); $model = $this->gadget->model->load('Groups'); $info = $model->GetGroupInfo($gid); if (!isset($info)) { return Jaws_HTTPError::Get(404); } if ($info['user'] != $GLOBALS['app']->Session->GetAttribute('user')) { return Jaws_HTTPError::Get(403); } if (empty($post['name']) || trim($post['name']) == '') { $GLOBALS['app']->Session->PushResponse(_t('ADDRESSBOOK_GROUPS_EMPTY_NAME_WARNING'), 'AddressBook.Groups', RESPONSE_WARNING); Jaws_Header::Referrer(); } $post['[description]'] = $post['description']; unset($post['description']); $result = $model->UpdateGroup($gid, $post); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushResponse($result->getMessage(), 'AddressBook.Groups', RESPONSE_ERROR); Jaws_Header::Referrer(); } else { $GLOBALS['app']->Session->PushResponse(_t('ADDRESSBOOK_RESULT_EDIT_GROUP_SAVED'), 'AddressBook.AdrGroups'); $link = $this->gadget->urlMap('GroupMembers', array('id' => $gid)); Jaws_Header::Location($link); } }
/** * Adds a new vote to an answer of a certain poll * * @access public */ function Vote() { $post = jaws()->request->fetch(array('pid', 'answers:array'), 'post'); $model = $this->gadget->model->load('Poll'); $poll = $model->GetPoll((int) $post['pid']); if (!Jaws_Error::IsError($poll) && !empty($poll)) { if (($poll['poll_type'] == 1 || !$GLOBALS['app']->Session->GetCookie('poll_' . $poll['id'])) && is_array($post['answers']) && count($post['answers']) > 0) { $GLOBALS['app']->Session->SetCookie('poll_' . $poll['id'], 'voted', (int) $this->gadget->registry->fetch('cookie_period') * 24 * 60); foreach ($post['answers'] as $aid) { $model->AddAnswerVote($poll['id'], (int) $aid); } } } $GLOBALS['app']->Session->PushSimpleResponse(_t('POLL_THANKS'), 'Poll'); Jaws_Header::Referrer(); }
/** * Updates note * * @access public * @return array Response array */ function UpdateNote() { $data = jaws()->request->fetch(array('id', 'title', 'content'), 'post'); if (empty($data['id']) || empty($data['title']) || empty($data['content'])) { $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_ERROR_INCOMPLETE_DATA'), 'Notepad.Response', RESPONSE_ERROR, $data); Jaws_Header::Referrer(); } // Validate note $model = $this->gadget->model->load('Notepad'); $id = (int) $data['id']; $user = (int) $GLOBALS['app']->Session->GetAttribute('user'); $note = $model->GetNote($id, $user); if (Jaws_Error::IsError($note)) { $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_ERROR_RETRIEVING_DATA'), 'Notepad.Response', RESPONSE_ERROR); Jaws_Header::Referrer(); } // Verify owner if ($note['user'] != $user) { $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_ERROR_NO_PERMISSION'), 'Notepad.Response', RESPONSE_ERROR); Jaws_Header::Referrer(); } $data['title'] = Jaws_XSS::defilter($data['title']); $data['content'] = Jaws_XSS::defilter($data['content']); $result = $model->Update($id, $data); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_ERROR_NOTE_UPDATE'), 'Notepad.Response', RESPONSE_ERROR, $data); Jaws_Header::Referrer(); } $GLOBALS['app']->Session->PushResponse(_t('NOTEPAD_NOTICE_NOTE_UPDATED'), 'Notepad.Response'); Jaws_Header::Location($this->gadget->urlMap('Notepad')); }
/** * Adds a new entry to the comments, sets cookie with user data and redirects to main page * * @access public * @return void */ function PostMessage() { $post = jaws()->request->fetch(array('message', 'name', 'email', 'url', 'url2', 'requested_gadget', 'requested_action', 'reference', 'is_private'), 'post'); if ($GLOBALS['app']->Session->Logged()) { $post['name'] = $GLOBALS['app']->Session->GetAttribute('nickname'); $post['email'] = $GLOBALS['app']->Session->GetAttribute('email'); $post['url'] = $GLOBALS['app']->Session->GetAttribute('url'); } if (trim($post['message']) == '' || trim($post['name']) == '') { $GLOBALS['app']->Session->PushResponse(_t('COMMENTS_COMMENT_INCOMPLETE_FIELDS'), 'Comments', RESPONSE_ERROR, $post); Jaws_Header::Referrer(); } /* lets check if it's spam * it's rather common that spam engines * fill out all inputs and this one is hidden * via CSS so not many engines are smart enough * to not fill this out */ if (!empty($post['url2'])) { $GLOBALS['app']->Session->PushResponse(_t('COMMENTS_FAILED_SPAM_CHECK_MESSAGES'), 'Comments', RESPONSE_ERROR, $post); Jaws_Header::Referrer(); } $mPolicy = Jaws_Gadget::getInstance('Policy')->action->load('Captcha'); $resCheck = $mPolicy->checkCaptcha(); if (Jaws_Error::IsError($resCheck)) { $GLOBALS['app']->Session->PushResponse($resCheck->getMessage(), 'Comments', RESPONSE_ERROR, $post); Jaws_Header::Referrer(); } $permalink = $GLOBALS['app']->GetSiteURL(); $status = $this->gadget->registry->fetch('default_comment_status'); if ($this->gadget->GetPermission('ManageComments')) { $status = Comments_Info::COMMENTS_STATUS_APPROVED; } $objHook = Jaws_Gadget::getInstance($post['requested_gadget'])->hook->load('Comments'); if (Jaws_Error::IsError($objHook)) { $GLOBALS['app']->Session->PushResponse($objHook->getMessage(), 'Comments', RESPONSE_ERROR, $post); Jaws_Header::Referrer(); } $reference = $objHook->Execute($post['requested_action'], $post['reference']); if (empty($reference)) { $GLOBALS['app']->Session->PushResponse(_t('COMMENTS_ERROR_REFERENCE_EXISTS'), 'Comments', RESPONSE_ERROR, $post); Jaws_Header::Referrer(); } $res = $this->gadget->model->load('EditComments')->insertComment($post['requested_gadget'], $post['reference'], $post['requested_action'], $post['name'], $post['email'], $post['url'], $post['message'], $_SERVER['REMOTE_ADDR'], $permalink, $status, $post['is_private']); if (Jaws_Error::isError($res)) { $GLOBALS['app']->Session->PushResponse($res->getMessage(), 'Comments', RESPONSE_ERROR, $post); } else { $this->EmailComment($reference, $post['message']); $GLOBALS['app']->Session->PushResponse(_t('COMMENTS_MESSAGE_SENT'), 'Comments'); } Jaws_Header::Location($reference['url']); }
/** * Publish/Draft a topic * * @access public */ function PublishTopic() { if (!$GLOBALS['app']->Session->Logged()) { return Jaws_HTTPError::Get(403); } $this->gadget->CheckPermission('PublishTopic'); $rqst = jaws()->request->fetch(array('fid', 'tid', 'notification'), 'get'); $tModel = $this->gadget->model->load('Topics'); $topic = $tModel->GetTopic($rqst['tid'], $rqst['fid']); if (Jaws_Error::IsError($topic)) { // redirect to referrer page Jaws_Header::Referrer(); } // check user permissions $logged_user = (int) $GLOBALS['app']->Session->GetAttribute('user'); if ($logged_user != $topic['first_post_uid'] && !$this->gadget->GetPermission('ForumManage', $topic['fid'])) { return Jaws_HTTPError::Get(403); } $result = $tModel->PublishTopic($topic['id'], $topic['fid'], !$topic['published']); if (Jaws_Error::IsError($result)) { // do nothing } $event_type = $topic['published'] ? 'published' : 'draft'; $topic_link = $this->gadget->urlMap('Posts', array('fid' => $topic['fid'], 'tid' => $topic['id']), true); $result = $tModel->TopicNotification($event_type, $topic['forum_title'], $topic_link, $topic['subject'], $this->gadget->ParseText($topic['message'], 'Forums', 'index')); if (Jaws_Error::IsError($result)) { // do nothing } // redirect to referrer page Jaws_Header::Referrer(); }
/** * Logout user * * @access public * @return void */ function Logout() { $GLOBALS['app']->Session->Logout(); Jaws_Header::Referrer(); }
/** * Delete a post * * @access public */ function DeletePost() { if (!$GLOBALS['app']->Session->Logged()) { return Jaws_HTTPError::Get(403); } $rqst = jaws()->request->fetch(array('fid', 'tid', 'pid', 'delete_reason', 'notification', 'confirm')); $pModel = $this->gadget->model->load('Posts'); $post = $pModel->GetPost($rqst['pid'], $rqst['tid'], $rqst['fid']); if (Jaws_Error::IsError($post) || empty($post) || $post['id'] == $post['topic_first_post_id']) { return false; } if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') { $topic_link = $this->gadget->urlMap('Posts', array('fid' => $post['fid'], 'tid' => $post['tid']), true); if (!is_null($rqst['confirm'])) { // delete min limit time $delete_limit_time = (int) $this->gadget->registry->fetch('edit_min_limit_time'); // check delete permissions $forumManage = $this->gadget->GetPermission('ForumManage', $post['fid']); if (!$this->gadget->GetPermission('DeletePost') || $post['uid'] != (int) $GLOBALS['app']->Session->GetAttribute('user') && !$forumManage || $post['topic_locked'] && !$forumManage || time() - $post['insert_time'] > $delete_limit_time && !$forumManage) { return Jaws_HTTPError::Get(403); } $result = $pModel->DeletePost($post['id'], $post['tid'], $post['fid']); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushSimpleResponse(_t('FORUMS_POSTS_DELETE_ERROR'), 'DeletePost'); // redirect to referrer page Jaws_Header::Referrer(); } $send_notification = $this->gadget->GetPermission('ForumManage', $post['fid']) ? (bool) $rqst['notification'] : true; // send delete notification if ($send_notification) { $result = $pModel->PostNotification('', 'delete', $post['forum_title'], $topic_link, $post['subject'], $this->gadget->ParseText($post['message'], 'Forums', 'index', 'index'), $this->gadget->ParseText($rqst['delete_reason'], 'Forums', 'index')); if (Jaws_Error::IsError($result)) { // do nothing } } } // redirect to topic posts list Jaws_Header::Location($topic_link); } else { $tpl = $this->gadget->template->load('DeletePost.html'); $tpl->SetBlock('post'); $tpl->SetVariable('fid', $post['fid']); $tpl->SetVariable('tid', $post['tid']); $tpl->SetVariable('pid', $post['id']); $tpl->SetVariable('findex_title', _t('FORUMS_FORUMS')); $tpl->SetVariable('findex_url', $this->gadget->urlMap('Forums')); $tpl->SetVariable('forum_title', $post['forum_title']); $tpl->SetVariable('forum_url', $this->gadget->urlMap('Topics', array('fid' => $post['fid']))); $tpl->SetVariable('topic_title', $post['subject']); $tpl->SetVariable('topic_url', $this->gadget->urlMap('Posts', array('fid' => $post['fid'], 'tid' => $post['tid']))); $tpl->SetVariable('title', _t('FORUMS_POSTS_DELETE_TITLE')); // error response if ($response = $GLOBALS['app']->Session->PopSimpleResponse('DeletePost')) { $tpl->SetVariable('msg', $response); } // date format $date_format = $this->gadget->registry->fetch('date_format'); $date_format = empty($date_format) ? 'DN d MN Y' : $date_format; // post meta data $tpl->SetVariable('postedby_lbl', _t('FORUMS_POSTEDBY')); $tpl->SetVariable('username', $post['username']); $tpl->SetVariable('nickname', $post['nickname']); $tpl->SetVariable('user_url', $GLOBALS['app']->Map->GetURLFor('Users', 'Profile', array('user' => $post['username']))); $objDate = Jaws_Date::getInstance(); $tpl->SetVariable('insert_time', $objDate->Format($post['insert_time'], $date_format)); $tpl->SetVariable('insert_time_iso', $objDate->ToISO((int) $post['insert_time'])); // message $tpl->SetVariable('message', $this->gadget->ParseText($post['message'])); // delete reason $tpl->SetVariable('lbl_delete_reason', _t('FORUMS_POSTS_DELETE_REASON')); // notification if ($this->gadget->GetPermission('ForumManage', $post['fid'])) { $tpl->SetBlock('post/notification'); $tpl->SetVariable('lbl_send_notification', _t('FORUMS_NOTIFICATION_MESSAGE')); $tpl->SetBlock('post/notification/checked'); $tpl->ParseBlock('post/notification/checked'); $tpl->ParseBlock('post/notification'); } $tpl->SetVariable('btn_submit_title', _t('FORUMS_POSTS_DELETE_BUTTON')); $tpl->SetVariable('btn_cancel_title', _t('GLOBAL_CANCEL')); $tpl->ParseBlock('post'); return $tpl->Get(); } }
/** * Update Address Book Data. * * @access public * @return string HTML content with menu and menu items */ function UpdateAddress() { if (!$GLOBALS['app']->Session->Logged()) { return Jaws_HTTPError::Get(403); } $post = jaws()->request->fetch(array('nickname', 'title', 'user_link:int', 'related', 'image', 'url', 'notes', 'public', 'id'), 'post'); $post['name'] = implode(';', jaws()->request->fetch('name:array', 'post')); $id = (int) $post['id']; unset($post['id']); $groupIDs = jaws()->request->fetch('groups:array'); $tels = jaws()->request->fetch(array('tel_type:array', 'tel_number:array'), 'post'); $model = $this->gadget->model->load('AddressBook'); // Check user edit His addressBook $addressInfo = $model->GetAddressInfo($id); $user = (int) $GLOBALS['app']->Session->GetAttribute('user'); if (Jaws_Error::IsError($addressInfo) || !isset($addressInfo) || $user != $addressInfo['user']) { return Jaws_HTTPError::Get(403); } $telHome = array(); $telWork = array(); $telOther = array(); if (isset($tels['tel_type'])) { foreach ($tels['tel_number'] as $key => $telNumber) { if (trim($telNumber) == '') { unset($tels['tel_number'][$key]); unset($tels['tel_type'][$key]); } else { switch ($tels['tel_type'][$key]) { case 1: //Home //Home case 2: case 3: $telHome[] = $tels['tel_type'][$key] . ':' . $telNumber; break; case 4: //Work //Work case 5: case 6: $telWork[] = $tels['tel_type'][$key] . ':' . $telNumber; break; case 7: //Other //Other case 8: case 9: $telOther[] = $tels['tel_type'][$key] . ':' . $telNumber; break; } } } } $post['tel_home'] = implode(',', $telHome); $post['tel_work'] = implode(',', $telWork); $post['tel_other'] = implode(',', $telOther); $emails = jaws()->request->fetch(array('email_type:array', 'email:array'), 'post'); $emailHome = array(); $emailWork = array(); $emailOther = array(); if (isset($emails['email_type'])) { foreach ($emails['email'] as $key => $email) { if (trim($email) != '') { switch ($emails['email_type'][$key]) { case 1: //Home $emailHome[] = $emails['email_type'][$key] . ':' . $email; break; case 2: //Work $emailWork[] = $emails['email_type'][$key] . ':' . $email; break; case 3: //Other $emailOther[] = $emails['email_type'][$key] . ':' . $email; break; } } } } $post['email_home'] = implode(',', $emailHome); $post['email_work'] = implode(',', $emailWork); $post['email_other'] = implode(',', $emailOther); $adrs = jaws()->request->fetch(array('adr_type:array', 'adr:array'), 'post'); $adrHome = array(); $adrWork = array(); $adrOther = array(); $arrSearch = array("\r\n", "\n", "\r"); if (isset($adrs['adr_type'])) { foreach ($adrs['adr'] as $key => $adr) { $adr = str_replace($arrSearch, ' ', $adr); if (trim($adr) != '') { switch ($adrs['adr_type'][$key]) { case 1: //Home $adrHome[] = $adrs['adr_type'][$key] . ':' . $adr; break; case 2: //Work $adrWork[] = $adrs['adr_type'][$key] . ':' . $adr; break; case 3: //Other $adrOther[] = $adrs['adr_type'][$key] . ':' . $adr; break; } } } } $post['adr_home'] = implode('\\n', $adrHome); $post['adr_work'] = implode('\\n', $adrWork); $post['adr_other'] = implode('\\n', $adrOther); $urls = jaws()->request->fetch('url:array', 'post'); $post['url'] = implode('\\n', $urls); $result = $model->UpdateAddress($id, $post); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushResponse($result->getMessage(), 'AddressBook', RESPONSE_ERROR); Jaws_Header::Referrer(); } else { $agModel = $this->gadget->model->load('AddressBookGroup'); $agModel->DeleteGroupForAddress($id, $addressInfo['user']); if (is_array($groupIDs) && count($groupIDs) > 0) { foreach ($groupIDs as $gid) { $agModel->AddGroupToAddress($id, $gid, $user); } } $GLOBALS['app']->Session->PushResponse(_t('ADDRESSBOOK_RESULT_EDIT_ADDRESS_SAVED'), 'AddressBook'); $link = $this->gadget->urlMap('AddressBook'); Jaws_Header::Location($link); } }
/** * Update user one subscription item * * @access public * @return void */ function UpdateGadgetSubscription() { $post = jaws()->request->fetch(array('email', 'mobile', 'subscription_gadget', 'subscription_action', 'subscription_reference', 'is_subscribe'), 'post'); $sModel = $this->gadget->model->load('Subscription'); $result = $sModel->UpdateGadgetSubscription($GLOBALS['app']->Session->GetAttribute('user'), $post['email'], $post['mobile'], $post['subscription_gadget'], $post['subscription_action'], $post['subscription_reference'], $post['is_subscribe']); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushResponse($result->GetMessage(), 'Subscription.Subscription', RESPONSE_ERROR, $post); } else { $GLOBALS['app']->Session->PushResponse(_t('SUBSCRIPTION_SUBSCRIPTION_UPDATED'), 'Subscription.Subscription'); } Jaws_Header::Referrer(); }
/** * Adds a new vote to an answer of a certain poll * * @access public */ function Vote() { $post = jaws()->request->fetch(array('pid', 'answers:array'), 'post'); $model = $this->gadget->model->load('Poll'); $poll = $model->GetPoll((int) $post['pid']); if (!Jaws_Error::IsError($poll) && !empty($poll)) { $allowVote = false; switch ($poll['restriction']) { case Poll_Info::POLL_RESTRICTION_TYPE_IP: $ip = $_SERVER['REMOTE_ADDR']; $allowVote = $model->CheckAllowVoteForIP($poll['id'], $ip); break; case Poll_Info::POLL_RESTRICTION_TYPE_USER: $currentUser = $GLOBALS['app']->Session->GetAttribute('user'); $allowVote = $model->CheckAllowVoteForUser($poll['id'], $currentUser); break; case Poll_Info::POLL_RESTRICTION_TYPE_SESSION: $session = $GLOBALS['app']->Session->GetCookie('poll_' . $poll['id']); $allowVote = $model->CheckAllowVoteForUser($poll['id'], $session); break; case Poll_Info::POLL_RESTRICTION_TYPE_FREE: $allowVote = true; break; } if ($allowVote && is_array($post['answers']) && count($post['answers']) > 0) { $GLOBALS['app']->Session->SetCookie('poll_' . $poll['id'], 'voted', (int) $this->gadget->registry->fetch('cookie_period') * 24 * 60); $res = $model->AddAnswerVotes($poll['id'], $post['answers']); } if (Jaws_Error::IsError($res)) { $GLOBALS['app']->Session->PushSimpleResponse($res->getMessage(), 'Poll'); } else { $GLOBALS['app']->Session->PushSimpleResponse(_t('POLL_THANKS'), 'Poll'); } Jaws_Header::Referrer(); } }
/** * Save contact in database * * @access public */ function Send() { $post = jaws()->request->fetch(array('name', 'email', 'company', 'url', 'tel', 'fax', 'mobile', 'address', 'recipient', 'subject', 'message'), 'post'); if ($GLOBALS['app']->Session->Logged()) { $post['name'] = $GLOBALS['app']->Session->GetAttribute('nickname'); $post['email'] = $GLOBALS['app']->Session->GetAttribute('email'); $post['url'] = $GLOBALS['app']->Session->GetAttribute('url'); } if (trim($post['name']) == '' || trim($post['subject']) == '' || trim($post['message']) == '') { $GLOBALS['app']->Session->PushResponse(_t('CONTACT_INCOMPLETE_FIELDS'), 'Contact.Response', RESPONSE_ERROR); $GLOBALS['app']->Session->PushSimpleResponse($post, 'Contact.Data'); Jaws_Header::Referrer(); } $mPolicy = Jaws_Gadget::getInstance('Policy')->action->load('Captcha'); $resCheck = $mPolicy->checkCaptcha(); if (Jaws_Error::IsError($resCheck)) { $GLOBALS['app']->Session->PushResponse($resCheck->getMessage(), 'Contact.Response', RESPONSE_ERROR); $GLOBALS['app']->Session->PushSimpleResponse($post, 'Contact.Data'); Jaws_Header::Referrer(); } if ($this->gadget->registry->fetch('use_antispam') == 'true') { if (!preg_match("/^[[:alnum:]-_.]+\\@[[:alnum:]-_.]+\\.[[:alnum:]-_]+\$/", $post['email'])) { $GLOBALS['app']->Session->PushResponse(_t('CONTACT_RESULT_BAD_EMAIL_ADDRESS'), 'Contact.Response', RESPONSE_ERROR); $GLOBALS['app']->Session->PushSimpleResponse($post, 'Contact.Data'); Jaws_Header::Referrer(); } } $attachment = null; if ($this->gadget->registry->fetch('enable_attachment') == 'true' && $this->gadget->GetPermission('AllowAttachment')) { $attach = Jaws_Utils::UploadFiles($_FILES, JAWS_DATA . 'contact', '', false); if (Jaws_Error::IsError($attach)) { $GLOBALS['app']->Session->PushResponse($attach->getMessage(), 'Contact.Response', RESPONSE_ERROR); $GLOBALS['app']->Session->PushSimpleResponse($post, 'Contact.Data'); Jaws_Header::Referrer(); } if (!empty($attach)) { $attachment = $attach['attachment'][0]['host_filename']; } } $model = $this->gadget->model->load('Contacts'); $result = $model->InsertContact($post['name'], $post['email'], $post['company'], $post['url'], $post['tel'], $post['fax'], $post['mobile'], $post['address'], $post['recipient'], $post['subject'], $attachment, $post['message']); if (Jaws_Error::IsError($result)) { $res_msg = _t('CONTACT_RESULT_ERROR_DB'); $res_type = RESPONSE_ERROR; } else { $to = ''; $cid = $result; $rid = (int) $post['recipient']; if (!empty($rid)) { $model = $this->gadget->model->load('Recipients'); $recipient = $model->GetRecipient((int) $post['recipient']); if (Jaws_Error::IsError($recipient) || !isset($recipient['id'])) { $res_msg = _t('CONTACT_ERROR_RECIPIENT_DOES_NOT_EXISTS'); $res_type = RESPONSE_ERROR; } elseif ($recipient['inform_type'] == 1) { //Send To Email $to = $recipient['email']; } } $this->SendEmailToRecipient($to, $cid); $res_msg = _t('CONTACT_RESULT_SENT'); $res_type = RESPONSE_NOTICE; } $GLOBALS['app']->Session->PushResponse($res_msg, 'Contact.Response', $res_type); Jaws_Header::Referrer(); }
/** * Updates event * * @access public * @return array Response array */ function UpdateEvent() { $data = jaws()->request->fetch(array('id', 'subject', 'location', 'description', 'type', 'priority', 'reminder', 'recurrence', 'month', 'day', 'wday', 'start_date', 'stop_date', 'start_time', 'stop_time'), 'post'); if (empty($data['subject']) || empty($data['start_date'])) { $GLOBALS['app']->Session->PushResponse(_t('EVENTSCALENDAR_ERROR_INCOMPLETE_DATA'), 'Events.Response', RESPONSE_ERROR, $data); Jaws_Header::Referrer(); } // Validate event $model = $this->gadget->model->load('Event'); $id = (int) $data['id']; $user = (int) $GLOBALS['app']->Session->GetAttribute('user'); $event = $model->GetEvent($id, $user); if (Jaws_Error::IsError($event)) { $GLOBALS['app']->Session->PushResponse(_t('EVENTSCALENDAR_ERROR_RETRIEVING_DATA'), 'Events.Response', RESPONSE_ERROR); Jaws_Header::Referrer(); } // Verify owner if ($event['owner'] != $user) { $GLOBALS['app']->Session->PushResponse(_t('EVENTSCALENDAR_ERROR_NO_PERMISSION'), 'Events.Response', RESPONSE_ERROR); Jaws_Header::Referrer(); } $data['user'] = (int) $GLOBALS['app']->Session->GetAttribute('user'); if (empty($data['stop_date'])) { $data['stop_date'] = $data['start_date']; } if (empty($data['stop_time'])) { $data['stop_time'] = $data['start_time']; } $result = $model->UpdateEvent($id, $data, $event); if (Jaws_Error::IsError($result)) { $GLOBALS['app']->Session->PushResponse(_t('EVENTSCALENDAR_ERROR_EVENT_UPDATE'), 'Events.Response', RESPONSE_ERROR, $data); Jaws_Header::Referrer(); } $GLOBALS['app']->Session->PushResponse(_t('EVENTSCALENDAR_NOTICE_EVENT_UPDATED'), 'Events.Response'); Jaws_Header::Location($this->gadget->urlMap('ManageEvents')); }
/** * Delete message permanently * * @access public * @return void */ function DeleteMessage() { $this->gadget->CheckPermission('DeleteMessage'); $ids = jaws()->request->fetch('id', 'get'); $messagesSelected = jaws()->request->fetch('message_checkbox:array', 'post'); if (!empty($messagesSelected) && count($messagesSelected) > 0) { $ids = $messagesSelected; } $model = $this->gadget->model->load('Message'); $user = $GLOBALS['app']->Session->GetAttribute('user'); $res = $model->DeleteMessage($ids, $user); if (Jaws_Error::IsError($res)) { $GLOBALS['app']->Session->PushResponse($res->getMessage(), 'PrivateMessage.Message', RESPONSE_ERROR); } if ($res == true) { $GLOBALS['app']->Session->PushResponse(_t('PRIVATEMESSAGE_MESSAGE_DELETED'), 'PrivateMessage.Message', RESPONSE_NOTICE); } else { $GLOBALS['app']->Session->PushResponse(_t('PRIVATEMESSAGE_MESSAGE_NOT_DELETED'), 'PrivateMessage.Message', RESPONSE_ERROR); } if (count($messagesSelected) > 0) { Jaws_Header::Referrer(); } else { Jaws_Header::Location($this->gadget->urlMap('Messages', array('folder' => PrivateMessage_Info::PRIVATEMESSAGE_FOLDER_INBOX))); } }