public function create($planId)
 {
     $entry = array('plan_id' => (int) $planId, 'member_id' => iaUsers::hasIdentity() ? iaUsers::getIdentity()->id : 0, 'status' => self::PENDING);
     if ($id = $this->iaDb->insert($entry, array('date_created' => iaDb::FUNCTION_NOW), self::getTable())) {
         $entry['id'] = $id;
         return $entry;
     }
     return false;
 }
Пример #2
0
 private function _deleteFile($params)
 {
     $result = array('error' => true, 'message' => iaLanguage::get('invalid_parameters'));
     $item = isset($params['item']) ? iaSanitize::sql($params['item']) : null;
     $field = isset($params['field']) ? iaSanitize::sql($params['field']) : null;
     $path = isset($params['path']) ? iaSanitize::sql($params['path']) : null;
     $itemId = isset($params['itemid']) ? (int) $params['itemid'] : null;
     if ($itemId && $item && $field && $path) {
         $tableName = $this->_iaCore->factory('item')->getItemTable($item);
         $itemValue = $this->_iaDb->one($field, iaDb::convertIds($itemId), $tableName);
         $iaAcl = $this->_iaCore->factory('acl');
         if ($iaAcl->isAdmin() && $itemValue) {
             $pictures = $itemValue[1] == ':' ? unserialize($itemValue) : $itemValue;
             $key = null;
             if (is_array($pictures)) {
                 if ($primitive = !is_array($pictures[key($pictures)])) {
                     $pictures = array($pictures);
                 }
                 foreach ($pictures as $k => $v) {
                     if ($path == $v['path']) {
                         $key = $k;
                         break;
                     }
                 }
                 if (!is_null($key)) {
                     unset($pictures[$key]);
                 }
                 $newItemValue = $primitive ? '' : serialize($pictures);
             } else {
                 // single image
                 $newItemValue = '';
                 if ($pictures == $path) {
                     $key = true;
                 }
             }
             if (!is_null($key)) {
                 if ($this->_iaCore->factory('picture')->delete($path)) {
                     if ($this->_iaDb->update(array($field => $newItemValue), iaDb::convertIds($itemId), null, $tableName)) {
                         if (iaUsers::getItemName() == $item) {
                             // update current profile data
                             if ($itemId == iaUsers::getIdentity()->id) {
                                 iaUsers::reloadIdentity();
                             }
                         }
                     }
                     $result['error'] = false;
                     $result['message'] = iaLanguage::get('deleted');
                 } else {
                     $result['message'] = iaLanguage::get('error');
                 }
             }
         }
     }
     return $result;
 }
Пример #3
0
 public function getAddress($transactionId)
 {
     $invoice = $this->getBy('transaction_id', $transactionId);
     if ($invoice && $invoice['address1']) {
         return $invoice;
     }
     // else return an address of the latest populated transaction
     $iaTransaction = $this->iaCore->factory('transaction');
     $sql = 'SELECT SQL_CALC_FOUND_ROWS i.`address1`, i.`address2`, i.`zip`, i.`country` ' . 'FROM `:prefix:table_transactions` t ' . 'LEFT JOIN `:prefix:table_invoices` i ON (i.`transaction_id` = t.`id`) ' . 'WHERE t.`member_id` = :member AND i.`address1` != "" ' . 'ORDER BY t.`date` DESC ' . 'LIMIT 1';
     $sql = iaDb::printf($sql, array('prefix' => $this->iaDb->prefix, 'table_transactions' => $iaTransaction::getTable(), 'table_invoices' => self::getTable(), 'member' => iaUsers::getIdentity()->id));
     $row = $this->iaDb->getRow($sql);
     return $row ? $row : array('address1' => '', 'address2' => '', 'zip' => '', 'country' => '');
 }
Пример #4
0
 protected function _debugInfo()
 {
     $iaCore = iaCore::instance();
     $iaCore->factory('users');
     self::dump(iaCore::ACCESS_FRONT == $iaCore->getAccessType() ? iaCore::FRONT : iaCore::ADMIN, 'Access Type');
     self::dump($iaCore->iaView->getParams(), 'Page', 'info');
     self::dump($iaCore->iaView->get('action'), 'Action', 'info');
     self::dump($iaCore->iaView->get('filename'), 'Module');
     self::dump($iaCore->iaView->language, 'Language');
     self::dump(iaUsers::hasIdentity() ? iaUsers::getIdentity(true) : null, 'Identity');
     self::dump();
     // process blocks
     $blocks = array();
     if ($blocksData = $iaCore->iaView->blocks) {
         foreach ($blocksData as $position => $blocksList) {
             $blocks[$position] = array();
             foreach ($blocksList as $block) {
                 $blocks[$position][] = $block['name'];
             }
         }
     }
     // process constants
     $constantsList = get_defined_constants(true);
     foreach ($constantsList['user'] as $key => $value) {
         if (strpos($key, 'IA_') === 0 && 'IA_SALT' != $key) {
             $constants[$key] = $value;
         }
     }
     self::dump($iaCore->requestPath, 'URL Params');
     self::dump($blocks, 'Blocks List');
     self::dump($iaCore->packagesData, 'Installed Packages');
     self::dump($iaCore->getConfig(), 'Configuration Params');
     self::dump($constants, 'Constants List');
     if (!empty(self::$_data['info'])) {
         foreach (self::$_data['info'] as $key => $val) {
             self::dump($val, !is_int($key) ? $key : '');
         }
     }
     self::dump();
     self::dump($_POST, '$_POST');
     self::dump($_FILES, '$_FILES');
     self::dump($_GET, '$_GET');
     self::dump();
     self::dump(PHP_VERSION, 'PHP version');
     self::dump($_SERVER, '$_SERVER');
     self::dump($_SESSION, '$_SESSION');
     self::dump($_COOKIE, '$_COOKIE');
     return '[' . $iaCore->iaView->name() . ']';
 }
