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; }
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; }
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' => ''); }
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() . ']'; }
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; }
/** * 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; }
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; }
/** * 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; }
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));
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; }
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); }
/** * 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; }
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; }
} 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(); }
$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'];
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.');
} 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(); }
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'); } }
* 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 & 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>');
/** * 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; }
$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;
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); }
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; }
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; } }
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); }
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');
/** * 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; }
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']); } } }
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']; }