Пример #1
0
 public static function isScriptInstalled()
 {
     if (!file_exists(IA_HOME . 'includes' . IA_DS . self::CONFIGURATION_FILE)) {
         return false;
     }
     self::loadCoreClass('users', 'core');
     return iaCore::instance()->iaDb->one_bind(iaDb::STMT_COUNT_ROWS, '`usergroup_id` = :group AND `date_logged` IS NOT NULL', array('group' => iaUsers::MEMBERSHIP_ADMINISTRATOR), iaUsers::getTable()) > 0;
 }
Пример #2
0
 protected function _gridQuery($columns, $where, $order, $start, $limit)
 {
     $sql = 'SELECT u.*, IF(u.`id` = 1, 0, u.`id`) `permissions`, u.`id` `config`, IF(u.`system` = 1, 0, 1) `delete` ' . ', IF(u.`id` = 1, 1, p.`access`) `admin` ' . ',(SELECT GROUP_CONCAT(m.`fullname` SEPARATOR \', \') FROM `' . iaUsers::getTable(true) . '` m WHERE m.`usergroup_id` = u.`id` GROUP BY m.`usergroup_id` LIMIT 10) `members` ' . ',(SELECT COUNT(m.`id`) FROM `' . iaUsers::getTable(true) . '` m WHERE m.`usergroup_id` = u.`id` GROUP BY m.`usergroup_id`) `count`' . 'FROM `' . $this->_iaDb->prefix . $this->getTable() . '` u ' . 'LEFT JOIN `' . $this->_iaDb->prefix . 'acl_privileges` p ' . "ON (p.`type` = 'group' " . 'AND p.`type_id` = u.`id` ' . "AND `object` = 'admin_access' " . "AND `action` = 'read' " . ')' . $order . ' ' . 'LIMIT ' . $start . ', ' . $limit;
     $usergroups = $this->_iaDb->getAll($sql);
     foreach ($usergroups as &$usergroup) {
         $usergroup['title'] = iaLanguage::get('usergroup_' . $usergroup['name']);
     }
     return $usergroups;
 }
Пример #3
0
 protected function _gridQuery($columns, $where, $order, $start, $limit)
 {
     foreach (array('amount', 'gateway', 'status') as $joinedColumnName) {
         if (false !== stripos($order, $joinedColumnName)) {
             $order = str_replace(' i.`', ' t.`', $order);
             break;
         }
     }
     $sql = 'SELECT SQL_CALC_FOUND_ROWS ' . 'i.`id`, i.`date_created`, i.`fullname`, ' . 't.`plan_id`, t.`operation`, ' . 't.`status`, CONCAT(t.`amount`, " ", t.`currency`) `amount`, t.`currency`, t.`gateway`, ' . "1 `pdf`, 1 `update`, IF(t.`status` != 'passed', 1, 0) `delete` " . 'FROM `:prefix:table_invoices` i ' . 'LEFT JOIN `:prefix:table_transactions` t ON (t.`id` = i.`transaction_id`) ' . 'LEFT JOIN `:prefix:table_members` m ON (m.`id` = t.`member_id`) ' . ($where ? 'WHERE ' . $where . ' ' : '') . $order . ' ' . 'LIMIT :start, :limit';
     $sql = iaDb::printf($sql, array('prefix' => $this->_iaDb->prefix, 'table_invoices' => self::getTable(), 'table_members' => iaUsers::getTable(), 'table_transactions' => 'payment_transactions', 'start' => $start, 'limit' => $limit));
     return $this->_iaDb->getAll($sql);
 }
 /**
  * Update transaction record
  *
  * @param array $transactionData transaction data
  * @param int $id transaction id
  *
  * @return bool
  */
 public function update(array $transactionData, $id)
 {
     $result = false;
     if ($transaction = $this->getById($id)) {
         $result = (bool) $this->iaDb->update($transactionData, iaDb::convertIds($id), array('date' => iaDb::FUNCTION_NOW), self::getTable());
         if ($result && !empty($transactionData['status'])) {
             $operation = empty($transactionData['item']) ? $transaction['item'] : $transactionData['item'];
             if (self::TRANSACTION_MEMBER_BALANCE == $operation) {
                 $itemId = empty($transactionData['item_id']) ? $transaction['item_id'] : $transactionData['item_id'];
                 $amount = empty($transactionData['amount']) ? $transaction['amount'] : $transactionData['amount'];
                 if (self::PASSED == $transactionData['status'] && self::PASSED != $transaction['status']) {
                     $result = (bool) $this->iaDb->update(null, iaDb::convertIds($itemId), array('funds' => '`funds` + ' . $amount), iaUsers::getTable());
                 } elseif (self::PASSED != $transactionData['status'] && self::PASSED == $transaction['status']) {
                     $result = (bool) $this->iaDb->update(null, iaDb::convertIds($itemId), array('funds' => '`funds` - ' . $amount), iaUsers::getTable());
                 }
             }
         }
     }
     return $result;
 }
Пример #5
0
 public function getById($id)
 {
     $sql = 'SELECT b.`id`, b.`title`, b.`date_added`, b.`body`, b.`alias`, b.`image`, m.`fullname`, b.`member_id` ' . 'FROM `:prefix:table_blog_entries` b ' . 'LEFT JOIN `:prefix:table_members` m ON (b.`member_id` = m.`id`) ' . "WHERE b.`id` = :id AND b.`status` = ':status'";
     $sql = iaDb::printf($sql, array('prefix' => $this->iaDb->prefix, 'table_blog_entries' => self::getTable(), 'table_members' => iaUsers::getTable(), 'id' => (int) $id, 'status' => iaCore::STATUS_ACTIVE));
     return $this->iaDb->getRow($sql);
 }
