function index() { if (!$this->safety->allowByControllerName(__CLASS__)) { return errorForbidden(); } $this->load->view('pageHtml', array('view' => 'process', 'meta' => array('title' => lang('Process')))); }
function index() { if (!$this->safety->allowByControllerName('about')) { return errorForbidden(); } $this->load->view('pageHtml', array('view' => 'about', 'meta' => array('title' => lang('About of cloneReader')), 'code' => true)); }
function delete() { if (!$this->safety->allowByControllerName(__CLASS__ . '/edit')) { return errorForbidden(); } return loadViewAjax($this->News_Model->delete($this->input->post('newId'))); }
function register() { if (!$this->safety->allowByControllerName('register')) { return errorForbidden(); } $userId = $this->session->userdata('userId'); $form = array('frmName' => 'frmRegister', 'buttons' => array('<button type="submit" class="btn btn-primary"><i class="fa fa-sign-in"></i> ' . lang('Register') . '</button>'), 'fields' => array('userEmail' => array('type' => 'text', 'label' => lang('Email')), 'userPassword' => array('type' => 'password', 'label' => lang('Password')), 'userFirstName' => array('type' => 'text', 'label' => lang('First name')), 'userLastName' => array('type' => 'text', 'label' => lang('Last name')), 'countryId' => array('type' => 'dropdown', 'label' => lang('Country'), 'appendNullOption' => true))); $form['rules'] = array(array('field' => 'userEmail', 'label' => $form['fields']['userEmail']['label'], 'rules' => 'trim|required|valid_email|callback__validate_exitsEmail'), array('field' => 'userFirstName', 'label' => $form['fields']['userFirstName']['label'], 'rules' => 'trim|required'), array('field' => 'userLastName', 'label' => $form['fields']['userLastName']['label'], 'rules' => 'trim|required')); $this->form_validation->set_rules($form['rules']); if ($this->input->post() != false) { $code = $this->form_validation->run(); if ($code == true) { $this->Users_Model->register($userId, $this->input->post()); $userEmail = $this->input->post('userEmail'); if ($this->safety->login($this->input->post('userEmail'), $this->input->post('userPassword')) != true) { return loadViewAjax(false); } $userId = $this->session->userdata('userId'); $confirmEmailKey = random_string('alnum', 20); $this->Users_Model->updateConfirmEmailKey($userId, $userEmail, $confirmEmailKey); $this->Tasks_Model->addTask('sendEmailWelcome', array('userId' => $userId)); $this->load->model('Entries_Model'); $this->Entries_Model->addDefaultFeeds(); return loadViewAjax($code, array('goToUrl' => base_url(), 'skipAppLink' => true)); } return loadViewAjax($code); } $form['fields']['countryId']['source'] = $this->Countries_Model->selectToDropdown(); $this->load->view('pageHtml', array('view' => 'includes/crForm', 'meta' => array('title' => lang('Signup')), 'form' => populateCrForm($form, array()))); }
function deletePicture($entityTypeId, $fileId) { $config = getEntityGalleryConfig($entityTypeId); if (!$this->safety->allowByControllerName($config['controller'])) { return errorForbidden(); } if ($this->Files_Model->hasFileIdInEntityTypeId($entityTypeId, $fileId) == false) { return errorForbidden(); } $this->Files_Model->deleteEntityFile($entityTypeId, $fileId); return loadViewAjax(true, array()); }
function listing() { if (!$this->safety->allowByControllerName(__METHOD__)) { return errorForbidden(); } $page = (int) $this->input->get('page'); if ($page == 0) { $page = 1; } $this->load->model('Tasks_Status_Model'); $filters = array('search' => $this->input->get('search'), 'taskRunning' => $this->input->get('taskRunning') === false ? null : $this->input->get('taskRunning')); $orders = array(array('orderBy' => $this->input->get('orderBy'), 'orderDir' => $this->input->get('orderDir'))); $query = $this->Tasks_Model->selectToList($page, config_item('pageSize'), $filters, $orders); $this->load->view('pageHtml', array('view' => 'includes/crList', 'meta' => array('title' => lang('Edit tasks')), 'list' => array('urlList' => strtolower(__CLASS__) . '/listing', 'readOnly' => true, 'columns' => array('taskMethod' => lang('Method'), 'taskParams' => array('value' => lang('Params'), 'class' => 'dotdotdot'), 'statusTaskName' => lang('Running'), 'langName' => lang('Language'), 'taskRetries' => lang('Retries'), 'taskSchedule' => array('value' => lang('Schedule date'), 'class' => 'datetime')), 'data' => $query['data'], 'foundRows' => $query['foundRows'], 'showId' => true, 'filters' => array('taskRunning' => array('type' => 'dropdown', 'label' => lang('Status'), 'value' => $this->input->get('taskRunning'), 'source' => $this->Tasks_Status_Model->selectToDropdown(), 'appendNullOption' => true)), 'sort' => array('taskId' => lang('#'), 'taskMethod' => lang('Method'), 'taskSchedule' => lang('Schedule date'))))); }
function saveEntitySef($entityTypeId, $entityId) { $entityConfig = getEntityConfig($entityTypeId); $controller = sprintf('%s/edit', $entityConfig['entityTypeName']); // TODO: hacer un config if (!$this->safety->allowByControllerName($controller)) { return errorForbidden(); } $entitySef = $this->Commond_Model->saveEntitySef($entityTypeId, $entityId); if ($entitySef == null) { return error404(); } $entityUrl = getEntityUrl($entityTypeId, $entitySef); return loadViewAjax(true, array('entityUrl' => $entityUrl)); }
function friends() { if ($this->session->userdata('userId') == USER_ANONYMOUS) { return errorForbidden(); } // FIXME: chapuza; hacer que los fields typeahead permitan agregar datos y validarlos // Si el item que ingreso el usuario es un mail valido, lo apendeo a los resultados del autocomplete para que pueda seleccionarlo! $this->load->helper('email'); $this->load->model('Users_Model'); $query = $this->input->get('query'); $result = $this->Users_Model->searchFriends($query, $this->session->userdata('userId')); if (valid_email($query) == true) { $result[] = array('id' => $query, 'text' => $query); } return $this->load->view('json', array('result' => $result)); }
function keyboardShortcut() { if (!$this->safety->allowByControllerName(__METHOD__)) { return errorForbidden(); } $aKeys = array('j' => 'Next item', 'k' => 'Previous item', 'u' => 'Maximize entries', 's' => 'Mark item as star', 'm' => 'Mark item as unread', 'v' => 'View original', 'r' => 'Reload', 'a' => 'Add feed', 'e' => 'Send entry by email', '1' => 'Detail view', '2' => 'List view'); $html = '<ul class="list-group">'; foreach ($aKeys as $key => $value) { $html .= '<li class="list-group-item"> <span class="label label-success">' . $key . '</span> ' . lang($value) . ' </li> '; } $html .= '</ul>'; $form = array('frmName' => 'frmKeyboardShortcut', 'title' => lang('Keyboard shortcut'), 'icon' => 'fa fa-keyboard-o', 'buttons' => array(), 'fields' => array('keyboardShortcut' => array('type' => 'html', 'value' => $html))); if ($this->input->is_ajax_request()) { return $this->load->view('includes/crJsonForm', array('form' => $form)); } $this->load->view('pageHtml', array('view' => 'includes/crForm', 'form' => $form, 'title' => lang('Keyboard shortcut'), 'code' => true)); }
function logs() { if (!$this->safety->allowByControllerName(__METHOD__)) { return errorForbidden(); } $page = (int) $this->input->get('page'); if ($page == 0) { $page = 1; } $user = null; $userId = $this->input->get('userId'); if ($userId != null) { $user = $this->Users_Model->get($userId); } $filters = array('search' => $this->input->get('search'), 'userId' => $userId); $query = $this->Users_Model->selectUsersLogsToList($page, config_item('pageSize'), $filters, array(array('orderBy' => $this->input->get('orderBy'), 'orderDir' => $this->input->get('orderDir')))); $this->load->view('pageHtml', array('view' => 'includes/crList', 'meta' => array('title' => lang('User logs')), 'list' => array('urlList' => 'users/logs', 'readOnly' => true, 'columns' => array('userEmail' => lang('Email'), 'userFullName' => lang('Name'), 'userLogDate' => array('class' => 'date', 'value' => lang('Date'))), 'data' => $query['data'], 'foundRows' => $query['foundRows'], 'showId' => true, 'filters' => array('userId' => array('type' => 'typeahead', 'label' => lang('User'), 'source' => base_url('search/users/'), 'value' => array('id' => element('userId', $user), 'text' => element('userFirstName', $user) . ' ' . element('userLastName', $user)), 'multiple' => false, 'placeholder' => lang('User'))), 'sort' => array('userId' => '#', 'userLogDate' => lang('Date'))))); }
function doImportStarred() { if (!$this->safety->allowByControllerName('import/starred')) { return errorForbidden(); } set_time_limit(0); $this->load->model('Entries_Model'); $userId = $this->session->userdata('userId'); $config = array('upload_path' => './application/cache', 'allowed_types' => 'json', 'max_size' => 1024 * 8, 'encrypt_name' => false, 'is_image' => false, 'overwrite' => true, 'file_name' => 'import_starred_' . $userId . '.json'); $this->load->library('upload', $config); if (!$this->upload->do_upload()) { return loadViewAjax(false, $this->upload->display_errors()); } $this->db->trans_start(); $fileName = './application/cache/import_starred_' . $userId . '.json'; $json = (array) json_decode(file_get_contents($fileName), true); foreach ($json['items'] as $data) { $entryContent = ''; if (element('summary', $data) != null) { $entryContent = $data['summary']['content']; } else { if (element('content', $data) != null) { $entryContent = $data['content']['content']; } } $entry = array('entryTitle' => element('title', $data, '(title unknown)'), 'entryUrl' => (string) $data['alternate'][0]['href'], 'entryAuthor' => element('author', $data, null), 'entryDate' => date('Y-m-d H:i:s', $data['published']), 'entryContent' => (string) $entryContent); $feed = array('feedName' => element('title', $data['origin']), 'feedUrl' => substr($data['origin']['streamId'], 5), 'feedLink' => $data['origin']['htmlUrl'], 'feedName' => element('title', $data['origin']), 'feedSuggest' => true); $entry['feedId'] = $this->Entries_Model->addFeed($userId, $feed); $entry['entryId'] = $this->Entries_Model->saveEntry($entry); if ($entry['entryId'] == null) { $entry['entryId'] = $this->Entries_Model->getEntryIdByFeedIdAndEntryUrl($entry['feedId'], $entry['entryUrl']); } $this->Entries_Model->saveUserEntries($userId, $entry['feedId'], $entry['entryId']); $this->Entries_Model->saveTmpUsersEntries($userId, array(array('userId' => $userId, 'entryId' => $entry['entryId'], 'entryStarred' => true, 'entryRead' => true))); } $this->db->trans_complete(); $this->Entries_Model->pushTmpUserEntries($userId); return loadViewAjax(true, array('msg' => lang('The import was successful'), 'goToUrl' => base_url(''), 'skipAppLink' => true)); }
function feedsDelete() { if (!$this->safety->allowByControllerName('tools/feeds')) { return errorForbidden(); } $aFeedId = (array) json_decode($this->input->post('aDelete')); foreach ($aFeedId as $feedId) { $this->Entries_Model->unsubscribeFeed($feedId, (int) $this->session->userdata('userId')); } return loadViewAjax(true); }
function doDownloadOPML() { if (!$this->safety->allowByControllerName('profile/edit')) { return errorForbidden(); } $this->load->model('Feeds_Model'); $this->load->helper('download'); $userId = $this->session->userdata('userId'); $data = $this->Users_Model->get($userId); $query = $this->Feeds_Model->selectFeedsOPML($userId); $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><opml version="1.0" />'); $xml->xmlEndoding = 'UTF-8'; $nHead = $xml->addChild('head'); $nTitle = $nHead->addChild('title', 'cReader feeds of ' . element('userFirstName', $data) . ' ' . element('userLastName', $data)); $nBody = $xml->addChild('body'); $tagId = null; foreach ($query as $row) { if ($row['tagId'] != null) { if ($tagId != $row['tagId']) { $nTag = $nBody->addChild('outline'); $nTag->addAttribute('text', $row['tagName']); $nTag->addAttribute('title', $row['tagName']); } $tagId = $row['tagId']; $nParent = $nTag; } else { $nParent = $nBody; } $nFeed = $nParent->addChild('outline'); $nFeed->addAttribute('type', 'rss'); $nFeed->addAttribute('text', $row['feedName']); $nFeed->addAttribute('title', $row['feedName']); $nFeed->addAttribute('xmlUrl', $row['feedUrl']); $nFeed->addAttribute('htmlUrl', $row['feedLink']); } force_download('cReader.opml', $xml->saveXML()); }
function shareByEmail($entryId) { if ($this->session->userdata('userId') == USER_ANONYMOUS) { return errorForbidden(); } $data = $this->Entries_Model->get($entryId, false); if (empty($data)) { return error404(); } $form = array('frmName' => 'frmShareByEmail', 'buttons' => array('<button type="submit" class="btn btn-primary"><i class="fa fa-envelope "></i> ' . lang('Send') . ' </button>'), 'icon' => 'fa fa-envelope fa-lg text-primary', 'modalHideOnSubmit' => true, 'title' => sprintf(lang('Send by email %s'), ' "' . $data['entryTitle'] . '" '), 'fields' => array('entryId' => array('type' => 'hidden', 'value' => $entryId), 'userFriendEmail' => array('type' => 'typeahead', 'label' => lang('For'), 'source' => base_url('search/friends/'), 'value' => array('id' => null, 'text' => null)), 'shareByEmailComment' => array('type' => 'textarea', 'label' => lang('Comment')), 'sendMeCopy' => array('type' => 'checkbox', 'label' => lang('Send me a copy'), 'checked' => true))); $form['rules'] = array(array('field' => 'userFriendEmail', 'label' => $form['fields']['userFriendEmail']['label'], 'rules' => 'trim|required|valid_email')); $this->form_validation->set_rules($form['rules']); if ($this->input->post() != false) { return $this->_saveShareByEmail(); } $this->load->view('includes/crJsonForm', array('form' => $form)); }
function deleteOldEntriesByFeedId($feedId) { if (!$this->safety->allowByControllerName('feeds/edit')) { return errorForbidden(); } return loadViewAjax(true, 'affected rows: ' . $this->Feeds_Model->deleteOldEntriesByFeedId($feedId)); }
function deleteDoc($testId) { if (!$this->safety->allowByControllerName(__CLASS__ . '/edit')) { return errorForbidden(); } $this->load->model('Files_Model'); $data = $this->Testing_Model->get($testId); if (!empty($data)) { $this->Files_Model->deleteFile(config_item('testDoc'), $data['testDocFileId']); } return loadViewAjax(true); }
function _oauth2($providerName) { if (!$this->safety->allowByControllerName('login')) { return errorForbidden(); } $this->load->spark('oauth2/0.4.0/'); $this->config->load('oauth2'); $config = $this->config->item('oauth2'); $config = $config[$providerName]; $provider = $this->oauth2->provider($providerName, array('id' => $config['id'], 'secret' => $config['secret'], 'scope' => $config['scope'])); if (!$this->input->get('code')) { $url = $provider->authorize(); redirect($url); } try { $token = $provider->access($_GET['code']); $user = $provider->get_user_info($token); $user = $this->Users_Model->loginRemote($user['email'], $user['last_name'], $user['first_name'], $user['location'], $user['birthday'], $providerName, $user['uid']); if ($user == null) { return errorForbidden(); } $this->session->set_userdata(array('userId' => $user['userId'], 'langId' => $user['langId'], 'groups' => sourceToArray($this->Users_Model->getGroups($user['userId']), 'groupId'))); $this->Users_Model->updateUserLastAccess(); // Si el usuario es nuevo y tiene email le enviamos el email de bienvenida if (element('isNewUser', $user) == true && $user['userEmail'] != null) { $this->load->model(array('Tasks_Model', 'Entries_Model')); $this->Tasks_Model->addTask('sendEmailWelcome', array('userId' => $user['userId'])); $this->Entries_Model->addDefaultFeeds(); } $onLoginUrl = $this->session->userdata('onLoginUrl'); if ($onLoginUrl == null) { $onLoginUrl = ''; } redirect($onLoginUrl); } catch (OAuth2_Exception $e) { redirect('login'); } return errorForbidden(); }