Пример #5
0
 public static function accountActions($params)
 {
     if (!iaUsers::hasIdentity() || empty($params['item']) || empty($params['itemtype']) || 'members' == $params['itemtype'] && iaUsers::getIdentity()->id != $params['item']['id'] || 'members' != $params['itemtype'] && isset($params['item']['member_id']) && iaUsers::getIdentity()->id != $params['item']['member_id']) {
         return '';
     }
     $iaCore = iaCore::instance();
     $iaItem = $iaCore->factory('item');
     $params['img'] = $img = IA_CLEAR_URL . 'templates/' . $iaCore->iaView->theme . '/img/';
     $classname = isset($params['classname']) ? $params['classname'] : '';
     $upgradeUrl = '';
     $editUrl = '';
     $extraActions = '';
     $output = '';
     if ('members' == $params['itemtype']) {
         $editUrl = IA_URL . 'profile/';
     } else {
         $item = $iaItem->getPackageByItem($params['itemtype']);
         if (empty($item)) {
             return '';
         }
         $iaPackage = $iaCore->factoryPackage('item', $item, iaCore::FRONT, $params['itemtype']);
         if (empty($iaPackage)) {
             return '';
         }
         if (method_exists($iaPackage, __FUNCTION__)) {
             list($editUrl, $upgradeUrl) = $iaPackage->{__FUNCTION__}($params);
         }
         if (method_exists($iaPackage, 'extraActions')) {
             $extraActions = $iaPackage->extraActions($params['item']);
         }
     }
     $iaCore->startHook('phpSmartyAccountActionsBeforeShow', array('params' => &$params, 'type' => $params['itemtype'], 'upgrade_url' => &$upgradeUrl, 'edit_url' => &$editUrl, 'output' => &$output));
     if ($editUrl) {
         $output .= '<a rel="nofollow" href="' . $editUrl . '" class="btn btn-small ' . $classname . '" title="' . iaLanguage::get('edit') . '"><i class="icon-pencil"></i></a>';
     }
     return $output . $extraActions;
 }
Пример #6
0
 /**
  * Checks access for user and groups
  * @param string $params
  * @param int $userId
  * @param int $groupId
  * @param bool $objectId
  * @param bool $custom
  * @return bool
  */
 public function checkAccess($params = '', $objectId = null, $userId = 0, $groupId = 0, $custom = false)
 {
     $array = explode(self::SEPARATOR, $params);
     $object = $array[0];
     $action = iaCore::ACTION_READ;
     if (isset($array[1])) {
         $action = $array[1];
     }
     if (false === $custom) {
         $this->iaCore->factory('users');
         $user = iaUsers::hasIdentity() ? iaUsers::getIdentity()->id : 0;
         $group = iaUsers::hasIdentity() ? iaUsers::getIdentity()->usergroup_id : 0;
         $perms = $this->_permissions;
     } else {
         $user = isset($custom['user']) ? $custom['user'] : 0;
         $group = isset($custom['group']) ? $custom['group'] : 0;
         if (isset($custom['perms'])) {
             $perms = $custom['perms'];
         } elseif ($custom) {
             $perms = array();
         } else {
             $perms = $this->getPermissions($user, $group);
         }
     }
     // 1. Administrators
     if (iaUsers::MEMBERSHIP_ADMINISTRATOR == $group) {
         $this->_lastStep = 1;
         return true;
     }
     // 2. Owner (user)
     if ($userId != 0 && $userId == $user) {
         $this->_lastStep = 2;
         return true;
     }
     // 3. Owner (user)
     if ($groupId != 0 && $groupId == $group) {
         $this->_lastStep = 3;
         return true;
     }
     if ($objectId) {
         $name = $this->encodeAction($object, $action, $objectId);
         if (isset($perms[$name])) {
             $perms = $perms[$name];
             ksort($perms);
             // 4. Object privileges check (user = 0)
             // 5. Object privileges check (group = 1)
             // 6. Object privileges check (plan = 2)
             foreach ($perms as $type => $values) {
                 $this->_lastStep = 4 + $type;
                 /*					if ($type == 2)
                 					{
                 						if ($values['type_id'] == $this->_planId)
                 						{
                 							return (bool)$values['access'];
                 						}
                 					}
                 					else
                 					{*/
                 return (bool) $values['access'];
                 //					}
             }
         }
     }
     // 7. All privileges check (user = 0)
     // 8. All privileges check (group = 1)
     // 9. All privileges check (plan = 2)
     $name = $object . self::DELIMITER . $action . self::DELIMITER . '0';
     if (isset($perms[$name])) {
         $perms = $perms[$name];
         ksort($perms);
         foreach ($perms as $type => $values) {
             $this->_lastStep = 7 + $type;
             /*				if ($type == 2)
             				{
             					if ($values['type_id'] == $this->_planId)
             					{
             						return (bool)$values['access'];
             					}
             				}
             				else
             				{*/
             return (bool) $values['access'];
             //				}
         }
     }
     // 10. Default object value
     $key = $object . ($objectId ? '-' . $objectId : '') . self::DELIMITER . $action;
     if (isset($this->_objects[$key])) {
         $this->_lastStep = 10;
         return (bool) $this->_objects[$key];
     }
     $this->_lastStep = 11;
     // 11. Default value from core
     return $action == iaCore::ACTION_READ;
 }
Пример #7
0
 protected function _sendEmailNotification(array $transaction)
 {
     // first, do check if gateway has its own email submission
     if ($result = $this->_doGatewayCallback($transaction['gateway'], $transaction)) {
         return $result;
     }
     $result1 = true;
     $notification = 'transaction_paid';
     if ($this->iaCore->get($notification)) {
         $iaUsers = $this->iaCore->factory('users');
         $member = $iaUsers->getById($transaction['member_id']);
         if (!$member) {
             return false;
         }
         $iaMailer = $this->iaCore->factory('mailer');
         $iaMailer->loadTemplate('transaction_paid');
         $iaMailer->addAddress($member['email']);
         $iaMailer->setReplacements($transaction);
         $iaMailer->setReplacements(array('email' => $member['username'], 'username' => $member['username'], 'fullname' => $member['fullname']));
         $result1 = $iaMailer->send();
     }
     // notify admin
     $result2 = true;
     $notification .= '_admin';
     if ($this->iaCore->get($notification)) {
         $iaMailer->loadTemplate($notification);
         $iaMailer->addAddress($this->iaCore->get('site_email'));
         $iaMailer->setReplacements(array('username' => iaUsers::getIdentity()->username, 'amount' => $transaction['amount'], 'operation' => $transaction['operation']));
         $result2 = $iaMailer->send();
     }
     return $result1 && $result2;
 }
Пример #8
0
 /**
  * Write funds off from member balance.
  *
  * @param array $transactionData data about transaction
  *
  * @return bool true on success
  */
 public function extractFunds(array $transactionData)
 {
     if (!iaUsers::hasIdentity()) {
         return false;
     }
     $iaUsers = $this->iaCore->factory('users');
     $iaTransaction = $this->iaCore->factory('transaction');
     $userInfo = $iaUsers->getInfo(iaUsers::getIdentity()->id);
     $remainingBalance = $userInfo['funds'] - $transactionData['amount'];
     if ($remainingBalance >= 0) {
         $result = (bool) $iaUsers->update(array('funds' => $remainingBalance), iaDb::convertIds(iaUsers::getIdentity()->id));
         if ($result) {
             iaUsers::reloadIdentity();
             $updatedValues = array('status' => iaTransaction::PASSED, 'gateway' => iaTransaction::TRANSACTION_MEMBER_BALANCE, 'reference_id' => date('YmdHis'), 'member_id' => iaUsers::getIdentity()->id);
             $iaTransaction->update($updatedValues, $transactionData['id']);
         }
         return $result;
     }
     return false;
 }