Пример #6
0
 protected function _jsonAction()
 {
     $output = array('error' => false, 'message' => array());
     $transaction = array('member_id' => (int) $_POST['member'], 'plan_id' => (int) $_POST['plan'], 'email' => $_POST['email'], 'item_id' => (int) $_POST['itemid'], 'gateway' => (string) $_POST['gateway'], 'sec_key' => uniqid('t'), 'reference_id' => empty($_POST['reference_id']) ? date('mdyHis') : $_POST['reference_id'], 'amount' => (double) $_POST['amount'], 'currency' => $this->_iaCore->get('currency'), 'date' => $_POST['date'] . ' ' . $_POST['time']);
     if ($transaction['plan_id']) {
         $this->_iaCore->factory('plan');
         if ($plan = $this->_iaDb->row(iaDb::ALL_COLUMNS_SELECTION, iaDb::convertIds($transaction['plan_id']), iaPlan::getTable())) {
             $transaction['item'] = $plan['item'];
             $transaction['operation'] = iaLanguage::get('plan_title_' . $plan['id']);
         } else {
             $output['error'] = true;
             $output['message'][] = iaLanguage::get('error_plan_not_exists');
         }
     } else {
         $transaction['item'] = iaTransaction::TRANSACTION_MEMBER_BALANCE;
         $transaction['operation'] = iaLanguage::get('funds');
     }
     if (isset($_POST['username']) && $_POST['username']) {
         if ($memberId = $this->_iaDb->one_bind(iaDb::ID_COLUMN_SELECTION, '`username` = :user', array('user' => $_POST['username']), iaUsers::getTable())) {
             $transaction['member_id'] = $memberId;
         } else {
             $output['error'] = true;
             $output['message'][] = iaLanguage::get('incorrect_username');
         }
     }
     if ($transaction['email'] && !iaValidate::isEmail($transaction['email'])) {
         $output['error'] = true;
         $output['message'][] = iaLanguage::get('error_email_incorrect');
     }
     if (isset($transaction['item']) && in_array($transaction['item'], array(iaTransaction::TRANSACTION_MEMBER_BALANCE, 'members'))) {
         $transaction['item_id'] = $transaction['member_id'];
     }
     if (!$output['error']) {
         $output['success'] = (bool) $this->_iaDb->insert($transaction);
         $output['message'] = $output['success'] ? iaLanguage::get('transaction_added') : iaLanguage::get('invalid_parameters');
     }
     return $output;
 }
Пример #7
0
 protected function _indexPage(&$iaView)
 {
     $iaView->display('index');
     $iaCore =& $this->_iaCore;
     $iaDb =& $this->_iaDb;
     if (isset($_GET['reset']) || isset($_GET['save'])) {
         $data = isset($_GET['list']) ? $_GET['list'] : '';
         if ($iaDb->update(array('admin_columns' => $data), iaDb::convertIds(iaUsers::getIdentity()->id), null, iaUsers::getTable())) {
             iaUsers::reloadIdentity();
         }
         $iaView->setMessages(iaLanguage::get('saved'), iaView::SUCCESS);
         iaUtil::go_to(IA_SELF);
     }
     $disabledWidgets = iaUsers::getIdentity()->admin_columns;
     $disabledWidgets = empty($disabledWidgets) ? array() : explode(',', trim($disabledWidgets, ','));
     $iaView->assign('disabled_widgets', $disabledWidgets);
     $customizationMode = isset($_GET['customize']) && empty($_GET['customize']);
     if ($customizationMode) {
         $iaView->setMessages(iaLanguage::get('customization_mode_alert'));
         $iaView->assign('customization_mode', true);
     }
     // populate statistics
     $iaItem = $iaCore->factory('item');
     $itemsList = $iaItem->getPackageItems();
     $validSizes = array('small', 'medium', 'package');
     $iaCore->startHook('adminDashboardStatistics', array('items' => &$itemsList));
     natcasesort($itemsList);
     $statistics = array();
     foreach ($validSizes as $size) {
         $statistics[$size] = array();
     }
     foreach ($itemsList as $itemName => $pluginType) {
         $itemName = substr($itemName, 0, -1);
         switch ($pluginType) {
             case 'core':
                 $classInstance = $iaCore->factory('member' == $itemName ? 'users' : $itemName);
                 break;
             case 'plugin':
                 $array = explode(':', $itemName);
                 $itemName = isset($array[1]) ? $array[1] : $itemName;
                 $classInstance = $iaCore->factoryPlugin($array[0], iaCore::ADMIN, isset($array[1]) ? $array[1] : null);
                 break;
             default:
                 $classInstance = $iaCore->factoryPackage($itemName, $pluginType, iaCore::ADMIN);
         }
         if (!$customizationMode && in_array($itemName, $disabledWidgets)) {
             continue;
         }
         if ($classInstance) {
             if (method_exists($classInstance, self::STATISTICS_GETTER_METHOD)) {
                 if ($classInstance->dashboardStatistics) {
                     $data = $classInstance->{self::STATISTICS_GETTER_METHOD}();
                     isset($data['icon']) || ($data['icon'] = $itemName);
                     isset($data['caption']) || ($data['caption'] = $itemName);
                     $data['caption'] = iaLanguage::get($data['caption'], $data['caption']);
                     $widgetFormat = isset($data['_format']) && in_array($data['_format'], $validSizes) ? $data['_format'] : $validSizes[0];
                     $statistics[$widgetFormat][$itemName] = $data;
                 }
             }
         }
     }
     $iaView->assign('statistics', $statistics);
     //
     if (($customizationMode || !in_array('changelog', $disabledWidgets)) && $iaCore->get('display_changelog') && is_file(IA_HOME . 'changelog.txt')) {
         $index = 0;
         $log = array();
         $titles = array();
         $lines = file(IA_HOME . 'changelog.txt');
         foreach ($lines as $line_num => $line) {
             $line = trim($line);
             if ($line) {
                 if ($line[0] == '>') {
                     $index++;
                     $log[$index] = array('title' => trim($line, '<> '), 'added' => '', 'modified' => '', 'bugfixes' => '', 'other' => '');
                     $titles[trim($line, '<> ')] = $index;
                 } elseif ($index > 0) {
                     switch ($line[0]) {
                         case '+':
                             $class = 'added';
                             break;
                         case '-':
                             $class = 'bugfixes';
                             break;
                         case '*':
                             $class = 'modified';
                             break;
                         default:
                             $class = 'other';
                     }
                     $issue = preg_replace('/#(\\d+)/', '<a href="http://dev.subrion.org/issues/$1" target="_blank">#$1</a>', ltrim($line, '+-* '));
                     $log[$index][$class] .= '<li>' . $issue . '</li>';
                 }
             }
         }
         unset($log[0]);
         ksort($titles);
         $titles = array_reverse($titles);
         $iaView->assign('changelog_titles', $titles);
         $iaView->assign('changelog', $log);
     }
     // twitter widget
     if ($customizationMode || !in_array('twitter', $disabledWidgets)) {
         $data = iaUtil::getPageContent('http://tools.intelliants.com/timeline/');
         $iaView->assign('timeline', iaUtil::jsonDecode($data));
     }
     if ($customizationMode || !in_array('recent-activity', $disabledWidgets)) {
         $data = $iaCore->factory('log')->get();
         $iaView->assign('activity_log', $data);
     }
     if ($customizationMode || !in_array('website-visits', $disabledWidgets)) {
         $data = $iaCore->factory('users')->getVisitorsInfo();
         $iaView->assign('online_members', $data);
     }
     if ($iaCore->get('check_for_updates')) {
         $this->_checkForUpdates();
     }
 }
