Example #1
0
 public function __construct()
 {
     ini_get('safe_mode') || set_time_limit(180);
     parent::__construct();
     $iaDbControl = $this->_iaCore->factory('dbcontrol', iaCore::ADMIN);
     $this->setHelper($iaDbControl);
 }
Example #2
0
 public function __construct()
 {
     parent::__construct();
     $iaCron = $this->_iaCore->factory('cron');
     $this->setTable($iaCron::getTable());
     $this->setHelper($iaCron);
 }
Example #3
0
 public function __construct()
 {
     parent::__construct();
     $iaAcl = $this->_iaCore->factory('acl');
     $this->setHelper($iaAcl);
     $this->_objects = $iaAcl->getObjects();
 }
 public function __construct()
 {
     parent::__construct();
     $this->_pluginName = IA_CURRENT_PLUGIN;
     $this->_template = 'manage';
     $this->init();
 }
Example #5
0
 public function __construct()
 {
     parent::__construct();
     $iaExtra = $this->_iaCore->factory('extra', iaCore::ADMIN);
     $this->setHelper($iaExtra);
     $this->setTable(iaExtra::getTable());
     $this->_folder = IA_PACKAGES;
 }
Example #6
0
 protected function _gridRead($params)
 {
     $action = 1 == count($this->_iaCore->requestPath) ? $this->_iaCore->requestPath[0] : null;
     switch ($action) {
         case 'items':
             $output = array('data' => null);
             if ($items = $this->_iaCore->factory('item')->getItems(true)) {
                 foreach ($items as $key => $item) {
                     $output['data'][] = array('title' => iaLanguage::get($item), 'value' => $item);
                 }
             }
             break;
         case 'plans':
             $output = array('data' => null);
             $stmt = '';
             if (!isset($params['itemname']) || isset($params['itemname']) && iaUsers::getItemName() == $params['itemname']) {
                 $stmt = iaDb::convertIds(iaUsers::getItemName(), 'item');
                 $output['data'][] = array('title' => iaLanguage::get('funds'), 'value' => 0);
             } elseif (!empty($params['itemname'])) {
                 $stmt = iaDb::convertIds($params['itemname'], 'item');
             }
             $this->_iaCore->factory('plan');
             if ($planIds = $this->_iaDb->onefield(iaDb::ID_COLUMN_SELECTION, $stmt, null, null, iaPlan::getTable())) {
                 foreach ($planIds as $planId) {
                     $output['data'][] = array('title' => iaLanguage::get('plan_title_' . $planId), 'value' => $planId);
                 }
             }
             break;
         case 'gateways':
             $output = array('data' => null);
             if ($items = $this->getHelper()->getPaymentGateways()) {
                 foreach ($items as $name => $title) {
                     $output['data'][] = array('value' => $name, 'title' => $title);
                 }
             }
             break;
         case 'members':
             $output = array('data' => null);
             if (!empty($params['query'])) {
                 $where[] = 'CONCAT(`username`, `fullname`) LIKE :username';
                 $values['username'] = '******' . iaSanitize::sql($params['query']) . '%';
             }
             $where || ($where[] = iaDb::EMPTY_CONDITION);
             $where = implode(' AND ', $where);
             $this->_iaDb->bind($where, $values);
             if ($members = $this->_iaDb->all(array('id', 'username', 'fullname'), $where, null, null, iaUsers::getTable())) {
                 foreach ($members as $member) {
                     $output['data'][] = array('title' => $member['username'], 'value' => $member['id']);
                 }
             }
             break;
         default:
             $output = parent::_gridRead($params);
     }
     return $output;
 }
Example #7
0
 protected function _entryDelete($entryId)
 {
     $row = $this->_iaDb->row(array('name', 'item'), iaDb::convertIds($entryId));
     $result = parent::_entryDelete($entryId);
     if ($result && $row) {
         $stmt = iaDb::printf("`key` = 'fieldgroup_:name' OR `key` = 'fieldgroup_description_:item_:name'", $row);
         $this->_iaDb->delete($stmt, iaLanguage::getTable());
     }
     return $result;
 }
