Пример #1
0
 /**
  * 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();
 }
Пример #2
0
 /**
  * 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();
 }
Пример #3
0
 /**
  * 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'));
 }
Пример #4
0
 /**
  * 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();
 }
Пример #5
0
 /**
  * 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);
     }
 }
Пример #6
0
 /**
  * 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();
 }
Пример #7
0
 /**
  * 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'));
 }
Пример #8
0
 /**
  * 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']);
 }
Пример #9
0
 /**
  * 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();
 }
Пример #10
0
 /**
  * Logout user
  *
  * @access  public
  * @return  void
  */
 function Logout()
 {
     $GLOBALS['app']->Session->Logout();
     Jaws_Header::Referrer();
 }
Пример #11
0
 /**
  * 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();
     }
 }
Пример #12
0
 /**
  * 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);
     }
 }
Пример #13
0
 /**
  * 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();
 }
Пример #14
0
Файл: Poll.php Проект: uda/jaws
 /**
  * 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();
     }
 }
Пример #15
0
 /**
  * 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();
 }
Пример #16
0
 /**
  * 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'));
 }
Пример #17
0
 /**
  * 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)));
     }
 }