Пример #8
0
 if (IN_USER && $_SESSION['user']['id'] == $lyric['member_id']) {
     $actionUrls = array(iaCore::ACTION_EDIT => $iaLyric->url(iaCore::ACTION_EDIT, $lyric));
     $iaView->assign('tools', $actionUrls);
     $iaItem->setItemTools(array('title' => _t('edit_lyric'), 'url' => $actionUrls[iaCore::ACTION_EDIT]));
     /*
     		$iaCore->setItemTools(array(
     			'title' => _t('delete_listing'),
     			'url' => $actionUrls[iaCore::ACTION_DELETE],
     			'id' => 'remove_listing" onclick="return confirm(\''._t('do_you_really_want_to_delete_listing').'\')"',
     			'js' => ''
     		));
     */
 }
 // get account info
 if ($lyric['member_id'] > 0) {
     $author = $iaDb->row('*', "`id`='{$lyric['member_id']}'", iaUsers::getTable());
     $iaView->assign('author', $author);
 }
 // get artist information
 $iaArtist = $iaCore->factoryPackage('artist', IA_CURRENT_PACKAGE);
 $artist = $iaArtist->getArtist($lyric['id_artist']);
 $iaView->assign('artist', $artist);
 // get album information
 $iaAlbum = $iaCore->factoryPackage('album', IA_CURRENT_PACKAGE);
 $album = $iaAlbum->getAlbum($lyric['id_album']);
 $iaView->assign('album', $album);
 // count views
 $iaLyric->incrementViewsCounter($lyric['id']);
 // breadcrumb formation
 iaBreadcrumb::add(_t('artists'), 'artists/');
 iaBreadcrumb::add($artist['title'], $iaCore->iaSmarty->ia_url(array('type' => 'url', 'item' => $iaArtist->getItemName(), 'data' => $artist)));
Пример #9
0
 private function _listMembers()
 {
     $sql = 'SELECT m.`id`, m.`fullname`, g.`name` `usergroup`, IF(m.`usergroup_id` = 1, 1, p.`access`) `admin_access` ' . 'FROM `:prefix:table_members` m ' . 'LEFT JOIN `:prefix:table_groups` g ON (m.`usergroup_id` = g.`id`) ' . "LEFT JOIN `:prefix:table_privileges` p ON (p.`type_id` = m.`id` AND p.`type` = 'user' AND p.`object` = 'admin_access')" . 'WHERE m.`id` IN (' . "SELECT DISTINCT `type_id` FROM `:prefix:table_privileges` WHERE `type` = 'user'" . ')';
     $sql = iaDb::printf($sql, array('prefix' => $this->_iaDb->prefix, 'table_members' => iaUsers::getTable(), 'table_groups' => iaUsers::getUsergroupsTable(), 'table_privileges' => 'acl_privileges'));
     return $this->_iaDb->getAll($sql);
 }