Example #8
0
 protected function _gridRead($params)
 {
     return $this->_iaCore->requestPath && 'store' == end($this->_iaCore->requestPath) ? $this->_getUsergroups() : parent::_gridRead($params);
 }
Example #9
0
 protected function _htmlAction(&$iaView)
 {
     switch ($iaView->name()) {
         case 'phpinfo':
             $this->_showPhpinfo($iaView);
             $iaView->display('index');
             break;
         case 'clear_cache':
             $this->_clearCache($iaView);
             break;
         case 'sitemap':
             $this->_buildSitemap($iaView);
             break;
         default:
             parent::_htmlAction($iaView);
     }
 }
Example #10
0
 public function __construct()
 {
     parent::__construct();
     $this->setHelper($this->_iaCore->factory('invoice'));
     $this->setTable(iaInvoice::getTable());
 }
Example #11
0
 public function __construct()
 {
     parent::__construct();
     $iaDbControl = $this->_iaCore->factory('dbcontrol', iaCore::ADMIN);
     $this->setHelper($iaDbControl);
 }
Example #12
0
 protected function _entryDelete($entryId)
 {
     $this->_iaCore->startHook('phpAdminBeforePlanDelete', array('entryId' => $entryId));
     $result = parent::_entryDelete($entryId);
     if ($result) {
         // here we should drop the "for_plan" column of fields
         // if there are no more plans exist
         if (0 === (int) $this->_iaDb->one(iaDb::STMT_COUNT_ROWS)) {
             $this->_iaDb->update(array('for_plan' => 0), iaDb::convertIds(1, 'for_plan'), null, iaField::getTable());
         }
         iaLanguage::delete(self::PATTERN_TITLE . $entryId);
         iaLanguage::delete(self::PATTERN_DESCRIPTION . $entryId);
     }
     return $result;
 }
