本文整理汇总了PHP中factory类的典型用法代码示例。如果您正苦于以下问题:PHP factory类的具体用法?PHP factory怎么用?PHP factory使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了factory类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: fetch
public function fetch($delete = false)
{
$oImap = imap_open('{' . $this->mail_server . ':993/imap/ssl/notls/novalidate-cert}', $this->username, $this->password);
$oMailboxStatus = imap_check($oImap);
$aMessages = imap_fetch_overview($oImap, "1:{$oMailboxStatus->Nmsgs}");
$validMessages = array();
foreach ($aMessages as $oMessage) {
print "Trying message '" . $oMessage->subject . "'";
$fileContent = $fileType = '';
$geocoder = factory::create('geocoder');
$postCode = $geocoder->extract_postcode($oMessage->subject);
$fromName = null;
$fromEmail = null;
if (strpos($oMessage->from, '<')) {
$split = split('<', $oMessage->from);
//name - make sure name not an email address
$fromName = trim($split[0]);
if (valid_email($fromName)) {
$fromName = null;
}
//email
$fromEmail = trim(str_replace('>', '', $split[1]));
} else {
$fromEmail = $oMessage->from;
}
$images = array();
$messageStructure = imap_fetchstructure($oImap, $oMessage->msgno);
if (isset($messageStructure->parts)) {
$partNumber = 0;
foreach ($messageStructure->parts as $oPart) {
$partNumber++;
if ($oPart->subtype == 'PLAIN' && !$postCode) {
$messageContent = imap_fetchbody($oImap, $oMessage->msgno, $partNumber);
if ($oPart->encoding == 4) {
$messageContent = quoted_printable_decode($messageContent);
}
$postCode = geocoder::extract_postcode($messageContent);
} elseif ($oPart->encoding == 3 && in_array($oPart->subtype, array('JPEG', 'PNG'))) {
$oImage = null;
$encodedBody = imap_fetchbody($oImap, $oMessage->msgno, $partNumber);
$fileContent = base64_decode($encodedBody);
$oImage = imagecreatefromstring($fileContent);
if (imagesx($oImage) > $this->min_import_size && imagesy($oImage) > $this->min_import_size) {
array_push($images, $oImage);
}
$fileType = strtolower($oPart->subtype);
}
}
}
//add to the messages array
array_push($validMessages, array('postcode' => $postCode, 'images' => $images, 'file_type' => $fileType, 'from_address' => $fromAddress, 'from_email' => $fromEmail, 'from_name' => $fromName));
if ($delete) {
imap_delete($oImap, $oMessage->msgno);
}
}
imap_close($oImap, CL_EXPUNGE);
$this->messages = $validMessages;
}
示例2: can
/**
* Whether we can perform certain action
*
* @param mixed $action_code_or_id
* @return boolean
*/
public static function can($action_code_or_id)
{
if (self::$cache_actions === null) {
self::$cache_actions = factory::model('numbers_backend_system_controller_model_actions')->get();
}
if (is_string($action_code_or_id)) {
foreach (self::$cache_actions as $k => $v) {
if ($v['sm_cntractn_code'] == $action_code_or_id) {
$action_code_or_id = $k;
break;
}
}
}
if (!isset(self::$cache_actions[$action_code_or_id])) {
throw new Exception('Unknown action!');
}
$permissions = application::get(['controller', 'acl', 'permissions']);
$start = $action_code_or_id;
do {
// see if we have permission
if (empty($permissions[$start])) {
break;
}
// we need to check permission on a parent
if (!empty(self::$cache_actions[$start]['sm_cntractn_parent_id'])) {
$start = self::$cache_actions[$start]['sm_cntractn_parent_id'];
} else {
// exit if there's no parent
return true;
}
} while (1);
return false;
}
示例3: __construct
/**
* Constructing cache object
*
* @param string $cache_link
* @param string $class
*/
public function __construct($cache_link = null, $class = null)
{
// if we need to use default link from application
if (empty($cache_link)) {
$cache_link = application::get(['flag', 'global', 'cache', 'default_cache_link']);
if (empty($cache_link)) {
throw new Exception('You must specify cache link and/or class!');
}
}
// get object from factory
$temp = factory::get(['cache', $cache_link]);
// if we have class
if (!empty($class) && !empty($cache_link)) {
// replaces in case we have it as submodule
$class = str_replace('.', '_', trim($class));
// if we are replacing database connection with the same link we
// need to manually close connection
if (!empty($temp['object']) && $temp['class'] != $class) {
$object = $temp['object'];
$object->close();
unset($this->object);
}
$this->object = new $class($cache_link);
// putting every thing into factory
factory::set(['cache', $cache_link], ['object' => $this->object, 'class' => $class]);
} else {
if (!empty($temp['object'])) {
$this->object = $temp['object'];
} else {
throw new Exception('You must specify cache link and/or class!');
}
}
}
示例4: getInstance
/**
* Get the unique cache instance
*
* @param array $cfg Config for the cache instance
* @return cache_abstract The instance
*/
public static function getInstance(array $cfg = array())
{
if (!self::$cfg) {
self::$cfg = new config(factory::loadCfg(__CLASS__));
}
return factory::get('cache_' . self::$cfg->use, $cfg);
}
示例5: query
public function query($options = [])
{
$model = factory::model($options['model']);
$db = $model->db_object();
$where = '';
if (!empty($options['where'])) {
$where = 'AND ' . $db->prepare_condition($options['where']);
}
$ts = $db->full_text_search_query($options['fields'], $options['search_text'] . '');
$fields = $options['fields'];
$sql_pk = '';
// we automatically include main pk into a query
if (!in_array($options['pk'], $options['fields'])) {
// in_array($options['pk'], $model->pk) &&
$fields[] = $options['pk'];
// we need to include integer types to the query
$temp = intval($options['search_text']);
if ($model->columns[$options['pk']]['php_type'] == 'integer' && $temp != 0) {
$sql_pk .= " OR {$options['pk']} = " . (int) $options['search_text'];
}
}
$fields[] = $ts['rank'];
$fields = implode(', ', $fields);
$tmp = <<<TTT
\t\t\tSELECT
\t\t\t\t{$fields}
\t\t\tFROM [table[{$options['model']}]] a
\t\t\tWHERE 1=1
\t\t\t\t\t{$where}
\t\t\t\t\tAND (({$ts['where']}){$sql_pk})
\t\t\tORDER BY {$ts['orderby']} DESC, {$options['fields'][0]}
\t\t\tLIMIT 11
TTT;
return $tmp;
}
示例6: example_postcode
public static function example_postcode()
{
$election_id = get_election_id($election_id);
$search = factory::create('search');
$result = $search->search("australian_postcode", array(array('election_id', '=', $election_id)), null, null, null, 1);
return $result[0]->postcode;
}
示例7: __construct
/**
* Constructing crypt object
*
* @param string $db_link
* @param string $class
*/
public function __construct($crypt_link = null, $class = null, $options = [])
{
// if we need to use default link from application
if ($crypt_link == null) {
$crypt_link = application::get(['flag', 'global', 'crypt', 'default_crypt_link']);
if (empty($crypt_link)) {
throw new Exception('You must specify crypt link!');
}
}
// get object from factory
$temp = factory::get(['crypt', $crypt_link]);
// if we have class
if (!empty($class) && !empty($crypt_link)) {
// replaces in case we have it as submodule
$class = str_replace('.', '_', trim($class));
// creating new class
unset($this->object);
$this->object = new $class($crypt_link, $options);
factory::set(['crypt', $crypt_link], ['object' => $this->object, 'class' => $class]);
} else {
if (!empty($temp['object'])) {
$this->object = $temp['object'];
} else {
throw new Exception('You must specify crypt link and/or class!');
}
}
}
示例8: lookup_constituency
private function lookup_constituency($postcode)
{
$cache = cache::factory();
$cached = $cache->get('twfy' . $postcode);
if (isset($cached) && $cached !== false && $cached != '') {
return $cached;
} else {
if (COUNTRY_CODE_TLD == "uk") {
$twfy = factory::create('twfy');
$twfy_constituency = $twfy->query('getConstituency', array('output' => 'php', 'postcode' => $postcode, 'future' => 'yes_please'));
$twfy_constituency = unserialize($twfy_constituency);
$success = $cache->set('twfy' . $postcode, $twfy_constituency);
$twfy_constituency = array($twfy_constituency["name"]);
} else {
if (COUNTRY_CODE_TLD == "au") {
$australian_postcode = factory::create("australian_postcode");
return $australian_postcode->lookup_constituency_names($postcode);
} else {
$success = false;
}
}
if ($success && isset($twfy_constituency) && $twfy_constituency != '' && $twfy_constituency != false) {
return $twfy_constituency;
} else {
return false;
}
}
}
示例9: get_leaflets
function get_leaflets($email_alert)
{
if (ALERT_DEBUG > 0) {
print $email_alert->type . "\n";
print "frequency : " . $email_alert->frequency_hours . "\n";
}
$results = array();
$search = factory::create('search');
$time = time() - 60 * 60 * $email_alert->frequency_hours;
$time = mysql_date($time);
//do we have any matching leaflets?
if ($email_alert->type == 'attack') {
$results = $search->search('leaflet', array(array('leaflet_party_attack.party_id', '=', $email_alert->parent_id), array('leaflet.date_uploaded', '>=', $time), array('leaflet.live', '=', 1)), 'AND', array(array('leaflet_party_attack', 'inner')));
} else {
if ($email_alert->type == 'party') {
$results = $search->search('leaflet', array(array('leaflet.publisher_party_id', '=', $email_alert->parent_id), array('leaflet.date_uploaded', '>=', $time), array('leaflet.live', '=', 1)));
} else {
if ($email_alert->type == 'constituency') {
$results = $search->search('leaflet', array(array('leaflet_constituency.constituency_id', '=', $email_alert->parent_id), array('leaflet.date_uploaded', '>=', $time), array('leaflet.live', '=', 1)), 'AND', array(array('leaflet_constituency', 'inner')));
} else {
if ($email_alert->type == 'category') {
$results = $search->search('leaflet', array(array('leaflet_category.category_id', '=', $email_alert->parent_id), array('leaflet.date_uploaded', '>=', $time), array('leaflet.live', '=', 1)), 'AND', array(array('leaflet_category', 'inner')));
}
}
}
}
return $results;
}
示例10: __construct
public function __construct()
{
require_once _CORE_ROOT . 'factory.class.php';
require_once _CORE_ROOT . 'cexception.class.php';
//require_once(_CORE_ROOT.'error.class.php');
$this->benchmark = factory::createBenchmarkObject();
$this->db = factory::createDbObject();
$this->tpl = factory::createTplObject($this->benchmark);
$this->input = factory::createInputObject();
$this->log = factory::createLogger();
factory::createUtil();
if (_MEMCACHE_ENABLE) {
$this->memcache = factory::createMemcacheObject();
}
if (_DEBUG === 'Y') {
ini_set('display_errors', 1);
error_reporting(E_ALL);
$this->debug = factory::createDebugObject($this->benchmark);
} else {
if (_DEBUG === 'N') {
ini_set('display_errors', 0);
error_reporting(E_ALL ^ E_NOTICE);
$this->debug = factory::createNoDebugObject();
} else {
//nothing todo ;
}
}
}
示例11: bind
function bind()
{
//get the leaflet
$search = factory::create("search");
$result = $search->search("leaflet", array(array("leaflet_id", "=", $this->leaflet_id), array('live', '=', 1)), 'AND', array(array("party", "inner")));
$leaflet = null;
if (count($result) != 1) {
throw_404();
} else {
$leaflet = $result[0];
}
//get images
$leaflet_images = $search->search("leaflet_image", array(array("leaflet_id", "=", $this->leaflet_id)), 'AND', null, array(array("sequence", "ASC")));
//get categories
$leaflet_categories = $search->search("category", array(array("leaflet_category.leaflet_id", "=", $this->leaflet_id)), 'AND', array(array("leaflet_category", 'inner')));
//get tags
$leaflet_tags = $search->search("tag", array(array("leaflet_tag.leaflet_id", "=", $this->leaflet_id)), 'AND', array(array("leaflet_tag", 'inner')));
//get parties attacked
$leaflet_parties_attacked = $search->search("party", array(array("leaflet_party_attack.leaflet_id", "=", $this->leaflet_id)), 'AND', array(array("leaflet_party_attack", 'inner')));
//get constituencies
$leaflet_constituencies = $search->search("constituency", array(array("leaflet_constituency.leaflet_id", "=", $this->leaflet_id)), 'AND', array(array("leaflet_constituency", 'inner')));
//js
$this->onloadscript = "showMap('" . MAP_PROVIDER . "', " . number_format($leaflet->lng, 2) . ", " . number_format($leaflet->lat, 2) . ");";
//assign
$this->page_title = $leaflet->title . " (an election leaflet published by " . $leaflet->party_name . ")";
$this->has_map = true;
$this->assign("leaflet", $leaflet);
$this->assign("leaflet_images", $leaflet_images);
$this->assign("leaflet_categories", $leaflet_categories);
$this->assign("leaflet_tags", $leaflet_tags);
$this->assign("constituency", $leaflet_constituencies[0]);
$this->assign("leaflet_parties_attacked", $leaflet_parties_attacked);
}
示例12: set_application
private function set_application()
{
$application = session_read('application');
if (!isset($application)) {
$application = factory::create('application');
}
$this->application = $application;
}
示例13: method
/**
* Call validator method
*
* @param string $method
* @param array $params
* @param array $options
* @param array $neighbouring_values
* @return array
*/
public static function method($method, $value, $params = [], $options = [], $neighbouring_values = [])
{
$method = factory::method($method);
$params = $params ?? [];
$params['options'] = $options;
$params['neighbouring_values'] = $neighbouring_values;
return factory::model($method[0], true)->{$method[1]}($value, $params);
}
示例14: bind
function bind()
{
$this->page_title = "Election leaflets by category";
$search = factory::create('search');
//get top parties
$categories = $search->search_cached("category", array(array("1", "=", "1")), "AND", null, array(array("name", "ASC")));
$this->assign("categories", $categories);
}
示例15: add
/**
* Add library to the application
*
* @param string $library
*/
public static function add($library)
{
$connected = application::get('flag.global.library.' . $library . '.connected');
if (!$connected) {
factory::submodule('flag.global.library.' . $library . '.submodule')->add();
application::set('flag.global.library.' . $library . '.connected', true);
}
}