Пример #10
0
             $itemData['password'] = '';
         }
     } else {
         iaField::keepValues($itemData, $fields);
         $iaView->setMessages($messages);
     }
     if (!$error) {
         $memberId = $iaUsers->register($itemData);
         if ($memberId) {
             $iaCore->factory('log')->write(iaLog::ACTION_CREATE, array('item' => 'member', 'name' => $itemData['fullname'], 'id' => $memberId, 'type' => iaCore::FRONT));
         }
         // process sponsored plan
         if ($memberId && isset($_POST['plan_id']) && is_numeric($_POST['plan_id'])) {
             $plan = $iaPlan->getById($_POST['plan_id']);
             $usergroup = $plan['usergroup'] ? $plan['usergroup'] : iaUsers::MEMBERSHIP_REGULAR;
             $iaDb->update(array('id' => $memberId, 'usergroup_id' => $usergroup), 0, 0, iaUsers::getTable());
             if ($plan['cost'] > 0) {
                 $itemData['id'] = $memberId;
                 $itemData['member_id'] = $memberId;
                 if ($url = $iaPlan->prePayment($iaUsers->getItemName(), $itemData, $plan['id'])) {
                     iaUtil::redirect(iaLanguage::get('thanks'), iaLanguage::get('member_created'), $url);
                 }
             }
         }
     }
 } elseif ('register_confirm' == $iaView->name()) {
     if (!isset($_GET['email']) || !isset($_GET['key'])) {
         return iaView::accessDenied();
     }
     $error = true;
     if ($iaUsers->confirmation($_GET['email'], $_GET['key'])) {
Пример #11
0
 private function _resetPage(&$iaView)
 {
     if (isset($_POST['reset'])) {
         if ($options = iaUtil::checkPostParam('options', array())) {
             if (in_array(iaUsers::getItemName(), $options)) {
                 $iaUsers = $this->_iaCore->factory('users');
                 $currentMember = $this->_iaDb->row(iaDb::ALL_COLUMNS_SELECTION, iaDb::convertIds(iaUsers::getIdentity()->id), iaUsers::getTable());
                 $this->getHelper()->truncate(iaUsers::getTable());
                 $this->_iaDb->insert($currentMember, null, iaUsers::getTable());
                 $options = array_diff($options, array($iaUsers->getItemName()));
             }
             foreach ($options as $option) {
                 $this->_iaCore->startHook('phpDbControlBeforeReset', array('option' => $option));
             }
             $this->addMessage('reset_success');
         } else {
             $this->_error = true;
             $this->addMessage('reset_choose_table');
         }
     } else {
         $iaView->setMessages(iaLanguage::get('reset_backup_alert'), iaView::ALERT);
     }
     $resetOptions = array('members' => iaLanguage::get('reset') . ' ' . iaLanguage::get('members'));
     $this->_iaCore->startHook('phpAdminDatabaseBeforeAll', array('reset_options' => &$resetOptions));
     $iaView->assign('options', $resetOptions);
 }
Пример #12
0
     if (empty($item)) {
         iaView::errorPage(iaView::ERROR_NOT_FOUND);
     }
 }
 $fields = iaField::getAllFields(true, '', 'albums');
 if (isset($_POST['save'])) {
     $error = false;
     $errorFields = array();
     $messages = array();
     iaCore::util();
     if ($fields) {
         list($data, $error, $messages, $errorFields) = iaField::parsePost($fields, $item, true);
     }
     // validate account
     if (isset($_POST['account']) && !empty($_POST['account'])) {
         $member_id = $iaDb->one('id', "`username` = '{$_POST['account']}' ", iaUsers::getTable());
         if (!$member_id) {
             $error = true;
             $messages[] = iaLanguage::get('album_incorrect_account');
         } else {
             $data['member_id'] = $member_id;
         }
     } else {
         $data['member_id'] = iaUsers::getIdentity()->id;
     }
     if (!defined('IA_NOUTF')) {
         iaUtf8::loadUTF8Core();
         iaUtf8::loadUTF8Util('ascii', 'validation', 'bad', 'utf8_to_ascii');
     }
     // validate title_alias
     $data['title_alias'] = !empty($_POST['title_alias']) ? $_POST['title_alias'] : $_POST['title'];
Пример #13
0
 public function parsePost(array $fields, $previousValues = null)
 {
     $iaCore =& $this->iaCore;
     $error = false;
     $messages = array();
     $invalidFields = array();
     $item = array();
     $data =& $_POST;
     // access to the data source by link
     if (iaCore::ACCESS_ADMIN == $this->iaCore->getAccessType()) {
         if (isset($data['sponsored'])) {
             $item['sponsored'] = (int) $data['sponsored'];
             $item['sponsored_plan_id'] = $item['sponsored'] ? (int) $data['plan_id'] : 0;
             $item['sponsored_start'] = $item['sponsored'] ? date(iaDb::DATETIME_SHORT_FORMAT) : null;
             $item['sponsored_end'] = $item['sponsored'] ? $data['sponsored_end'] : null;
         }
         if (isset($data['featured'])) {
             $item['featured'] = (int) $data['featured'];
             if ($item['featured']) {
                 if (isset($data['featured_end']) && $data['featured_end']) {
                     $item['featured_start'] = date(iaDb::DATETIME_SHORT_FORMAT);
                     $item['featured_end'] = iaSanitize::html($data['featured_end']);
                 } else {
                     $error = true;
                     $messages[] = iaLanguage::get('featured_status_finished_date_is_empty');
                     $invalidFields[] = 'featured_end';
                 }
             } else {
                 $item['featured_start'] = null;
                 $item['featured_end'] = null;
             }
         }
         if (isset($data['status'])) {
             $item['status'] = iaSanitize::html($data['status']);
         }
         if (isset($data['date_added'])) {
             $time = strtotime($data['date_added']);
             if (!$time) {
                 $error = true;
                 $messages[] = iaLanguage::get('added_date_is_incorrect');
             } elseif ($time > time()) {
                 $error = true;
                 $messages[] = iaLanguage::get('future_date_specified_for_added_date');
             } else {
                 $item['date_added'] = date(iaDb::DATETIME_SHORT_FORMAT, $time);
             }
         }
         if (isset($data['owner'])) {
             if (empty($data['owner'])) {
                 $error = true;
                 $messages[] = iaLanguage::get('owner_is_not_specified');
             } else {
                 if ($memberId = $iaCore->iaDb->one_bind('id', '`username` = :name OR `fullname` = :name', array('name' => iaSanitize::sql($_POST['owner'])), iaUsers::getTable())) {
                     $item['member_id'] = $memberId;
                 } else {
                     $error = true;
                     $messages[] = iaLanguage::get('incorrect_owner_specified');
                 }
             }
         }
         if (isset($data['locked'])) {
             $item['locked'] = (int) $data['locked'];
         }
     }
     // the code block below filters fields based on parent/dependent structure
     $activeFields = array();
     $parentFields = array();
     foreach ($fields as $field) {
         $activeFields[$field['name']] = $field;
         if (iaField::RELATION_PARENT == $field['relation']) {
             $parentFields[$field['name']] = $field['children'];
         }
     }
     foreach ($parentFields as $fieldName => $dependencies) {
         if (isset($data[$fieldName])) {
             $value = $data[$fieldName];
             foreach ($dependencies as $dependentFieldName => $values) {
                 if (!in_array($value, $values)) {
                     unset($activeFields[$dependentFieldName]);
                 }
             }
         }
     }
     //
     $iaCore->factory('util');
     iaUtil::loadUTF8Functions('validation', 'bad');
     foreach ($activeFields as $fieldName => $field) {
         isset($data[$fieldName]) || ($data[$fieldName] = '');
         // Check the UTF-8 is well formed
         if (!is_array($data[$fieldName]) && !utf8_is_valid($data[$fieldName])) {
             $data[$fieldName] = utf8_bad_replace($data[$fieldName]);
         }
         if ($field['extra_actions']) {
             if (false === eval($field['extra_actions'])) {
                 continue;
                 // make possible to stop further processing of this field by returning FALSE
             }
         }
         if (in_array($field['type'], array(self::TEXT, self::TEXTAREA, self::NUMBER, self::RADIO, self::CHECKBOX, self::COMBO))) {
             if ($field['required']) {
                 if ($field['required_checks']) {
                     eval($field['required_checks']);
                 }
                 if (empty($data[$fieldName])) {
                     $error = true;
                     $messages[] = in_array($field['type'], array(self::RADIO, self::CHECKBOX, self::COMBO)) ? iaLanguage::getf('field_is_not_selected', array('field' => iaLanguage::get('field_' . $fieldName))) : iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                     $invalidFields[] = $fieldName;
                 }
             }
             switch ($field['type']) {
                 case self::NUMBER:
                     $item[$fieldName] = (double) str_replace(' ', '', $data[$fieldName]);
                     break;
                 case self::TEXT:
                     $item[$fieldName] = iaSanitize::tags($data[$fieldName]);
                     break;
                 case self::TEXTAREA:
                     $item[$fieldName] = $field['use_editor'] ? iaUtil::safeHTML($data[$fieldName]) : iaSanitize::tags($data[$fieldName]);
                     break;
                 default:
                     $item[$fieldName] = is_array($data[$fieldName]) ? implode(',', $data[$fieldName]) : $data[$fieldName];
             }
         } elseif (self::DATE == $field['type']) {
             if ($field['required'] && $field['required_checks']) {
                 eval($field['required_checks']);
             } elseif ($field['required'] && empty($data[$fieldName])) {
                 $error = true;
                 $messages[] = iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                 $invalidFields[] = $fieldName;
             }
             $data[$fieldName] = trim($data[$fieldName]);
             if (empty($data[$fieldName])) {
                 $item[$fieldName] = $field['allow_null'] ? null : '';
             } else {
                 if (strpos($data[$fieldName], ' ') === false) {
                     $date = $data[$fieldName];
                     $time = false;
                 } else {
                     list($date, $time) = explode(' ', $data[$fieldName]);
                 }
                 // FIXME: f*****g shit
                 $array = explode('-', $date);
                 $year = (int) $array[0];
                 $month = max(1, (int) $array[1]);
                 $day = max(1, (int) $array[2]);
                 $year = strlen($year) == 4 ? $year : 2000;
                 $month = strlen($month) < 2 ? '0' . $month : $month;
                 $day = strlen($day) < 2 ? '0' . $day : $day;
                 $item[$fieldName] = $year . '-' . $month . '-' . $day;
                 if ($field['timepicker'] && $time) {
                     $time = explode(':', $time);
                     $hour = max(1, (int) $time[0]);
                     $minute = max(1, (int) $time[1]);
                     $seconds = max(1, (int) $time[2]);
                     $hour = strlen($hour) < 2 ? '0' . $hour : $hour;
                     $minute = strlen($minute) < 2 ? '0' . $minute : $minute;
                     $seconds = strlen($seconds) < 2 ? '0' . $seconds : $seconds;
                     $item[$fieldName] .= ' ' . $hour . ':' . $minute . ':' . $seconds;
                 }
             }
         } elseif (self::URL == $field['type']) {
             $validProtocols = array('http://', 'https://');
             $item[$fieldName] = '';
             $req_error = false;
             if ($field['required']) {
                 if ($field['required_checks']) {
                     eval($field['required_checks']);
                 } elseif (empty($data[$fieldName]['url']) || in_array($data[$fieldName]['url'], $validProtocols)) {
                     $error = $req_error = true;
                     $messages[] = iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                     $invalidFields[] = $fieldName;
                 }
             }
             if (!$req_error && !empty($data[$fieldName]['url']) && !in_array($data[$fieldName]['url'], $validProtocols)) {
                 if (false === stripos($data[$fieldName]['url'], 'http://') && false === stripos($data[$fieldName]['url'], 'https://')) {
                     $data[$fieldName]['url'] = 'http://' . $data[$fieldName]['url'];
                 }
                 if (iaValidate::isUrl($data[$fieldName]['url'])) {
                     $item[$fieldName] = array();
                     $item[$fieldName]['url'] = iaSanitize::tags($data[$fieldName]['url']);
                     $item[$fieldName]['title'] = empty($data[$fieldName]['title']) ? str_replace($validProtocols, '', $data[$fieldName]['url']) : $data[$fieldName]['title'];
                     $item[$fieldName] = implode('|', $item[$fieldName]);
                 } else {
                     $error = true;
                     $messages[] = iaLanguage::get('field_' . $fieldName) . ': ' . iaLanguage::get('error_url');
                     $invalidFields[] = $fieldName;
                 }
             }
         } elseif (in_array($field['type'], array(self::IMAGE, self::STORAGE, self::PICTURES)) && is_array($_FILES[$fieldName]['tmp_name']) && !empty($_FILES[$fieldName]['tmp_name'])) {
             if (!is_writable(IA_UPLOADS)) {
                 $error = true;
                 $messages[] = iaLanguage::get('error_directory_readonly');
             } else {
                 // run required field checks
                 if ($field['required'] && $field['required_checks']) {
                     eval($field['required_checks']);
                 } elseif ($field['required'] && empty($_FILES[$fieldName]['tmp_name'])) {
                     $error = true;
                     $messages[] = iaLanguage::getf('field_is_empty', array('field' => iaLanguage::get('field_' . $fieldName)));
                     $invalidFields[] = $fieldName;
                 }
                 // custom folder for uploaded images
                 if (!empty($field['folder_name'])) {
                     if (!is_dir(IA_UPLOADS . $field['folder_name'])) {
                         mkdir(IA_UPLOADS . $field['folder_name']);
                     }
                     $path = $field['folder_name'] . IA_DS;
                 } else {
                     $path = iaUtil::getAccountDir();
                 }
                 $item[$fieldName] = isset($data[$fieldName]) && $data[$fieldName] ? $data[$fieldName] : array();
                 // initialize class to work with images
                 $methodName = self::STORAGE == $field['type'] ? '_processFileField' : '_processImageField';
                 // process uploaded files
                 foreach ($_FILES[$fieldName]['tmp_name'] as $id => $tmp_name) {
                     if ($_FILES[$fieldName]['error'][$id]) {
                         continue;
                     }
                     // files limit exceeded or rewrite image value
                     if (self::IMAGE != $field['type'] && count($item[$fieldName]) >= $field['length']) {
                         break;
                     }
                     $file = array();
                     foreach ($_FILES[$fieldName] as $key => $value) {
                         $file[$key] = $_FILES[$fieldName][$key][$id];
                     }
                     $processing = self::$methodName($field, $file, $path);
                     // 0 - filename, 1 - error, 2 - textual error description
                     if (!$processing[1]) {
                         $fieldValue = array('title' => isset($data[$fieldName . '_title'][$id]) ? substr(trim($data[$fieldName . '_title'][$id]), 0, 100) : '', 'path' => $processing[0]);
                         if (self::IMAGE == $field['type']) {
                             $item[$fieldName] = $fieldValue;
                         } else {
                             $item[$fieldName][] = $fieldValue;
                         }
                     } else {
                         $error = true;
                         $messages[] = $processing[2];
                     }
                 }
             }
             // If already has images, append them.
             $item[$fieldName] = empty($item[$fieldName]) ? '' : serialize(array_merge($item[$fieldName]));
             // array_merge is used to reset numeric keys
         }
         if (isset($item[$fieldName])) {
             // process hook if field value exists
             $iaCore->startHook('phpParsePostAfterCheckField', array('field_name' => $fieldName, 'item' => &$item[$fieldName], 'value' => $field, 'error' => &$error, 'error_fields' => &$invalidFields, 'msg' => &$messages));
         }
     }
     return array($item, $error, $messages, implode(',', $invalidFields));
 }
Пример #14
0
 protected function _gridQuery($columns, $where, $order, $start, $limit)
 {
     $sql = 'SELECT s.`id`, s.`reference_id`, s.`status`, s.`plan_id`, ' . 's.`date_created`, s.`date_next_payment`, m.`fullname` `user` ' . 'FROM `:prefix:table_subscriptions` s ' . 'LEFT JOIN `:prefix:table_members` m ON (s.`member_id` = m.`id`) ' . ($where ? 'WHERE ' . $where . ' ' : '') . $order . ' ' . 'LIMIT :start, :limit';
     $sql = iaDb::printf($sql, array('prefix' => $this->_iaDb->prefix, 'table_subscriptions' => $this->getTable(), 'table_members' => iaUsers::getTable(), 'start' => $start, 'limit' => $limit));
     return $this->_iaDb->getAll($sql);
 }
Пример #15
0
     $_SESSION['account_by'] = 'username';
 }
 $filterBy = $_SESSION['account_by'] == 'fullname' ? 'fullname' : 'username';
 $letters['all'] = iaUtil::getLetters();
 $letters['active'] = isset($iaCore->requestPath[0]) && in_array($iaCore->requestPath[0], $letters['all']) ? $iaCore->requestPath[0] : false;
 $cause .= $letters['active'] ? '0-9' == $letters['active'] ? "(`{$filterBy}` REGEXP '^[0-9]') AND " : "(`{$filterBy}` LIKE '{$letters['active']}%') AND " : '';
 if ($letters['active']) {
     $iaView->set('subpage', array_search($letters['active'], $letters) + 1);
 }
 $iaDb->setTable(iaUsers::getTable());
 // gets current page and defines start position
 $pagination = array('limit' => 20, 'total' => (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, $cause . "`status` = 'active' "), 'url' => IA_URL . 'members/' . ($letters['active'] ? $letters['active'] . '/' : '') . '?page={page}');
 $page = !empty($_GET['page']) ? (int) $_GET['page'] : 1;
 $start = (max($page, 1) - 1) * $pagination['limit'];
 $membersList = $iaDb->all(iaDb::ALL_COLUMNS_SELECTION, $cause . "`status` = 'active' ORDER BY `date_reg`", $start, $pagination['limit']);
 $fields = $iaCore->factory('field')->filter($membersList, iaUsers::getTable());
 $letters['existing'] = array();
 $array = $iaDb->all('DISTINCT UPPER(SUBSTR(`' . $filterBy . '`, 1, 1)) `letter`', $cause . "`status` = 'active' GROUP BY `username`");
 $iaDb->resetTable();
 if ($array) {
     foreach ($array as $item) {
         $letters['existing'][] = $item['letter'];
     }
 }
 // breadcrumb formation
 if ($activeGroup) {
     iaBreadcrumb::toEnd(iaLanguage::get('usergroup_' . $usergroups[$activeGroup]), IA_URL . 'members/?group=' . $activeGroup);
 }
 if ($letters['active']) {
     iaBreadcrumb::toEnd($letters['active'], IA_SELF);
 }
Пример #16
0
try {
    $providerName = strtolower($iaCore->requestPath[0]);
    if (!file_exists(IA_INCLUDES . 'hybridauth.inc.php')) {
        throw new Exception("No HybridAuth config file. Please configure provider adapters.");
    }
    $hybridauth = new Hybrid_Auth(IA_INCLUDES . 'hybridauth.inc.php');
    if (empty(Hybrid_Auth::$config["providers"])) {
        throw new Exception("Please configure at least one adapter for HybridAuth.");
    }
    $provider = $hybridauth->authenticate(ucfirst($providerName));
    if ($user_profile = $provider->getUserProfile()) {
        // identify by Hybrid identifier
        $memberId = $iaCore->iaDb->one('member_id', iaDb::convertIds($user_profile->identifier, 'value'), iaUsers::getProvidersTable());
        // identify by email address
        if (!$memberId) {
            if ($memberInfo = $this->iaDb->row_bind(iaDb::ALL_COLUMNS_SELECTION, "`email` = :email_address", array('email_address' => $user_profile->email), iaUsers::getTable())) {
                $iaCore->iaDb->insert(array('member_id' => $memberInfo['id'], 'name' => $providerName, 'value' => $user_profile->identifier), null, iaUsers::getProvidersTable());
                $memberId = $memberInfo['id'];
            }
        }
        // register new member if no matches
        if (!$memberId) {
            $memberRegInfo['username'] = '';
            $memberRegInfo['email'] = $user_profile->email;
            $memberRegInfo['fullname'] = $user_profile->displayName;
            // $memberRegInfo['avatar'] = $user_profile->photoURL;
            $memberRegInfo['disable_fields'] = true;
            $memberId = $iaUsers->register($memberRegInfo);
            // add providers match
            $iaCore->iaDb->insert(array('member_id' => $memberId, 'name' => $providerName, 'value' => $user_profile->identifier), null, iaUsers::getProvidersTable());
            // no need to validate address
Пример #17
0
         $member_info = $iaDb->row('*', "`username` = '{$_POST['member']}' OR `fullname` = '{$_POST['member']}'", iaUsers::getTable());
         $data['member_id'] = $member_info['id'];
     } else {
         $data['member_id'] = iaUsers::getIdentity()->id;
     }
     if (!$error) {
         if (iaCore::ACTION_ADD == $pageAction) {
             $data['id'] = $iaCommission->insert($data);
             $messages[] = iaLanguage::get('commission_added');
         } else {
             $data['id'] = $commission['id'];
             $iaCommission->update($data);
             $messages[] = iaLanguage::get('saved');
         }
         $commission = $iaCommission->getById($data['id']);
         $commission['member'] = $commission['member_id'] ? $iaDb->one('`username`', "`id` = {$commission['member_id']}", iaUsers::getTable()) : 0;
         $iaView->setMessages($messages, $error ? iaView::ERROR : iaView::SUCCESS);
         $goto = array('add' => $baseUrl . 'add/', 'list' => $baseUrl, 'stay' => $baseUrl . 'edit/?id=' . $data['id']);
         iaUtil::post_goto($goto);
     }
     $iaView->setMessages($messages, $error ? iaView::ERROR : iaView::SUCCESS);
 }
 $fieldGroups = $iaFields->getFieldsGroups(true, false, $iaCommission->getItemName());
 $iaView->assign('fields_groups', $fieldGroups);
 // get products
 $iaProduct = $iaCore->factoryPackage('product', IA_CURRENT_PACKAGE, iaCore::ADMIN);
 $products = $iaProduct->iaDb->all(iaDb::ALL_COLUMNS_SELECTION, '', null, null, iaProduct::getTable());
 $iaView->assign('products', $products);
 $iaView->assign('statuses', $iaCommission->getStatuses());
 $iaView->assign('item', $commission);
 $iaView->display('commissions');
Пример #18
0
 private function _getUsersSpecificConfig()
 {
     $sql = 'SELECT c.`name`, c.`value` ' . 'FROM `:prefix:table_custom_config` c, `:prefix:table_members` m ' . "WHERE c.`type` = ':type' AND c.`type_id` = m.`usergroup_id` AND m.`id` = :id";
     $sql = iaDb::printf($sql, array('prefix' => $this->_iaDb->prefix, 'table_custom_config' => iaCore::getCustomConfigTable(), 'table_members' => iaUsers::getTable(), 'id' => $this->_typeId));
     return ($rows = $this->_iaDb->getKeyValue($sql)) ? $rows : array();
 }
Пример #19
0
 public function deleteUsergroup($entryId)
 {
     $this->iaDb->setTable(iaUsers::getUsergroupsTable());
     $usergroup = $this->iaDb->row(iaDb::ALL_COLUMNS_SELECTION, iaDb::convertIds($entryId));
     $result = $this->iaDb->delete(iaDb::convertIds($entryId));
     if ($result) {
         // delete language records
         iaLanguage::delete('usergroup_' . $usergroup['name']);
         $this->iaDb->delete('`type` = :type AND `type_id` = :id', 'acl_privileges', array('type' => 'group', 'id' => $entryId));
         // TODO: use the class method for this
         $this->iaDb->update(array('usergroup_id' => iaUsers::MEMBERSHIP_REGULAR), iaDb::convertIds((int) $entryId, 'usergroup_id'), null, iaUsers::getTable());
     }
     $this->iaDb->resetTable();
     return $result;
 }
Пример #20
0
 private function _logStatistics()
 {
     if (!$this->blockExists('common_statistics')) {
         return;
     }
     $iaDb =& $this->iaCore->iaDb;
     $commonStatistics = array('members' => array(array('title' => iaLanguage::get('members'), 'value' => (int) $iaDb->one_bind(iaDb::STMT_COUNT_ROWS, '`status` = :status', array('status' => iaCore::STATUS_ACTIVE), iaUsers::getTable()))));
     $this->iaCore->startHook('populateCommonStatisticsBlock', array('statistics' => &$commonStatistics));
     $iaDb->setTable('online');
     $commonStatistics['online'] = array();
     $commonStatistics['online'][] = array('title' => iaLanguage::get('active_users'), 'value' => (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, "`status` = 'active' AND `is_bot` = 0"));
     if ($this->iaCore->get('members_enabled')) {
         $commonStatistics['online'][] = array('title' => iaLanguage::get('members'), 'value' => (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, "`username` != '' AND `status` = 'active' AND `is_bot` = '0'"));
         $commonStatistics['online'][] = array('title' => iaLanguage::get('guests'), 'value' => $commonStatistics['online'][0]['value'] - $commonStatistics['online'][1]['value']);
     }
     $commonStatistics['online'][] = array('title' => iaLanguage::get('bots'), 'value' => (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, "`status` = 'active' AND `is_bot` = 1"));
     $commonStatistics['online'][] = array('title' => iaLanguage::get('live_visits'), 'value' => (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, '`is_bot` = 0 AND `date` + INTERVAL 1 DAY > NOW()'));
     $commonStatistics['online'][] = array('title' => iaLanguage::get('bots_visits'), 'value' => (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, '`is_bot` = 1 AND `date` + INTERVAL 1 DAY > NOW()'));
     if ($this->iaCore->get('members_enabled', true)) {
         $outputHtml = '';
         if ($array = $iaDb->all("`username`, IF(`fullname` != '', `fullname`, `username`) `fullname`, COUNT(`id`) `count`", "`username` != '' AND `status` = 'active' GROUP BY `username`")) {
             foreach ($array as $item) {
                 $outputHtml .= $this->iaSmarty->ia_url(array('item' => iaUsers::getItemName(), 'type' => 'link', 'text' => $item['fullname'], 'data' => $item)) . ', ';
             }
             $outputHtml = substr($outputHtml, 0, -2);
             $commonStatistics['online'][count($commonStatistics['online']) - 1]['html'] = $outputHtml;
         }
     }
     $this->iaSmarty->assignGlobal('common_statistics', $commonStatistics);
     $iaDb->resetTable();
 }
Пример #21
0
<?php

//##copyright##
if (iaView::REQUEST_HTML == $iaView->getRequestType()) {
    if (!iaUsers::hasIdentity()) {
        return iaView::errorPage(iaView::ERROR_UNAUTHORIZED);
    }
    $iaField = $iaCore->factory('field');
    $iaUsers = $iaCore->factory('users');
    $itemName = $tableName = iaUsers::getTable();
    $messages = array();
    $assignableGroups = $iaDb->keyvalue(array('id', 'name'), '`assignable` = 1', iaUsers::getUsergroupsTable());
    $iaPlan = $iaCore->factory('plan');
    $plans = $iaPlan->getPlans($iaUsers->getItemName());
    $iaDb->setTable($tableName);
    if (isset($_POST['change_pass'])) {
        $error = false;
        $newPassword = empty($_POST['new']) ? false : $_POST['new'];
        // checks for current password
        if (iaUsers::getIdentity()->password != $iaUsers->encodePassword($_POST['current'])) {
            $error = true;
            $messages[] = iaLanguage::get('password_incorrect');
        }
        if (!$newPassword) {
            $error = true;
            $messages[] = iaLanguage::get('password_empty');
        }
        if ($newPassword != $_POST['confirm']) {
            $error = true;
            $messages[] = iaLanguage::get('error_password_match');
        }
Пример #22
0
 protected function _gridQuery($columns, $where, $order, $start, $limit)
 {
     $sql = 'SELECT SQL_CALC_FOUND_ROWS ' . 'b.`id`, b.`title`, b.`alias`, b.`date_added`, b.`status`, m.`fullname` `owner`, 1 `update`, 1 `delete` ' . 'FROM `:prefix:table_blog_entries` b ' . 'LEFT JOIN `:prefix:table_members` m ON (b.`member_id` = m.`id`) ' . ($where ? "WHERE " . $where : '') . $order . ' ' . 'LIMIT :start, :limit';
     $sql = iaDb::printf($sql, array('prefix' => $this->_iaDb->prefix, 'table_blog_entries' => $this->getTable(), 'table_members' => iaUsers::getTable(), 'start' => $start, 'limit' => $limit));
     return $this->_iaDb->getAll($sql);
 }
Пример #23
0
 public function sendToAdministrators($clearAddresses = true)
 {
     if ($administrators = $this->_iaCore->iaDb->keyvalue(array('email', 'fullname'), '`usergroup_id` = ' . iaUsers::MEMBERSHIP_ADMINISTRATOR, iaUsers::getTable())) {
         foreach ($administrators as $email => $name) {
             $this->addAddress($email, $name);
         }
     }
     return $this->send($clearAddresses);
 }
Пример #24
0
<?php

//##copyright##
$iaDb->setTable('blog_entries');
if (iaView::REQUEST_HTML == $iaView->getRequestType()) {
    if (isset($iaCore->requestPath[0])) {
        $id = (int) $iaCore->requestPath[0];
        if (!$id) {
            return iaView::errorPage(iaView::ERROR_NOT_FOUND);
        }
        $sql = 'SELECT b.`id`, b.`title`, b.`date_added`, b.`body`, b.`alias`, b.`image`, m.`fullname` ' . 'FROM `:prefix:table_blog_entries` b ' . 'LEFT JOIN `:prefix:table_members` m ON (b.`member_id` = m.`id`) ' . 'WHERE b.`id` = :id AND b.`status` = \':status\' ';
        $sql = iaDb::printf($sql, array('prefix' => $iaDb->prefix, 'table_blog_entries' => 'blog_entries', 'table_members' => iaUsers::getTable(), 'id' => iaSanitize::sql($id), 'status' => iaCore::STATUS_ACTIVE));
        $blogEntry = $iaDb->getRow($sql);
        $sql = 'SELECT DISTINCT bt.`title`, bt.`alias` ' . 'FROM `:prefix:table_blog_tags` bt ' . 'LEFT JOIN `:prefix:table_blog_entries_tags` bet ON (bt.`id` = bet.`tag_id`) ' . 'WHERE bet.`blog_id` = :id';
        $sql = iaDb::printf($sql, array('prefix' => $iaDb->prefix, 'table_blog_entries_tags' => 'blog_entries_tags', 'table_blog_tags' => 'blog_tags', 'id' => iaSanitize::sql($id)));
        $blogTags = $iaDb->getAll($sql);
        if (empty($blogEntry)) {
            return iaView::errorPage(iaView::ERROR_NOT_FOUND);
        }
        $title = iaSanitize::tags($blogEntry['title']);
        iaBreadcrumb::toEnd($title);
        $iaView->title($title);
        // add open graph data
        $openGraph = array('title' => $title, 'url' => IA_SELF, 'description' => $blogEntry['body']);
        if ($blogEntry['image']) {
            $openGraph['image'] = IA_CLEAR_URL . 'uploads/' . $blogEntry['image'];
        }
        $iaView->set('og', $openGraph);
        $iaView->assign('tags', $blogTags);
        $iaView->assign('blog_entry', $blogEntry);
    } else {
Пример #25
0
}
$iaCore->startHook('phpSearchAfterGetQuery');
if ($search) {
    $search['terms'] = unserialize($search['terms']);
    $page = isset($_GET['page']) ? max((int) $_GET['page'], 1) : 1;
    $template = ($adv ? 'adv' : '') . "search/?id={$searchId}&amp;page={page}";
    $start = ($page - 1) * $limit;
    // here are search results stored as HTML
    $results = array('html' => array(), 'num' => 0, 'all' => 0);
    // search in items
    /* Core search: members + pages */
    if (trim($search['query']) || $adv) {
        $searchFields = array();
        if ($iaCore->get('members_enabled')) {
            $iaUsers = $iaCore->factory('users');
            $searchFields = array($iaUsers->getItemName() => array('name' => $iaUsers->getItemName(), 'where' => '', 'fields' => iaUsers::getTable(), 'items' => array()));
        }
        if ($search['query']) {
            searchByPages($search['query'], $results);
            if ($iaCore->get('members_enabled')) {
                $searchFields['members']['items'] = array('username' => array('val' => '%' . $search['query'] . '%', 'cond' => 'LIKE'), 'fullname' => array('val' => '%' . $search['query'] . '%', 'cond' => 'LIKE'));
            }
            if (!$adv && !empty($search['terms']['items'])) {
                foreach ($search['terms']['items'] as $i => $flds) {
                    if ($i == 'members' && $iaCore->get('members_enabled')) {
                        if (!isset($searchFields[$i])) {
                            $searchFields[$i] = array('name' => $i, 'where' => '', 'items' => array());
                        }
                        $searchFields[$i]['items'] = $flds;
                        $searchFields[$i]['where'] = " AND `status` = 'active'";
                    }