Example #13
0
 private function _update(array $fieldData, $id)
 {
     $iaDb =& $this->_iaDb;
     $field = $iaDb->row(iaDb::ALL_COLUMNS_SELECTION, iaDb::convertIds($id));
     if (empty($field) || $field['type'] != $fieldData['type']) {
         return false;
     }
     // set correct relations
     if (iaField::RELATION_REGULAR == $fieldData['relation']) {
         $this->_resetRelations($field['name'], $field['item']);
     } else {
         if ($fieldData['parents']) {
             $this->_setParents($field['name'], $fieldData['parents']);
         }
         if ($fieldData['children']) {
             $this->_setChildren($field['name'], $field['item'], $fieldData['values'], $fieldData['children']);
         }
         $this->_setRelations();
     }
     unset($fieldData['parents'], $fieldData['children']);
     $iaDb->setTable(iaLanguage::getTable());
     $iaDb->delete("`key` LIKE 'field\\_" . $field['name'] . "\\_%'");
     foreach ($this->_iaCore->languages as $code => $language) {
         iaLanguage::addPhrase('field_' . $field['name'], $fieldData['title'][$code], $code, $field['extras']);
         if (isset($fieldData['annotation'][$code]) && $fieldData['annotation'][$code]) {
             iaLanguage::addPhrase('field_' . $field['name'] . '_annotation', $fieldData['annotation'][$code], $code, $field['extras']);
         }
     }
     unset($fieldData['title'], $fieldData['annotation']);
     $keys = array();
     if (isset($fieldData['values']) && is_array($fieldData['values'])) {
         $newKeys = array();
         foreach ($fieldData['values'] as $key => $value) {
             $key = $keys[$key] = isset($fieldData['keys'][$key]) ? $fieldData['keys'][$key] : $key;
             iaLanguage::addPhrase('field_' . $field['name'] . '_' . $key, $value, null, $field['extras']);
             $newKeys[] = $key;
         }
         $fieldData['values'] = implode(',', $newKeys);
     } elseif (iaField::TREE != $fieldData['type']) {
         unset($fieldData['values']);
     } elseif (iaField::TREE == $fieldData['type']) {
         $iaDb->setTable('fields_tree_nodes');
         $iaDb->delete('`field` = :name && `item` = :item', null, array('name' => $field['name'], 'item' => $field['item']));
         if ($fieldData['tree_nodes']) {
             foreach ($fieldData['tree_nodes'] as $node) {
                 // insert default language
                 iaLanguage::addPhrase('field_' . $field['item'] . '_' . $field['name'] . '_' . $node['node_id'], $node['text'], $this->_iaCore->iaView->language, $field['extras']);
                 unset($node['text']);
                 $node['field'] = $field['name'];
                 $node['item'] = $field['item'];
                 $node['extras'] = $field['extras'];
                 $iaDb->insert($node);
             }
         }
         $iaDb->resetTable();
         unset($fieldData['tree_nodes']);
     }
     unset($fieldData['keys']);
     if (isset($fieldData['lang_values']) && is_array($fieldData['lang_values'])) {
         foreach ($fieldData['lang_values'] as $languageCode => $phrases) {
             foreach ($phrases as $phraseKey => $phraseValue) {
                 iaLanguage::addPhrase('field_' . $field['name'] . '_' . $phraseKey, $phraseValue, $languageCode, $field['extras']);
             }
         }
     }
     if (isset($fieldData['lang_values'])) {
         unset($fieldData['lang_values']);
     }
     if ($fieldData['searchable'] && $fieldData['type'] == iaField::NUMBER && isset($fieldData['_numberRangeForSearch']) && is_array($fieldData['_numberRangeForSearch']) && !empty($fieldData['_numberRangeForSearch'])) {
         $iaDb->delete("`key` LIKE 'field\\_" . $field['name'] . "\\_range\\_%'");
         foreach ($fieldData['_numberRangeForSearch'] as $value) {
             iaLanguage::addPhrase('field_' . $field['name'] . '_range_' . $value, $value, null, $field['extras']);
         }
         unset($fieldData['_numberRangeForSearch']);
     } else {
         $iaDb->delete("`key` LIKE 'field\\_" . $field['name'] . "\\_range\\_%'");
     }
     $iaDb->resetTable();
     $tableName = $this->_iaCore->factory('item')->getItemTable($fieldData['item']);
     // avoid making fulltext second time
     if (!$field['searchable'] && $fieldData['searchable'] && in_array($fieldData['type'], array(iaField::TEXT, iaField::TEXTAREA))) {
         $indexes = $iaDb->getAll("SHOW INDEX FROM `{$iaDb->prefix}{$tableName}`");
         $keyExists = false;
         foreach ($indexes as $i) {
             if ($i['Key_name'] == $field['name'] && $i['Index_type'] == 'FULLTEXT') {
                 $keyExists = true;
                 break;
             }
         }
         if (!$keyExists) {
             $iaDb->query("ALTER TABLE `{$iaDb->prefix}{$tableName}` ADD FULLTEXT (`{$field['name']}`)");
         }
     }
     if ($field['searchable'] && !$fieldData['searchable'] && in_array($fieldData['type'], array(iaField::TEXT, iaField::TEXTAREA))) {
         $indexes = $iaDb->getAll("SHOW INDEX FROM `{$iaDb->prefix}{$tableName}`");
         $keyExists = false;
         foreach ($indexes as $i) {
             if ($i['Key_name'] == $field['name'] && $i['Index_type'] == 'FULLTEXT') {
                 $keyExists = true;
                 break;
             }
         }
         if ($keyExists) {
             $iaDb->query("ALTER TABLE `{$iaDb->prefix}{$tableName}` DROP INDEX `{$field['name']}`");
         }
     }
     $pagesList = $fieldData['pages'];
     unset($fieldData['pages'], $fieldData['groups'], $fieldData['item']);
     $result = parent::_entryUpdate($fieldData, $id);
     if ($pagesList) {
         $this->_setPagesList($id, $pagesList, $field['extras']);
     }
     if ($result) {
         if (in_array($fieldData['type'], array(iaField::TEXT, iaField::COMBO, iaField::RADIO, iaField::CHECKBOX))) {
             $sql = "ALTER TABLE `{$this->_iaDb->prefix}{$tableName}` ";
             $sql .= "CHANGE `{$field['name']}` `{$field['name']}` ";
             switch ($fieldData['type']) {
                 case iaField::TEXT:
                     $sql .= "VARCHAR ({$fieldData['length']}) ";
                     $sql .= $fieldData['default'] ? "DEFAULT '{$fieldData['default']}' " : '';
                     break;
                 default:
                     if (isset($fieldData['values'])) {
                         $values = explode(',', $fieldData['values']);
                         $sql .= $fieldData['type'] == iaField::CHECKBOX ? 'SET' : 'ENUM';
                         $sql .= "('" . implode("','", $values) . "')";
                         if (!empty($fieldData['default'])) {
                             $sql .= " DEFAULT '{$fieldData['default']}' ";
                         }
                     }
                     break;
             }
             $sql .= 'NOT NULL';
             $iaDb->query($sql);
         }
     }
     return $result;
 }
