/** * Autoload: inclui uma classe caso ela seja chamada sem existir * @param: class(string), classe a ser incluída * @access: global * @return: void */ function __autoload($class) { global $_CLASSES; if (array_key_exists($class, $_CLASSES)) { if (file_exists($_CLASSES[$class])) { require_once $_CLASSES[$class]; } else { Zeus_Error::raise("Autoload: o arquivo da classe {$class} definido em \$_CLASSES não está correto!"); } } else { Zeus_Error::raise("Autoload: a classe {$class} não está definida em \$_CLASSES!"); } }
/** * Import: importa arquivos do framework, semelhande ao import do Java * * @param: file(string), Arquivo a ser importado. * Caso este arquivo esteja dentro de um diretório em /lib/, * Este diretório deverá ser separado por '.' no lugar de '/' * E caso queira incluir todos os arquivos de um diretório, * deve-se seguir o exemplo: import('Dir.*') * * @exemplos: para um arquivo no diretório base do framework(lib): import('File'); * para um arquivo em um subdiretório : import('Dir.File') * para todos os arquivos de um subdiretorio: import('Dir.*') * * @access: global * @return: void */ function import($file, $base = '') { $base = $base == '' ? BASE_PATH . DS . 'lib' . DS : $base; if (is_array($file)) { foreach ($file as $f) { import($f, $base); } } else { $pts = explode('.', $file); if ($pts[count($pts) - 1] == '*') { $base = $base . DS; for ($i = 0; $i < count($pts) - 1; $i++) { $base .= $pts[$i]; } !class_exists('Zeus_Dir') ? import('Files.Dir') : ''; $_file = Zeus_Dir::listFiles($base, true, false); foreach ($_file as $f) { if (is_dir($f)) { import('*', $f); } else { if (file_exists($f) && !is_dir($f)) { require_once $f; } else { Zeus_Error::raise("Import: O aqruivo {$f} não existe!"); } } } } else { $f = $base; for ($i = 0; $i < count($pts); $i++) { $f .= DS . $pts[$i]; } if (is_dir($f)) { import($file . '.*'); } else { if (file_exists($f . '.php')) { require_once $f . '.php'; } else { Zeus_Error::raise("Import: O aruivo {$f}.php não existe!"); } } } } }
public function upload() { $names = array(); foreach ($this->files as $file) { if (!$this->isValid($file)) { Zeus_Error::raise("zUpload::upload(): Arquivo inválido {$file['name']}!"); } else { $file['name'] = $this->toValidName($file['name']); $prefix = ''; while (file_exists($this->baseDir . DS . $prefix . $file['name'])) { $prefix .= rand(0, 9); } if (move_uploaded_file($file['tmp_name'], $this->baseDir . DS . $prefix . $file['name'])) { $names[] = $file['name']; } else { Zeus_Error::raise("Upload::upload(): Erro ao fazer upload de {$file['name']}!"); } } } return $names; }
/** * Resize: redimensiona uma imagem * @param: w(int), nova largura da imagem * @param: h(int), nova altura da imagem * @param: i(int), indice do arquivo em @files a ser redimensionado * @param: t(string), tipo de redimensionamento a ser aplicado * @value: simple, redimensiona para os tamanhos passados em @w, e @h * @value: max, redimensiona relativamente, não deixando que a largura nem altura * ultrapassem @w ou @h, respectivamente * @value: fill, redimensiona relativamente e completa com uma cor o restante da imagem * @value: byWidth, redimensiona relativamente, não deixando que a largura ultrapasse @w * @value: byHeight, redimensiona relativamente, não deixando que a altura ultrapasse @h * @value: width, redimensiona apenas a largura * @value: height, redimensiona apenas a altura * @access: public * @return: bool */ public function resize($w, $h, $i = 0, $t = 'simple') { if (!isset($this->files[$i])) { return false; } if (!$this->create($i)) { return false; } switch ($t) { case 'simple': return $this->resizeSimple($w, $h, $i); break; case 'byWidth': return $this->resizeByWidth($w, $h, $i); break; case 'byHeight': return $this->resizeByHeight($w, $h, $i); break; case 'max': return $this->resizeMax($w, $h, $i); break; default: Zeus_Error::raise("Zeus_Image::resize(): Modo de redimensionamento não reconhecido! {$t}"); break; } return false; }
/** * Set Property: edita tags do arquivo * @param: prop(mixed), nome da tag a ser editada, ou um array associativo. * tendo como chave, o nome da propriedade; e valor, o valor da tag * @param: val(string), Opcional. Necessário apenas no caso de @prop ser uma string * @access: public * @return: string */ public function setProperty($prop, $val = null, $i = 0) { if (!isset($this->files[$i])) { Zeus_Error::raise("Zeus_Mp3: O indice {$i} não está definido em \\Zeus_Files::files"); return false; } // OBS: método incompleto, fala implementar a função de editar $prop_list = array('title', 'artist', 'genre', 'year', 'album'); if (is_array($prop)) { $i = $val == null ? 0 : $val; foreach ($prop as $p => $v) { if (in_array($p)) { $this->setProperty($p, $v, $i); } else { if (is_string($v)) { foreach ($v as $p => $v) { $this->setProperty($p, $v, $i); } } } } return true; } else { if (is_string($prop)) { if (is_null($val)) { return false; } /** * Criar aqui a função de editar as tags */ return true; } } return false; }
<?php define('DS', preg_match('/\\//', __DIR__) ? '/' : '\\'); define('BASE_PATH', __DIR__ . DS . '..' . DS); $_CLASSES = array('Zeus_Array' => BASE_PATH . DS . 'lib' . DS . 'Types' . DS . 'Array.php', 'Zeus_Object' => BASE_PATH . DS . 'lib' . DS . 'Types' . DS . 'Object.php', 'Zeus_String' => BASE_PATH . DS . 'lib' . DS . 'Types' . DS . 'String.php', 'Zeus_File' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'File.php', 'Zeus_Image' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Image.php', 'Zeus_Mp3' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Mp3.php', 'Zeus_Txt' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Txt.php', 'Zeus_Upload' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Upload.php', 'Zeus_Zip' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Zip.php', 'Zeus_Dir' => BASE_PATH . DS . 'lib' . DS . 'Files' . DS . 'Dir.php', 'Zeus_Database' => BASE_PATH . DS . 'lib' . DS . 'Database' . DS . 'Database.php', 'Zeus_Class' => BASE_PATH . DS . 'lib' . DS . 'Class.php', 'Zeus_Mailer' => BASE_PATH . DS . 'lib' . DS . 'Mailer' . DS . 'Mailer.php', 'Zeus_Event' => BASE_PATH . DS . 'lib' . DS . 'Event.php', 'Zeus_Error' => BASE_PATH . DS . 'lib' . DS . 'Error.php', 'Zeus_Config' => BASE_PATH . DS . 'lib' . DS . 'Config.php', 'Zeus_Document' => BASE_PATH . DS . 'lib' . DS . 'Document.php', 'Zeus_Factory' => BASE_PATH . DS . 'lib' . DS . 'Factory.php', 'Zeus_Request' => BASE_PATH . DS . 'lib' . DS . 'Request.php'); require BASE_PATH . DS . 'lib' . DS . 'import.php'; require BASE_PATH . DS . 'lib' . DS . 'autoload.php'; $db = Zeus_Factory::getDBO(); $db->setQuery("SELECT class_name, class_file FROM #__extends ORDER BY class_id ASC"); $db->query(); if ($db->getNumRows()) { foreach ($db->loadObjectList() as $item) { if (isset($_CLASSES[$item->class_name])) { Zeus_Error::raise("Core: Existem duas ou mais classes com o mesmo nome, {$item->class_name}"); } $_CLASSES[$item->class_name] = BASE_PATH . DS . 'lib' . DS . 'Classes' . DS . $item->class_file; } }
public function query() { $this->_query = mysql_query($this->_queryString); if ($this->_query) { return true; } Zeus_Error::raise(array('message' => mysql_error($this->_link), 'line' => __LINE__, 'file' => __FILE__, 'datestamp' => date('Y-m-d H:i:s'))); return false; }