Пример #9
0
                if ($iaUsers->hasIdentity()) {
                    $iaDb->delete('`id` = :item_id AND `member_id` = :user AND `item` = :item', $iaItem->getFavoritesTable(), array('item_id' => $itemId, 'user' => iaUsers::getIdentity()->id, 'item' => $itemName));
                } else {
                    unset($_SESSION[iaUsers::SESSION_FAVORITES_KEY][$itemName]['items'][$itemId]);
                }
                $output['error'] = false;
                $output['message'] = iaLanguage::get('favorites_action_deleted');
        }
    }
    $iaView->assign($output);
}
if (iaView::REQUEST_HTML == $iaView->getRequestType()) {
    $itemInfo = $fields = array();
    $iaField = $iaCore->factory('field');
    if ($iaUsers->hasIdentity()) {
        if ($favorites = $iaItem->getFavoritesByMemberId(iaUsers::getIdentity()->id)) {
            foreach ($favorites as $itemName => $ids) {
                $fields = array('id');
                $class = iaCore::CORE != $itemsList[$itemName] ? $iaCore->factoryPackage('item', $itemsList[$itemName], iaCore::FRONT, $itemName) : $iaCore->factory('members' == $itemName ? 'users' : $itemName);
                if ($class && method_exists($class, iaUsers::METHOD_NAME_GET_FAVORITES)) {
                    $favorites[$itemName]['items'] = $class->{iaUsers::METHOD_NAME_GET_FAVORITES}($ids);
                } else {
                    if ($itemName == $iaUsers->getItemName()) {
                        $fields[] = 'username';
                        $fields[] = 'fullname';
                        $fields[] = 'avatar';
                        $fields[] = 'id` `member_id';
                    } else {
                        $fields[] = 'member_id';
                    }
                    $stmt = iaDb::printf("`id` IN (:ids) && `status` = ':status'", array('ids' => implode(',', $ids), 'status' => iaCore::STATUS_ACTIVE));
Пример #10
0
 private function _setActions()
 {
     $result = array();
     if (self::REQUEST_HTML != $this->getRequestType()) {
         return $result;
     }
     $iaCore =& $this->iaCore;
     if (false !== strpos($iaCore->iaView->name(), 'view')) {
         $iaItem = $iaCore->factory('item');
         $iaCore->startHook('smartyItemTools');
         $iaItem->setItemTools(array('id' => 'action-print', 'title' => iaLanguage::get('print_preview'), 'attributes' => array('href' => '#', 'class' => 'js-print-page')));
         $itemData = $iaCore->iaView->iaSmarty->getTemplateVars('item');
         if (iaUsers::hasIdentity() && $itemData) {
             if (iaUsers::getItemName() != $itemData['item'] && isset($itemData['member_id']) && iaUsers::getIdentity()->id != $itemData['member_id'] || $itemData['item'] == iaUsers::getItemName() && iaUsers::getIdentity()->id != $itemData['id']) {
                 $isAlreadyFavorited = isset($itemData['favorite']) && $itemData['favorite'] == 1;
                 $iaItem->setItemTools(array('id' => 'action-favorites', 'title' => iaLanguage::get($isAlreadyFavorited ? 'favorites_action_delete' : 'favorites_action_add'), 'attributes' => array('href' => '#', 'class' => 'js-favorites', 'data-id' => $itemData['id'], 'data-item' => $itemData['item'], 'data-action' => $isAlreadyFavorited ? iaCore::ACTION_DELETE : iaCore::ACTION_ADD)));
             }
         }
         $result = $iaItem->setItemTools();
     }
     return $result;
 }
Пример #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
 /**
  * Return list of items with favorites field
  *
  * @param array $listings listings to be processed
  * @param $itemName item name
  *
  * @return mixed
  */
 public function updateItemsFavorites($listings, $itemName)
 {
     if (empty($itemName)) {
         return $listings;
     }
     if (!iaUsers::hasIdentity()) {
         if (isset($_SESSION[iaUsers::SESSION_FAVORITES_KEY][$itemName]['items'])) {
             $itemsFavorites = array_keys($_SESSION[iaUsers::SESSION_FAVORITES_KEY][$itemName]['items']);
         }
     } else {
         $itemsList = array();
         foreach ($listings as $entry) {
             if ('members' == $itemName && $entry['id'] != iaUsers::getIdentity()->id || isset($entry['member_id']) && $entry['member_id'] != iaUsers::getIdentity()->id) {
                 $itemsList[] = $entry['id'];
             }
         }
         if (empty($itemsList)) {
             return $listings;
         }
         // get favorites
         $itemsFavorites = $this->iaDb->onefield('`id`', "`id` IN ('" . implode("','", $itemsList) . "') && `item` = '{$itemName}' && `member_id` = " . iaUsers::getIdentity()->id, 0, null, $this->getFavoritesTable());
     }
     if (empty($itemsFavorites)) {
         return $listings;
     }
     // process listing and set flag is in favorites array
     foreach ($listings as &$listing) {
         $listing['favorite'] = (int) in_array($listing['id'], $itemsFavorites);
     }
     return $listings;
 }
Пример #13
0
 protected function _renderResults($rows)
 {
     $iaView =& $this->iaView;
     $iaSmarty =& $iaView->iaSmarty;
     if (!$this->_smartyVarsAssigned) {
         $core = array('config' => $this->iaCore->getConfig(), 'customConfig' => $this->iaCore->getCustomConfig(), 'language' => $this->iaCore->languages[$iaView->language], 'languages' => $this->iaCore->languages, 'packages' => $this->iaCore->packagesData, 'page' => array('info' => $iaView->getParams(), 'name' => $iaView->name(), 'nonProtocolUrl' => $iaView->assetsUrl, 'title' => $iaView->get('caption', $iaView->get('title'))));
         $iaSmarty->assign('core', $core);
         $iaSmarty->assign('member', iaUsers::getIdentity(true));
         $this->_smartyVarsAssigned = true;
     }
     if (iaUsers::getItemName() == $this->_itemName) {
         $array = array();
         $fields = $this->iaCore->factory('field')->filter($array, $this->_itemName, array('page' => 'members'));
         $result = $this->_render('search.members' . iaView::TEMPLATE_FILENAME_EXT, array('fields' => $fields, 'listings' => $rows));
     } else {
         $result = $this->_render(sprintf('extra:%s/search.%s', $this->_packageName, $this->_itemName), array('listings' => $rows));
     }
     return $result;
 }
Пример #14
0
            } else {
                $iaView->setMessages($messages);
            }
        }
        if (isset($_POST['plan_id']) && $_POST['plan_id'] != iaUsers::getIdentity()->sponsored_plan_id) {
            if ($plan = $iaPlan->getById((int) $_POST['plan_id'])) {
                $url = $iaPlan->prePayment($itemName, iaUsers::getIdentity(true), $plan['id'], IA_SELF);
                iaUtil::redirect(iaLanguage::get('thanks'), iaLanguage::get('plan_added'), $url);
            } else {
                $iaPlan->setUnpaid(iaUsers::getItemName(), iaUsers::getIdentity()->id);
            }
        }
    }
    $iaCore->startHook('phpFrontAfterProfileProcessData');
    $item = iaUsers::getIdentity(true);
    // get fieldgroups
    list($tabs, $fieldgroups) = $iaField->generateTabs($iaField->filterByGroup($item, $itemName));
    // compose tabs
    $sections = array_merge(array('common' => $fieldgroups), $tabs);
    $extraTabs = array();
    $iaCore->startHook('phpFrontEditProfileExtraTabs', array('tabs' => &$extraTabs, 'item' => &$item));
    $sections = array_merge($sections, $extraTabs);
    if (iaUsers::MEMBERSHIP_ADMINISTRATOR != iaUsers::getIdentity()->usergroup_id) {
        $iaView->assign('assignableGroups', $assignableGroups);
    }
    $iaView->assign('sections', $sections);
    $iaView->assign('plans_count', (int) $iaDb->one(iaDb::STMT_COUNT_ROWS, null, iaPlan::getTable()));
    $iaView->assign('item', $item);
    $iaView->assign('plans', $plans);
    $iaDb->resetTable();
}
Пример #15
0
            $output = array();
            $iaCore->startHook('phpActionsJsonHandle', array('action' => $_POST['action'], 'output' => &$output));
    }
    $iaView->assign($output);
}
if (isset($_GET) && isset($_GET['action'])) {
    switch ($_GET['action']) {
        case 'ckeditor_upload':
            $iaView->disableLayout();
            $iaView->set('nodebug', 1);
            $err = 0;
            if (isset($_GET['Type']) && 'Image' == $_GET['Type'] && isset($_FILES['upload'])) {
                $oFile = $_FILES['upload'];
                $sErrorNumber = '0';
                $imgTypes = array('image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/pjpeg' => 'jpg', 'image/png' => 'png');
                $_user = iaUsers::hasIdentity() ? iaUsers::getIdentity()->username : false;
                $sFileUrl = 'uploads/' . iaUtil::getAccountDir($_user);
                $ext = array_key_exists($oFile['type'], $imgTypes) ? $imgTypes[$oFile['type']] : false;
                if (!$ext) {
                    $err = '202 error';
                }
                $tok = iaUtil::generateToken();
                $fname = $tok . '.' . $ext;
                if (!$err) {
                    move_uploaded_file($oFile['tmp_name'], IA_HOME . $sFileUrl . $fname);
                    chmod(IA_HOME . $sFileUrl . $fname, 0777);
                }
                // fix windows URLs
                $fileUrl = $sFileUrl . $fname;
                $fileUrl = str_replace('\\', '/', $fileUrl);
                $callback = (int) $_GET['CKEditorFuncNum'];
Пример #16
0
require_once 'ia.output.php';
$modulesPath = IA_INSTALL . 'modules' . IA_DS;
if (is_dir($modulesPath)) {
    if ($directory = opendir($modulesPath)) {
        while ($file = readdir($directory)) {
            $pos = strpos($file, 'module.');
            if ($pos !== false && $pos == 0) {
                list(, $mod, ) = explode('.', $file);
                switch ($mod) {
                    case 'install':
                        $modules[] = $mod;
                        break;
                    case 'upgrade':
                        if (iaHelper::isScriptInstalled()) {
                            $iaUsers = iaHelper::loadCoreClass('users', 'core');
                            if ($mod == $module || iaUsers::hasIdentity() && iaUsers::MEMBERSHIP_ADMINISTRATOR == iaUsers::getIdentity()->usergroup_id) {
                                $modules[] = $mod;
                            }
                        }
                        break;
                    default:
                        $modules[] = $mod;
                }
            }
        }
        closedir($directory);
    }
}
if (empty($modules)) {
    header('HTTP/1.0 403');
    exit('Forbidden.');
Пример #17
0
         }
         break;
     case iaTransaction::REFUNDED:
     case iaTransaction::FAILED:
         $iaView->setMessages($messages);
         iaUtil::go_to($iaPage->getUrlByName('member_funds'));
         break;
     default:
         $error = true;
         $messages[] = 'Unknown status';
 }
 $iaView->setMessages($messages, $error ? iaView::ERROR : iaView::SUCCESS);
 $memberBalance = iaUsers::hasIdentity() ? iaUsers::getIdentity()->funds : 0;
 iaLanguage::set('funds_in_your_account', iaLanguage::getf('funds_in_your_account', array('sum' => $memberBalance, 'currency' => $iaCore->get('currency'))));
 $isBalancePayment = iaUsers::hasIdentity() && iaTransaction::TRANSACTION_MEMBER_BALANCE == $transaction['item'] && iaUsers::getIdentity()->id == $transaction['item_id'];
 $isFundsEnough = (bool) (!$isBalancePayment && iaUsers::hasIdentity() && iaUsers::getIdentity()->funds >= $transaction['amount']);
 // FIXME: solution to prevent csrf catching.
 // Should be replaced once it is possible to disable csrf checking for a single page.
 if (isset($_POST)) {
     $paymentPost = $_POST;
     if (isset($_SERVER['HTTP_ORIGIN'])) {
         $wwwChunk = 'www.';
         $referrerDomain = explode(IA_URL_DELIMITER, $_SERVER['HTTP_ORIGIN']);
         $referrerDomain = strtolower($referrerDomain[2]);
         $referrerDomain = str_replace($wwwChunk, '', $referrerDomain);
         $domain = explode(IA_URL_DELIMITER, $iaCore->get('baseurl'));
         $domain = strtolower($domain[2]);
         $domain = str_replace($wwwChunk, '', $domain);
         if ($referrerDomain !== $domain) {
             $_POST = array();
         }
Пример #18
0
 private function _humanize(array $logEntry)
 {
     $params = unserialize($logEntry['params']);
     if (isset($params['user'])) {
         $params['user'] = sprintf('<a href="%s" target="_blank">%s</a>', IA_ADMIN_URL . 'members/edit/' . $logEntry['user_id'] . '/', $params['user']);
     }
     if (isset($params['name'])) {
         $params['name'] = iaSanitize::html($params['name']);
     }
     $style = 'added';
     switch ($logEntry['action']) {
         case self::ACTION_CREATE:
         case self::ACTION_UPDATE:
         case self::ACTION_DELETE:
             $actionsMap = array(self::ACTION_CREATE => 'create', self::ACTION_UPDATE => 'update', self::ACTION_DELETE => 'remove');
             $iconsMap = array('block' => 'grid', 'page' => 'copy', 'member' => 'members', 'blog' => 'quill', 'listing' => 'link', 'menu' => 'menu');
             if (isset($params['item']) && isset($params['id']) && isset($params['name']) && self::ACTION_DELETE != $logEntry['action']) {
                 $urlPart = isset($params['path']) ? $params['path'] : $params['item'] . 's';
                 $params['name'] = sprintf(self::LINK_PATTERN, IA_ADMIN_URL . $urlPart . '/edit/' . $params['id'] . '/', $params['name']);
             }
             if (self::ACTION_DELETE == $logEntry['action']) {
                 $params['name'] = '"' . $params['name'] . '"';
                 $style = 'removed';
             }
             // special case
             if ('member' == $params['item']) {
                 switch (true) {
                     case self::ACTION_CREATE == $logEntry['action'] && isset($params['type']) && iaCore::FRONT == $params['type']:
                         return array('New member signed up: ' . sprintf(self::LINK_PATTERN, IA_ADMIN_URL . 'members/edit/' . $params['id'] . '/', $params['name']) . '.', $iconsMap[$params['item']], 'default');
                     case self::ACTION_UPDATE == $logEntry['action'] && iaUsers::getIdentity()->id == $params['id']:
                         return array(sprintf('You updated ' . self::LINK_PATTERN . '.', IA_ADMIN_URL . 'members/edit/' . iaUsers::getIdentity()->id . '/', 'profile of yourself'), $iconsMap[$params['item']], $style);
                 }
             }
             return array(iaDb::printf(':item :name :actiond by :user.', array_merge($params, array('action' => $actionsMap[$logEntry['action']], 'item' => ucfirst(iaLanguage::get($params['item'], $params['item']))))), isset($iconsMap[$params['item']]) ? $iconsMap[$params['item']] : 'copy', $style);
         case self::ACTION_LOGIN:
             $text = ':user logged in <small class="text-muted"><em>from :ip.</em></small>';
             $text .= $logEntry['user_id'] == iaUsers::getIdentity()->id ? ' — you' : '';
             $text .= '.';
             return array(iaDb::printf($text, $params), 'user', $style);
         case self::ACTION_INSTALL:
             switch ($params['type']) {
                 case 'app':
                     return array('Subrion version ' . IA_VERSION . ' installed. Cheers!', 'subrion', 'default');
                 case 'template':
                     $text = iaDb::printf(':user activated the ":name" template.', $params);
                     return array($text, 'eye', 'default');
             }
             $params['name'] = ucfirst($params['name']);
             return array(iaDb::printf(':user installed ":name" :type.', $params), 'extensions', $style);
         case self::ACTION_UNINSTALL:
             $params['name'] = ucfirst($params['name']);
             return array(iaDb::printf(':user uninstalled ":name" :type.', $params), 'extensions', 'removed');
         case self::ACTION_ENABLE:
         case self::ACTION_DISABLE:
             $params['name'] = ucfirst($params['name']);
             if (self::ACTION_DISABLE == $logEntry['action']) {
                 $style = 'removed';
             }
             $actionsMap = array(self::ACTION_ENABLE => 'activated', self::ACTION_DISABLE => 'deactivated');
             return array(iaDb::printf('The ":name" :type :action by :user.', array_merge($params, array('action' => $actionsMap[$logEntry['action']]))), 'extensions', $style);
         case self::ACTION_UPGRADE:
             $icon = 'extensions';
             switch ($params['type']) {
                 case 'package':
                 case 'plugin':
                     $message = '":name" :type upgraded to :to version.';
                     $params['name'] = ucfirst($params['name']);
                     break;
                 case 'app':
                 case 'app-forced':
                     $icon = 'subrion';
                     $message = 'app' == $params['type'] ? 'Subrion version upgraded from :from to :to. The :log is available.' : 'Automated Subrion upgrade from :from to :to. View the :log.';
                     $link = sprintf(self::LINK_PATTERN, IA_CLEAR_URL . 'uploads' . IA_URL_DELIMITER . $params['file'], 'log');
                     $params['log'] = $link;
             }
             $message = iaDb::printf($message, array_merge($params));
             return array($message, $icon, 'default');
     }
 }
Пример #19
0
 * Subrion is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Subrion. If not, see <http://www.gnu.org/licenses/>.
 *
 *
 * @link http://www.subrion.org/
 *
 ******************************************************************************/
define('IA_VER', '330');
$iaOutput->layout()->title = 'Installation Wizard';
$iaOutput->steps = array('check' => 'Pre-Installation Check', 'license' => 'Subrion License', 'configuration' => 'Configuration', 'finish' => 'Script Installation', 'plugins' => 'Plugins Installation');
if (iaHelper::isScriptInstalled() && (!iaUsers::hasIdentity() || iaUsers::MEMBERSHIP_ADMINISTRATOR != iaUsers::getIdentity()->usergroup_id)) {
    $iaOutput->errorCode = 'authorization';
    return false;
}
$error = false;
$message = '';
$builtinPlugins = array('kcaptcha', 'fancybox', 'personal_blog');
switch ($step) {
    case 'check':
        $checks = array('server' => array());
        $sections = array('server' => array('title' => 'Server Configuration', 'desc' => 'If any of these items are highlighted in red then please take actions to correct them. Failure to do so could lead to your installation not functioning correctly.'), 'recommended' => array('title' => 'Recommended Settings', 'desc' => 'These settings are recommended for PHP in order to ensure full compatibility with Subrion CMS. However, Subrion CMS will still operate if your settings do not quite match the recommended.'), 'directory' => array('title' => 'Directory &amp; File Permissions', 'desc' => 'In order for Subrion CMS to function correctly it needs to be able to access or write to certain files or directories. If you see "Unwritable" you need to change the permissions on the file or directory to allow Subrion CMS to write to it.'));
        $checks['server']['mysql_version'] = array('required' => function_exists('mysql_connect'), 'class' => true, 'name' => 'Mysql version', 'value' => function_exists('mysql_connect') ? '<td class="success">' . substr(mysql_get_client_info(), 0, false === ($pos = strpos(mysql_get_client_info(), '-')) ? 10 : $pos) . '</td>' : '<td class="danger">MySQL 5.x or upper required</td>');
        $checks['server']['php_version'] = array('required' => version_compare('5.0', PHP_VERSION, '<'), 'class' => true, 'name' => 'PHP version', 'value' => version_compare('5.0', PHP_VERSION, '<') ? '<td class="success">' . PHP_VERSION . '</td>' : '<td class="danger">PHP version is not compatible. PHP 5.x needed. (Current version ' . PHP_VERSION . ')</td>');
        $checks['server']['remote'] = array('name' => 'Remote files access support', 'value' => iaHelper::hasAccessToRemote() ? '<td class="success">Available</td>' : '<td class="danger">Unavailable (highly recommended to enable "CURL" extension or "allow_url_fopen")</td>');
        $checks['server']['xml'] = array('name' => 'XML support', 'value' => extension_loaded('xml') ? '<td class="success">Available</td>' : '<td class="danger">Unavailable (recommended)</td>');
        $checks['server']['mysql_support'] = array('name' => 'MySQL support', 'value' => function_exists('mysql_connect') ? '<td class="success">Available</td>' : '<td class="danger">Unavailable (required)</td>');
Пример #20
0
 /**
  * Generates invoice for an item
  *
  * @param string $title plan title
  * @param double $cost plan cost
  * @param string $itemName item name
  * @param array $itemData item details
  * @param string $returnUrl return URL
  * @param int $planId plan id
  * @param bool $return true redirects to invoice payment URL
  *
  * @return string
  */
 public function createInvoice($title, $cost, $itemName = 'members', $itemData = array(), $returnUrl = '', $planId = 0, $return = false)
 {
     if (!isset($itemData['id'])) {
         $itemData['id'] = 0;
     }
     $title = empty($title) ? iaLanguage::get('plan_title_' . $planId) : $title;
     $title .= $itemData['id'] ? ' - #' . $itemData['id'] : '';
     $transactionId = uniqid('t');
     $transaction = array('member_id' => (int) (isset($itemData['member_id']) && $itemData['member_id'] ? $itemData['member_id'] : iaUsers::getIdentity()->id), 'item' => $itemName, 'item_id' => $itemData['id'], 'amount' => $cost, 'currency' => $this->iaCore->get('currency'), 'sec_key' => $transactionId, 'status' => self::PENDING, 'plan_id' => $planId, 'return_url' => $returnUrl, 'operation' => $title, 'date' => date(iaDb::DATETIME_FORMAT));
     $result = (bool) $this->iaDb->insert($transaction, null, $this->getTable());
     $return || iaUtil::go_to(IA_URL . 'pay' . IA_URL_DELIMITER . $transactionId . IA_URL_DELIMITER);
     return $result ? $transactionId : false;
 }
Пример #21
0
 $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'];
 if (!utf8_is_ascii($data['title_alias'])) {
     $data['title_alias'] = utf8_to_ascii($data['title_alias']);
 }
 $data['title_alias'] = iaSanitize::convertStr($data['title_alias']);
 // check for duplicate title_alias in case a new album is added or title_alias has been updated
 if (!isset($item['title_alias']) || isset($item['title_alias']) && $data['title_alias'] != $item['title_alias']) {
     if ($iaAlbum->existsAlias($data['title_alias'])) {
         $error = true;
Пример #22
0
 protected function _gridUpdate($params)
 {
     if (isset($params['id']) && is_array($params['id']) && 2 == count($params) && isset($params['status'])) {
         $currentUserId = iaUsers::getIdentity()->id;
         if (in_array($currentUserId, $params['id'])) {
             $totalAdminsCount = (int) $this->_iaDb->one_bind(iaDb::STMT_COUNT_ROWS, '`usergroup_id` = :group AND `status` = :status AND `id` != :id', array('group' => iaUsers::MEMBERSHIP_ADMINISTRATOR, 'status' => iaCore::STATUS_ACTIVE, 'id' => $currentUserId));
             if (0 == $totalAdminsCount && $params['status'] != iaCore::STATUS_ACTIVE) {
                 return array('result' => false, 'message' => iaLanguage::get('action_not_allowed_since_you_only_admin'));
             }
         }
     }
     return parent::_gridUpdate($params);
 }
Пример #23
0
 public static function getAccountDir($userName = '')
 {
     if (empty($userName)) {
         $userName = iaUsers::hasIdentity() ? iaUsers::getIdentity()->username : false;
     }
     $serverDirectory = '';
     umask(0);
     if (empty($userName)) {
         $serverDirectory .= '_notregistered' . IA_DS;
         if (!is_dir(IA_UPLOADS . $serverDirectory)) {
             mkdir(IA_UPLOADS . $serverDirectory);
         }
     } else {
         $subFolders = array();
         $subFolders[] = strtolower(substr($userName, 0, 1)) . IA_DS;
         $subFolders[] = $userName . IA_DS;
         foreach ($subFolders as $folderName) {
             $serverDirectory .= $folderName;
             is_dir(IA_UPLOADS . $serverDirectory) || mkdir(IA_UPLOADS . $serverDirectory);
         }
     }
     return $serverDirectory;
 }
Пример #24
0
 public function output()
 {
     $outputValues = $this->getValues();
     switch ($this->getRequestType()) {
         case self::REQUEST_JSON:
             header('Content-Type: application/json');
             $iaUtil = $this->iaCore->factory('util');
             if (isset($outputValues[self::JSON_MAGIC_KEY]) && 1 == count($outputValues)) {
                 $outputValues = array_values($outputValues[self::JSON_MAGIC_KEY]);
             }
             echo $iaUtil->jsonEncode($outputValues);
             break;
         case self::REQUEST_HTML:
             header('Content-Type: text/html');
             $iaSmarty =& $this->iaSmarty;
             foreach ($outputValues as $key => $value) {
                 $iaSmarty->assign($key, $value);
             }
             // set page notifications
             $messages = $this->getMessages();
             $notifications = array();
             foreach (array(self::ERROR, self::SUCCESS, self::ALERT, self::SYSTEM) as $type) {
                 empty($messages[$type]) || ($notifications[$type] = is_array($messages[$type]) ? $messages[$type] : array($messages[$type]));
             }
             $pageName = $this->name();
             $iaSmarty->assign('config', $this->iaCore->getConfig());
             $iaSmarty->assign('member', iaUsers::hasIdentity() ? iaUsers::getIdentity(true) : array());
             // TODO: obsolete not used in 3.3.0, kept for minor compatibility
             $iaSmarty->assign('page', $this->getParams());
             // define smarty super global $core
             $core = array('config' => $this->iaCore->getConfig(), 'customConfig' => $this->iaCore->getCustomConfig(), 'language' => $this->iaCore->languages[$this->language], 'languages' => $this->iaCore->languages, 'notifications' => $notifications, 'page' => array('breadcrumb' => iaBreadcrumb::render(), 'info' => $this->getParams(), 'nonProtocolUrl' => $this->assetsUrl, 'name' => $pageName, 'title' => $this->get('caption', $this->get('title', 'Subrion CMS'))));
             if (iaCore::ACCESS_FRONT == $this->iaCore->getAccessType()) {
                 // get meta-description
                 $value = $this->get('description');
                 $metaDescription = empty($value) && iaLanguage::exists('page_metadescr_' . $pageName) ? iaLanguage::get('page_metadescr_' . $pageName) : $value;
                 $core['page']['meta-description'] = iaSanitize::html($metaDescription);
                 // get meta-keywords
                 $value = $this->get('keywords');
                 $metaKeywords = empty($value) && iaLanguage::exists('page_metakeyword_' . $pageName) ? iaLanguage::get('page_metakeyword_' . $pageName) : $value;
                 $core['page']['meta-keywords'] = iaSanitize::html($metaKeywords);
                 $this->_logStatistics();
                 header('X-Powered-CMS: Subrion CMS');
             }
             $iaSmarty->assignByRef('core', $core);
             $this->iaCore->startHook('phpCoreDisplayBeforeShowBody');
             $content = '';
             if ($this->get('body', self::NONE) != self::NONE) {
                 $resource = $iaSmarty->ia_template($this->get('body') . self::TEMPLATE_FILENAME_EXT);
                 $content = $iaSmarty->fetch($resource);
             }
             if ($this->_layoutEnabled) {
                 $iaSmarty->assign('_content_', $content);
                 $content = $iaSmarty->fetch('layout' . self::TEMPLATE_FILENAME_EXT);
             }
             echo $content;
             break;
         case self::REQUEST_XML:
             header('Content-Type: text/xml');
             function htmldecode($text)
             {
                 $text = html_entity_decode($text);
                 $text = htmlspecialchars($text);
                 return $text;
             }
             function xmlEncode(array $array, &$parentObject)
             {
                 static $section;
                 foreach ($array as $key => $value) {
                     switch (true) {
                         case is_array($array[key($array)]):
                             if (!is_numeric($key)) {
                                 $node = $parentObject->addChild($key);
                                 xmlEncode($value, $node);
                             } else {
                                 $node = $parentObject->addChild($section);
                                 foreach ($value as $k => $v) {
                                     $node->addChild($k, htmldecode($v));
                                 }
                             }
                             break;
                         case is_array($value):
                             $section = $key;
                             xmlEncode($value, $parentObject);
                             break;
                         default:
                             $parentObject->addChild($key, htmldecode($value));
                     }
                 }
             }
             $xmlObject = new SimpleXMLElement('<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"></rss>');
             xmlEncode($outputValues, $xmlObject);
             echo $xmlObject->asXML();
             break;
         default:
             header('HTTP/1.1 501');
             exit;
     }
 }
Пример #25
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();
     }
 }
 ******************************************************************************/
if (!empty($item) && !empty($listing)) {
    $disabledItems = array('members');
    if (in_array($item, $disabledItems)) {
        return;
    }
    $iaItem = $iaCore->factory('item');
    // check for ownership key
    if (isset($_GET['ownership-key'])) {
        $iaDb->setTable('claim_pending_email_keys');
        $key = $iaDb->row_bind(iaDb::ALL_COLUMNS_SELECTION, '`item` = :item AND `item_id` = :id AND `key` = :key', array('item' => $item, 'id' => $listing, 'key' => $_GET['ownership-key']));
        if ($key) {
            $tableName = $iaItem->getItemTable($item);
            $iaDb->update(array('member_id' => $key['member_id']), iaDb::convertIds($listing), null, $tableName);
            $iaDb->delete(iaDb::convertIds($key['key'], 'key'));
            $iaView->setMessages(iaLanguage::get('ownership_changed'), iaView::SUCCESS);
            iaUtil::reload();
        }
        $iaDb->resetTable();
    }
    $itemTable = $iaItem->getItemTable($item);
    $itemData = $iaDb->row(iaDb::ALL_COLUMNS_SELECTION, iaDb::convertIds($listing), $itemTable);
    // check the current owner of the listing, if possible
    if (iaUsers::hasIdentity() && isset($itemData['member_id']) && iaUsers::getIdentity()->id == $itemData['member_id']) {
        return;
    }
    $actionsForGuest = array('id' => 'claim-listing', 'title' => iaLanguage::get('claim_listing'), 'attributes' => array('class' => 'btn btn-sm btn-default', 'href' => IA_URL . 'claim/' . $item . '/' . $listing . '.json', 'id' => 'js-cmd-claim', 'data-toggle' => 'modal', 'data-target' => '#js-claim-modal'));
    $actionsForMember = array('id' => 'claim-listing', 'title' => iaLanguage::get('claim_listing'), 'attributes' => array('class' => 'btn btn-sm btn-default', 'href' => '#', 'onclick' => 'intelli.notifFloatBox({msg:\'' . iaSanitize::html(iaLanguage::get('sign_in_to_use_this_feature')) . '\',autohide:true}); return false;'));
    $actionClaimListing = iaUsers::hasIdentity() ? $actionsForGuest : $actionsForMember;
    $iaView->assign('actionClaimListing', $actionClaimListing);
}
Пример #27
0
         return iaView::errorPage(iaView::ERROR_NOT_FOUND);
     }
     $entry = $iaBlog->getById($id);
     if (empty($entry)) {
         return iaView::errorPage(iaView::ERROR_NOT_FOUND);
     }
     $title = iaSanitize::tags($entry['title']);
     iaBreadcrumb::toEnd($title);
     $iaView->title($title);
     // add open graph data
     $openGraph = array('title' => $title, 'url' => IA_SELF, 'description' => $entry['body']);
     empty($entry['image']) || ($openGraph['image'] = IA_CLEAR_URL . 'uploads/' . $entry['image']);
     $iaView->set('og', $openGraph);
     $iaView->assign('tags', $iaBlog->getTags($id));
     $iaView->assign('blog_entry', $entry);
     if ($iaAcl->isAccessible(iaBlog::PAGE_NAME, iaCore::ACTION_EDIT) && iaUsers::hasIdentity() && iaUsers::getIdentity()->id == $entry['member_id']) {
         $pageActions[] = array('icon' => 'pencil', 'title' => iaLanguage::get('edit_blog_entry'), 'url' => $baseUrl . 'edit/' . $id . '/', 'classes' => 'btn-info');
         $pageActions[] = array('icon' => 'remove', 'title' => iaLanguage::get('delete'), 'url' => $baseUrl . 'delete/' . $id . '/', 'classes' => 'btn-danger');
     }
 } else {
     $page = empty($_GET['page']) ? 0 : (int) $_GET['page'];
     $page = $page < 1 ? 1 : $page;
     $pagination = array('start' => ($page - 1) * $iaCore->get('blog_number'), 'limit' => (int) $iaCore->get('blog_number'), 'template' => $baseUrl . '?page={page}');
     $entries = $iaBlog->get($pagination['start'], $pagination['limit']);
     $pagination['total'] = $iaDb->foundRows();
     $iaView->assign('tags', $iaBlog->getAllTags());
     $iaView->assign('blog_entries', $entries);
     $iaView->assign('pagination', $pagination);
 }
 if ($iaAcl->isAccessible('blog', iaCore::ACTION_ADD)) {
     $pageActions[] = array('icon' => 'plus', 'title' => iaLanguage::get('add_blog_entry'), 'url' => $baseUrl . 'add/', 'classes' => 'btn-success');
Пример #28
0
 /**
  * Get the list of user/group specific configuration values
  *
  * @param null $user user id
  * @param null $group group id
  *
  * @return array
  */
 public function getCustomConfig($user = null, $group = null)
 {
     $local = false;
     if (is_null($user) && is_null($group)) {
         $this->factory('users');
         $local = true;
         if (iaUsers::hasIdentity()) {
             $user = iaUsers::getIdentity()->id;
             $group = iaUsers::getIdentity()->usergroup_id;
         } else {
             $user = 0;
             $group = iaUsers::MEMBERSHIP_GUEST;
         }
     }
     if ($local && !is_null($this->_customConfig)) {
         return $this->_customConfig;
     }
     $result = array();
     $stmt = array();
     if ($user) {
         $stmt[] = "(`type` = 'user' AND `type_id` = {$user}) ";
     }
     if ($group) {
         $stmt[] = "(`type` = 'group' AND `type_id` = {$group}) ";
     }
     $rows = $this->iaDb->all(array('type', 'name', 'value'), implode(' OR ', $stmt), null, null, self::getCustomConfigTable());
     if (empty($rows)) {
         return $result;
     }
     $result = array('group' => array(), 'user' => array(), 'plan' => array());
     foreach ($rows as $row) {
         $result[$row['type']][$row['name']] = $row['value'];
     }
     $result = array_merge($result['group'], $result['user'], $result['plan']);
     if ($local) {
         $this->_customConfig = $result;
     }
     return $result;
 }
Пример #29
0
 protected function _assignValues(&$iaView, array &$entryData)
 {
     $iaUsers = $this->_iaCore->factory('users');
     $owner = empty($entryData['member_id']) ? iaUsers::getIdentity(true) : $iaUsers->getInfo($entryData['member_id']);
     $entryData['owner'] = $owner['fullname'] . " ({$owner['email']})";
     /*
     		commented for cases when SET SESSION group_concat_max_len doesn't work
     		$tagIds = $this->_iaDb->all('tag_id', "`blog_id` = {$this->getEntryId()}",0, null, $this->_tableBlogEntriesTags);
     		$entryData['tags'] = '';
     		foreach ($tagIds as $tagId)
     		{
     			$tags = $this->_iaDb->all('title', "`id` = {$tagId['tag_id']}",0, null, $this->_tableBlogTags);
     			$entryData['tags'] .= $tags[0]['title'] . ',';
     		}
     		$entryData['tags'] = rtrim($entryData['tags'], ',');
     */
     $this->_iaDb->query("SET SESSION group_concat_max_len = 2000");
     if ($this->getEntryId()) {
         $entryData['tags'] = $this->getHelper()->getTags($this->getEntryId());
     } else {
         if (isset($_POST['tags'])) {
             $entryData['tags'] = iaSanitize::sql($_POST['tags']);
         }
     }
 }
Пример #30
0
 if (empty($member)) {
     $member = $iaUsers->getInfo((int) $iaCore->requestPath[0]);
 }
 if (empty($member)) {
     return iaView::errorPage(iaView::ERROR_NOT_FOUND);
 }
 $iaCore->factory('util');
 $iaPage = $iaCore->factory('page', iaCore::FRONT);
 $member['item'] = $iaUsers->getItemName();
 $iaCore->startHook('phpViewListingBeforeStart', array('listing' => $member['id'], 'item' => $member['item'], 'title' => $member['fullname'], 'url' => $iaView->iaSmarty->ia_url(array('data' => $member, 'item' => $member['item'], 'type' => 'url')), 'desc' => $member['fullname']));
 $iaItem = $iaCore->factory('item');
 $iaCore->set('num_items_perpage', 20);
 $page = !empty($_GET['page']) ? (int) $_GET['page'] : 1;
 $page = $page < 1 ? 1 : $page;
 $start = ($page - 1) * $iaCore->get('num_items_perpage');
 if (iaUsers::hasIdentity() && iaUsers::getIdentity()->id == $member['id']) {
     $iaItem->setItemTools(array('title' => iaLanguage::get('edit'), 'url' => $iaPage->getUrlByName('profile')));
 }
 $member = array_shift($iaItem->updateItemsFavorites(array($member), $member['item']));
 $member['items'] = array();
 // get fieldgroups
 $iaField = $iaCore->factory('field');
 list($sections, ) = $iaField->generateTabs($iaField->filterByGroup($member, $member['item']));
 // get all items added by this account
 $itemsList = $iaItem->getPackageItems();
 $itemsFlat = array();
 if ($array = $iaItem->getItemsInfo(true)) {
     foreach ($array as $itemData) {
         if ($itemData['item'] != $member['item'] && $iaItem->isExtrasExist($itemsList[$itemData['item']])) {
             $itemsFlat[] = $itemData['item'];
         }