Example #14
0
 protected function _gridRead($params)
 {
     return count($this->_iaCore->requestPath) == 1 && 'positions' == $this->_iaCore->requestPath[0] ? $this->_getPositions() : parent::_gridRead($params);
 }
Example #15
0
 protected function _entryDelete($entryId)
 {
     $result = false;
     if ($row = $this->getById($entryId)) {
         $result = parent::_entryDelete($entryId);
         if ($result) {
             $pageName = $row['name'];
             // remove associated entries as well
             $this->_iaDb->delete("`key` IN ('page_title_{$pageName}', 'page_content_{$pageName}')", iaLanguage::getTable());
             $this->_iaCore->factory('block', iaCore::ADMIN);
             $this->_iaDb->delete('`page_name` = :page', iaBlock::getMenusTable(), array('page' => $pageName));
             //
             $this->_iaCore->factory('log')->write(iaLog::ACTION_DELETE, array('item' => 'page', 'name' => iaLanguage::get('page_title_' . $pageName), 'id' => (int) $entryId));
         }
     }
     return $result;
 }
Example #16
0
 public function __construct()
 {
     parent::__construct();
     $iaTemplate = $this->_iaCore->factory('template', iaCore::ADMIN);
     $this->setHelper($iaTemplate);
 }
Example #17
0
 protected function _gridRead($params)
 {
     $output = array();
     switch ($params['action']) {
         case 'pages':
             $pageGroups = $this->_iaCore->factory('page', iaCore::ADMIN)->getGroups();
             foreach ($pageGroups as $groupId => $group) {
                 $children = array();
                 foreach ($group['children'] as $pageId => $pageTitle) {
                     $children[] = array('text' => $pageTitle, 'leaf' => true, 'id' => $pageId);
                 }
                 $output[] = array('text' => $group['title'], 'id' => 'group_' . $groupId, 'cls' => 'folder', 'draggable' => false, 'children' => $children);
             }
             $output[0]['expanded'] = true;
             break;
         case 'menus':
             function recursiveRead($list, $pid = 0)
             {
                 $result = array();
                 if (isset($list[$pid])) {
                     foreach ($list[$pid] as $child) {
                         $title = iaLanguage::get('page_title_' . $child['el_id'], 'none');
                         if ($title == 'none') {
                             $title = iaLanguage::get('page_title_' . $child['page_name'], 'none');
                             if ($title == 'none' || $child['page_name'] == 'node') {
                                 $title = iaLanguage::get('_page_removed_');
                             }
                         } else {
                             $title .= (int) $child['el_id'] > 0 ? ' (custom)' : ' (no link)';
                         }
                         $item = array('text' => $title, 'id' => $child['el_id'], 'expanded' => true, 'children' => recursiveRead($list, $child['el_id']));
                         $result[] = $item;
                     }
                 }
                 return $result;
             }
             $output = array();
             if ($name = (int) $params['id']) {
                 $rows = $this->_iaDb->all(iaDb::ALL_COLUMNS_SELECTION, '`menu_id` = ' . $name . ' ORDER BY `id`', null, null, 'menus');
                 foreach ($rows as $row) {
                     $output[$row['parent_id']][] = $row;
                 }
                 $output = recursiveRead($output);
             }
             break;
         case 'titles':
             $output['languages'] = array();
             $languagesList = $this->_iaCore->languages;
             $node = isset($params['id']) ? iaSanitize::sql($params['id']) : false;
             $entry = isset($params['menu']) ? iaSanitize::sql($params['menu']) : false;
             if (isset($params['new']) && $params['new']) {
                 ksort($languagesList);
                 foreach ($languagesList as $code => $language) {
                     $output['languages'][] = array('fieldLabel' => $language['title'], 'name' => $code, 'value' => '');
                 }
             } elseif ($node && $entry) {
                 $key = false;
                 $title = iaLanguage::get('page_title_' . $node, 'none');
                 if ($title != 'none') {
                     $key = 'page_title_' . $node;
                 } else {
                     if ($pageId = (int) $node) {
                         $page = $this->_iaDb->one('`name`', iaDb::convertIds($pageId), 'pages');
                         $key = 'page_title_' . $page;
                     } else {
                         $current = isset($params['current']) ? $params['current'] : '';
                         ksort($languagesList);
                         foreach ($languagesList as $code => $language) {
                             $output['languages'][] = array('fieldLabel' => $language['title'], 'name' => $code, 'value' => $current);
                         }
                     }
                 }
                 if ($key) {
                     $titles = $this->_iaDb->all(iaDb::ALL_COLUMNS_SELECTION, "`key` = '{$key}' ORDER BY `code`", null, null, iaLanguage::getTable());
                     foreach ($titles as $row) {
                         if (isset($languagesList[$row['code']])) {
                             $output['languages'][] = array('fieldLabel' => $languagesList[$row['code']]['title'], 'name' => $row['code'], 'value' => $row['value']);
                         }
                     }
                 }
                 $output['key'] = $key;
             }
             break;
         case 'save':
             $output['message'] = iaLanguage::get('invalid_parameters');
             $menu = isset($params['menu']) ? $params['menu'] : null;
             $node = isset($params['node']) ? $params['node'] : null;
             if ($menu && $node) {
                 $rows = array();
                 foreach ($_POST as $code => $value) {
                     $rows[] = array('code' => $code, 'value' => $value, 'extras' => $menu, 'key' => 'page_title_' . $node, 'category' => iaLanguage::CATEGORY_PAGE);
                 }
                 $this->_iaDb->setTable(iaLanguage::getTable());
                 $this->_iaDb->delete('`key` = :key', null, array('key' => 'page_title_' . $node));
                 $this->_iaDb->insert($rows);
                 $this->_iaDb->resetTable();
                 $output['message'] = iaLanguage::get('saved');
                 $output['success'] = true;
                 $this->_iaCore->iaCache->remove('menu_' . $menu . '.inc');
             }
             break;
         default:
             $output = parent::_gridRead($params);
     }
     return $output;
 }
Example #18
0
 protected function _indexPage(&$iaView)
 {
     parent::_indexPage($iaView);
     $iaView->display($this->getName());
 }
Example #19
0
 protected function _gridDelete($params)
 {
     $output = parent::_gridDelete($params);
     if ($output['result']) {
         $this->getHelper()->createJsCache(true);
     }
     return $output;
 }
 protected function _delete(array $entryId)
 {
     return parent::_entryDelete($entryId);
 }
Example #21
0
 public function __construct()
 {
     parent::__construct();
     $this->setTable(iaCore::getConfigTable());
 }
Example #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);
 }
Example #23
0
 protected function _entryAdd(array $entryData)
 {
     parent::_entryAdd($entryData);
     return $this->_iaDb->getAffected() ? $entryData['id'] : false;
 }