✏️ 正在编辑: Resource.php
路径:
/srv/systems_dir/yuppiecred/application/models/Resource.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_Resource { private $_id; private $_descricao; private $_resource; private $_privilege; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getDescricao() { return $this->_descricao; } public function setDescricao($descricao) { $this->_descricao = $descricao; } public function getResource() { return $this->_resource; } public function setResource($resource) { $this->_resource = $resource; } public function getPrivilege() { return $this->_privilege; } public function setPrivilege($privilege) { $this->_privilege = $privilege; } public function __construct($options = null) { if( is_array($options) ){ $this->setOptions($options); } } public function setOptions(array $options) { $methods = get_class_methods($this); foreach ( $options as $key => $value ) { $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if( in_array($method, $methods) ){ $this->$method($value); } } return $this; } public function _toArray() { $dbtable = new Model_DbTable_Resource(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = array( ); foreach ( $info['cols'] as $key ) { $col = $key; $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if( in_array($method, $methods) ){ $data[$col] = $this->$method(); } } return $data; } public function salvar() { $dbtable = new Model_DbTable_Resource(); if ($this->getId() > 0){ $dbtable->update($this->_toArray(), 'id = ' . $this->getId()); return $this->getId(); } else { return $dbtable->insert($this->_toArray()); } } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if( $id > 0 ){ $dbtable = new Model_DbTable_Resource(); return $dbtable->delete('id = ' . $id); } return null; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields = null, $order = null) { $params = array(); $where = null; if( isset($fields['resource']) && !empty($fields['resource']) ){ $params[] = "resource LIKE '%" . $fields['resource'] . "%'"; } if (isset($fields['privilege']) && $fields['privilege'] === 'null') { $params[] = 'privilege IS NULL'; } if( isset($fields['not_resource']) && !empty($fields['not_resource']) ){ $params[] = "resource NOT LIKE '%" . $fields['not_resource'] . "%'"; } if( count($params) > 0 ) $where = implode( ' AND ', $params); $dbtable = new Model_DbTable_Resource(); return $dbtable->fetchAll($where, $order); } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { $dbtable = new Model_DbTable_Resource(); return $dbtable->fetchRow('id = ' . $id); } public function atualizarRecursos() { $files = new DirectoryIterator(APPLICATION_PATH . '/controllers'); $inserts = $deletes = $updates = 0; $filterCamelCaseToSeparator = new Zend_Filter_Word_CamelCaseToSeparator(); $filterCamelCaseToDash = new Zend_Filter_Word_CamelCaseToDash(); $currResources = $this->listar(null, array('resource', 'privilege')); $currentResources = array(); foreach($currResources as $currResource) { $resourceId = $currResource->resource . ($currResource->privilege ? '_' . $currResource->privilege : ''); $currentResources[$resourceId] = $currResource->toArray(); } $tbResource = new Model_DbTable_Resource(); Core_Notificacao_PushBrowser::createChannelResources($currentResources); foreach($files as $file) if ($file->isFile()) { require_once $file->getPathname(); $r = new Zend_Reflection_File($file->getPathname()); $classes = $r->getClasses(); foreach($classes as $classe) { if (strstr($classe->getName(), 'Controller')) { $controller = str_replace('Controller', '', $classe->getName()); $resource = strtolower($filterCamelCaseToDash->filter($controller)); try{ $classeSemPermissao = $classe->getDocblock()->getTag('sem_permissao'); } catch(Zend_Reflection_Exception $e){ $classeSemPermissao = false; } try { $descricao = $classe->getDocblock()->getShortDescription(); if (!$descricao) { $descricao = $filterCamelCaseToSeparator->filter($controller); } } catch(Zend_Reflection_Exception $e) { $descricao = $filterCamelCaseToSeparator->filter($controller); } if($classeSemPermissao){ if (isset($currentResources[$resource])) { $tbResource->delete("id = {$currentResources[$resource]['id']}"); $deletes++; } } else if (!isset($currentResources[$resource])) { $resourceId = $tbResource->insert(array( 'resource' => $resource, 'privilege' => null, 'descricao' => $descricao)); if ($resourceId) { $inserts++; } } else if ($currentResources[$resource]['descricao'] != $descricao) { if ($tbResource->update(array('descricao' => $descricao), "id = {$currentResources[$resource]['id']}")) $updates++; } $methods = $classe->getMethods(); foreach($methods as $method) { if (strstr($method->getName(), 'Action')) { $action = str_replace('Action', '', $method->getName()); $privilege = strtolower($filterCamelCaseToDash->filter($action)); try{ $metodoSemPermissao = $classe->getDocblock()->getTag('sem_permissao'); } catch(Zend_Reflection_Exception $e){ $metodoSemPermissao = false; } if($classeSemPermissao || $metodoSemPermissao){ if (isset($currentResources["{$resource}_{$privilege}"])) { $tbResource->delete("id = {$currentResources["{$resource}_{$privilege}"]['id']}"); $deletes++; } } else { try { $descricao = $method->getDocblock()->getShortDescription(); if (!$descricao) { $descricao = ucfirst($filterCamelCaseToSeparator->filter($action)); } } catch(Zend_Reflection_Exception $e) { $descricao = ucfirst($filterCamelCaseToSeparator->filter($action)); } if (!isset($currentResources["{$resource}_{$privilege}"])) { try { $resourceId = $tbResource->insert(array( 'resource' => $resource, 'privilege' => $privilege, 'descricao' => $descricao)); if ($resourceId) { $inserts++; } }catch(Exception $e){ continue; } } else if ($currentResources["{$resource}_{$privilege}"]['descricao'] != $descricao) { if ($tbResource->update(array('descricao' => $descricao), "id = {$currentResources["{$resource}_{$privilege}"]['id']}")) $updates++; } } } } } } } return array('inserts' => $inserts, 'deletes' => $deletes, 'updates' => $updates); } private function _updatePermissoes($classOrmethod, $resourceId) { $model = new Model_GrupoUsuario(); $gruposUsuarios = $model->listar(null, 'nome ASC'); try { $permissao = $classOrmethod->getDocblock()->getTag('permissao'); } catch(Zend_Reflection_Exception $e) { $permissao = 1; } if( $permissao ){ foreach( $gruposUsuarios as $grupo ){ if( $grupo->nome == "Sistema" || $grupo->nome == "Administradores" ){ $tbPermissao = new Model_DbTable_Permissao(); $tbPermissao->insert(array( 'resource_id' => $resourceId, 'grupo_id' => $grupo->id, 'allow' => 1 )); } } } } }
💾 保存文件
← 返回文件管理器